From 7825e8363d4b2ccad8e2d3f5eeba9e26f6656911 Mon Sep 17 00:00:00 2001 From: hsbt Date: Fri, 22 Dec 2017 23:08:05 +0000 Subject: [PATCH] Postponing the Bundler merge. I faced a big issue about Bundler with ruby core. I have no time to resolve it issue before 2.5 final release. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61416 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- LEGAL | 29 - NEWS | 6 - bin/bundle | 31 - bin/bundler | 4 - common.mk | 16 - defs/gmake.mk | 2 +- doc/maintainers.rdoc | 3 - lib/bundler.gemspec | 347 ---- lib/bundler.rb | 545 ------ lib/bundler/build_metadata.rb | 36 - lib/bundler/capistrano.rb | 22 - lib/bundler/cli.rb | 746 -------- lib/bundler/cli/add.rb | 25 - lib/bundler/cli/binstubs.rb | 43 - lib/bundler/cli/cache.rb | 36 - lib/bundler/cli/check.rb | 38 - lib/bundler/cli/clean.rb | 25 - lib/bundler/cli/common.rb | 102 - lib/bundler/cli/config.rb | 119 -- lib/bundler/cli/console.rb | 43 - lib/bundler/cli/doctor.rb | 94 - lib/bundler/cli/exec.rb | 105 -- lib/bundler/cli/gem.rb | 249 --- lib/bundler/cli/info.rb | 50 - lib/bundler/cli/init.rb | 42 - lib/bundler/cli/inject.rb | 60 - lib/bundler/cli/install.rb | 214 --- lib/bundler/cli/issue.rb | 40 - lib/bundler/cli/list.rb | 22 - lib/bundler/cli/lock.rb | 63 - lib/bundler/cli/open.rb | 26 - lib/bundler/cli/outdated.rb | 260 --- lib/bundler/cli/package.rb | 49 - lib/bundler/cli/platform.rb | 46 - lib/bundler/cli/plugin.rb | 24 - lib/bundler/cli/pristine.rb | 43 - lib/bundler/cli/show.rb | 75 - lib/bundler/cli/update.rb | 91 - lib/bundler/cli/viz.rb | 31 - lib/bundler/compact_index_client.rb | 109 -- lib/bundler/compact_index_client/cache.rb | 118 -- lib/bundler/compact_index_client/updater.rb | 107 -- lib/bundler/compatibility_guard.rb | 14 - lib/bundler/constants.rb | 7 - lib/bundler/current_ruby.rb | 86 - lib/bundler/definition.rb | 984 ---------- lib/bundler/dep_proxy.rb | 48 - lib/bundler/dependency.rb | 138 -- lib/bundler/deployment.rb | 69 - lib/bundler/deprecate.rb | 43 - lib/bundler/dsl.rb | 599 ------ lib/bundler/endpoint_specification.rb | 141 -- lib/bundler/env.rb | 153 -- lib/bundler/environment_preserver.rb | 59 - lib/bundler/errors.rb | 158 -- lib/bundler/feature_flag.rb | 67 - lib/bundler/fetcher.rb | 312 ---- lib/bundler/fetcher/base.rb | 52 - lib/bundler/fetcher/compact_index.rb | 126 -- lib/bundler/fetcher/dependency.rb | 82 - lib/bundler/fetcher/downloader.rb | 79 - lib/bundler/fetcher/index.rb | 52 - lib/bundler/friendly_errors.rb | 129 -- lib/bundler/gem_helper.rb | 202 -- lib/bundler/gem_helpers.rb | 101 - lib/bundler/gem_remote_fetcher.rb | 43 - lib/bundler/gem_tasks.rb | 7 - lib/bundler/gem_version_promoter.rb | 176 -- lib/bundler/gemdeps.rb | 29 - lib/bundler/graph.rb | 152 -- lib/bundler/index.rb | 213 --- lib/bundler/injector.rb | 94 - lib/bundler/inline.rb | 74 - lib/bundler/installer.rb | 287 --- lib/bundler/installer/gem_installer.rb | 78 - lib/bundler/installer/parallel_installer.rb | 228 --- lib/bundler/installer/standalone.rb | 53 - lib/bundler/lazy_specification.rb | 123 -- lib/bundler/lockfile_generator.rb | 95 - lib/bundler/lockfile_parser.rb | 256 --- lib/bundler/match_platform.rb | 24 - lib/bundler/mirror.rb | 223 --- lib/bundler/plugin.rb | 285 --- lib/bundler/plugin/api.rb | 81 - lib/bundler/plugin/api/source.rb | 306 --- lib/bundler/plugin/dsl.rb | 53 - lib/bundler/plugin/index.rb | 157 -- lib/bundler/plugin/installer.rb | 96 - lib/bundler/plugin/installer/git.rb | 38 - lib/bundler/plugin/installer/rubygems.rb | 27 - lib/bundler/plugin/source_list.rb | 27 - lib/bundler/process_lock.rb | 24 - lib/bundler/psyched_yaml.rb | 37 - lib/bundler/remote_specification.rb | 114 -- lib/bundler/resolver.rb | 372 ---- lib/bundler/resolver/spec_group.rb | 111 -- lib/bundler/retry.rb | 66 - lib/bundler/ruby_dsl.rb | 18 - lib/bundler/ruby_version.rb | 152 -- lib/bundler/rubygems_ext.rb | 210 --- lib/bundler/rubygems_gem_installer.rb | 99 - lib/bundler/rubygems_integration.rb | 892 --------- lib/bundler/runtime.rb | 316 ---- lib/bundler/settings.rb | 442 ----- lib/bundler/settings/validator.rb | 79 - lib/bundler/setup.rb | 28 - lib/bundler/shared_helpers.rb | 366 ---- lib/bundler/similarity_detector.rb | 63 - lib/bundler/source.rb | 94 - lib/bundler/source/gemspec.rb | 18 - lib/bundler/source/git.rb | 328 ---- lib/bundler/source/git/git_proxy.rb | 257 --- lib/bundler/source/metadata.rb | 63 - lib/bundler/source/path.rb | 249 --- lib/bundler/source/path/installer.rb | 74 - lib/bundler/source/rubygems.rb | 530 ------ lib/bundler/source/rubygems/remote.rb | 66 - lib/bundler/source_list.rb | 186 -- lib/bundler/spec_set.rb | 189 -- lib/bundler/ssl_certs/.document | 1 - lib/bundler/ssl_certs/certificate_manager.rb | 66 - .../index.rubygems.org/GlobalSignRootCA.pem | 21 - .../DigiCertHighAssuranceEVRootCA.pem | 23 - .../rubygems.org/AddTrustExternalCARoot.pem | 25 - lib/bundler/stub_specification.rb | 108 -- lib/bundler/templates/.document | 1 - lib/bundler/templates/Executable | 29 - lib/bundler/templates/Executable.bundler | 105 -- lib/bundler/templates/Executable.standalone | 14 - lib/bundler/templates/Gemfile | 7 - lib/bundler/templates/gems.rb | 8 - .../templates/newgem/CODE_OF_CONDUCT.md.tt | 74 - lib/bundler/templates/newgem/Gemfile.tt | 6 - lib/bundler/templates/newgem/LICENSE.txt.tt | 21 - lib/bundler/templates/newgem/README.md.tt | 47 - lib/bundler/templates/newgem/Rakefile.tt | 29 - lib/bundler/templates/newgem/bin/console.tt | 14 - lib/bundler/templates/newgem/bin/setup.tt | 8 - lib/bundler/templates/newgem/exe/newgem.tt | 3 - .../templates/newgem/ext/newgem/extconf.rb.tt | 3 - .../templates/newgem/ext/newgem/newgem.c.tt | 9 - .../templates/newgem/ext/newgem/newgem.h.tt | 6 - lib/bundler/templates/newgem/gitignore.tt | 20 - lib/bundler/templates/newgem/lib/newgem.rb.tt | 12 - .../templates/newgem/lib/newgem/version.rb.tt | 7 - .../templates/newgem/newgem.gemspec.tt | 49 - lib/bundler/templates/newgem/rspec.tt | 3 - .../templates/newgem/spec/newgem_spec.rb.tt | 9 - .../templates/newgem/spec/spec_helper.rb.tt | 14 - .../templates/newgem/test/newgem_test.rb.tt | 11 - .../templates/newgem/test/test_helper.rb.tt | 4 - lib/bundler/templates/newgem/travis.yml.tt | 5 - lib/bundler/ui.rb | 9 - lib/bundler/ui/rg_proxy.rb | 19 - lib/bundler/ui/shell.rb | 144 -- lib/bundler/ui/silent.rb | 69 - lib/bundler/uri_credentials_filter.rb | 37 - lib/bundler/vendor/fileutils/lib/fileutils.rb | 1638 ----------------- lib/bundler/vendor/molinillo/lib/molinillo.rb | 12 - .../molinillo/lib/molinillo/compatibility.rb | 26 - .../molinillo/delegates/resolution_state.rb | 57 - .../delegates/specification_provider.rb | 81 - .../lib/molinillo/dependency_graph.rb | 223 --- .../lib/molinillo/dependency_graph/action.rb | 36 - .../dependency_graph/add_edge_no_circular.rb | 66 - .../molinillo/dependency_graph/add_vertex.rb | 62 - .../molinillo/dependency_graph/delete_edge.rb | 63 - .../dependency_graph/detach_vertex_named.rb | 61 - .../lib/molinillo/dependency_graph/log.rb | 126 -- .../molinillo/dependency_graph/set_payload.rb | 46 - .../lib/molinillo/dependency_graph/tag.rb | 36 - .../lib/molinillo/dependency_graph/vertex.rb | 126 -- .../vendor/molinillo/lib/molinillo/errors.rb | 138 -- .../molinillo/lib/molinillo/gem_metadata.rb | 6 - .../modules/specification_provider.rb | 101 - .../molinillo/lib/molinillo/modules/ui.rb | 67 - .../molinillo/lib/molinillo/resolution.rb | 837 --------- .../molinillo/lib/molinillo/resolver.rb | 46 - .../vendor/molinillo/lib/molinillo/state.rb | 58 - .../lib/net/http/faster.rb | 27 - .../lib/net/http/persistent.rb | 1233 ------------- .../lib/net/http/persistent/ssl_reuse.rb | 129 -- lib/bundler/vendor/thor/lib/thor.rb | 509 ----- lib/bundler/vendor/thor/lib/thor/actions.rb | 321 ---- .../thor/lib/thor/actions/create_file.rb | 104 -- .../thor/lib/thor/actions/create_link.rb | 60 - .../vendor/thor/lib/thor/actions/directory.rb | 118 -- .../thor/lib/thor/actions/empty_directory.rb | 143 -- .../lib/thor/actions/file_manipulation.rb | 364 ---- .../thor/lib/thor/actions/inject_into_file.rb | 109 -- lib/bundler/vendor/thor/lib/thor/base.rb | 679 ------- lib/bundler/vendor/thor/lib/thor/command.rb | 135 -- .../core_ext/hash_with_indifferent_access.rb | 97 - .../thor/lib/thor/core_ext/io_binary_read.rb | 12 - .../thor/lib/thor/core_ext/ordered_hash.rb | 129 -- lib/bundler/vendor/thor/lib/thor/error.rb | 32 - lib/bundler/vendor/thor/lib/thor/group.rb | 281 --- .../vendor/thor/lib/thor/invocation.rb | 177 -- .../vendor/thor/lib/thor/line_editor.rb | 17 - .../vendor/thor/lib/thor/line_editor/basic.rb | 37 - .../thor/lib/thor/line_editor/readline.rb | 88 - lib/bundler/vendor/thor/lib/thor/parser.rb | 4 - .../vendor/thor/lib/thor/parser/argument.rb | 70 - .../vendor/thor/lib/thor/parser/arguments.rb | 175 -- .../vendor/thor/lib/thor/parser/option.rb | 146 -- .../vendor/thor/lib/thor/parser/options.rb | 221 --- .../vendor/thor/lib/thor/rake_compat.rb | 71 - lib/bundler/vendor/thor/lib/thor/runner.rb | 324 ---- lib/bundler/vendor/thor/lib/thor/shell.rb | 81 - .../vendor/thor/lib/thor/shell/basic.rb | 437 ----- .../vendor/thor/lib/thor/shell/color.rb | 149 -- .../vendor/thor/lib/thor/shell/html.rb | 126 -- lib/bundler/vendor/thor/lib/thor/util.rb | 268 --- lib/bundler/vendor/thor/lib/thor/version.rb | 3 - lib/bundler/vendored_fileutils.rb | 9 - lib/bundler/vendored_molinillo.rb | 4 - lib/bundler/vendored_persistent.rb | 52 - lib/bundler/vendored_thor.rb | 8 - lib/bundler/version.rb | 28 - lib/bundler/version_ranges.rb | 76 - lib/bundler/vlad.rb | 17 - lib/bundler/worker.rb | 106 -- lib/bundler/yaml_serializer.rb | 90 - lib/rubygems.rb | 2 +- lib/rubygems/test_case.rb | 12 +- spec/README.md | 11 - spec/bundler/bundler/bundler_spec.rb | 230 --- spec/bundler/bundler/cli_spec.rb | 173 -- .../compact_index_client/updater_spec.rb | 30 - spec/bundler/bundler/definition_spec.rb | 358 ---- spec/bundler/bundler/dsl_spec.rb | 289 --- .../bundler/endpoint_specification_spec.rb | 71 - spec/bundler/bundler/env_spec.rb | 143 -- .../bundler/environment_preserver_spec.rb | 79 - spec/bundler/bundler/fetcher/base_spec.rb | 76 - .../bundler/fetcher/compact_index_spec.rb | 103 -- .../bundler/fetcher/dependency_spec.rb | 287 --- .../bundler/fetcher/downloader_spec.rb | 250 --- spec/bundler/bundler/fetcher/index_spec.rb | 99 - spec/bundler/bundler/fetcher_spec.rb | 161 -- spec/bundler/bundler/friendly_errors_spec.rb | 270 --- spec/bundler/bundler/gem_helper_spec.rb | 350 ---- .../bundler/gem_version_promoter_spec.rb | 179 -- spec/bundler/bundler/index_spec.rb | 36 - .../bundler/installer/gem_installer_spec.rb | 29 - .../installer/parallel_installer_spec.rb | 47 - .../installer/spec_installation_spec.rb | 62 - spec/bundler/bundler/lockfile_parser_spec.rb | 153 -- spec/bundler/bundler/mirror_spec.rb | 329 ---- .../bundler/bundler/plugin/api/source_spec.rb | 82 - spec/bundler/bundler/plugin/api_spec.rb | 83 - spec/bundler/bundler/plugin/dsl_spec.rb | 38 - spec/bundler/bundler/plugin/index_spec.rb | 178 -- spec/bundler/bundler/plugin/installer_spec.rb | 104 -- .../bundler/plugin/source_list_spec.rb | 25 - spec/bundler/bundler/plugin_spec.rb | 291 --- spec/bundler/bundler/psyched_yaml_spec.rb | 9 - .../bundler/remote_specification_spec.rb | 187 -- spec/bundler/bundler/retry_spec.rb | 81 - spec/bundler/bundler/ruby_dsl_spec.rb | 95 - spec/bundler/bundler/ruby_version_spec.rb | 524 ------ .../bundler/rubygems_integration_spec.rb | 114 -- .../bundler/settings/validator_spec.rb | 111 -- spec/bundler/bundler/settings_spec.rb | 326 ---- spec/bundler/bundler/shared_helpers_spec.rb | 493 ----- .../bundler/source/git/git_proxy_spec.rb | 116 -- spec/bundler/bundler/source/path_spec.rb | 31 - .../bundler/source/rubygems/remote_spec.rb | 162 -- spec/bundler/bundler/source/rubygems_spec.rb | 33 - spec/bundler/bundler/source_list_spec.rb | 463 ----- spec/bundler/bundler/source_spec.rb | 154 -- spec/bundler/bundler/spec_set_spec.rb | 77 - .../ssl_certs/certificate_manager_spec.rb | 141 -- .../bundler/stub_specification_spec.rb | 24 - spec/bundler/bundler/ui/shell_spec.rb | 64 - spec/bundler/bundler/ui_spec.rb | 41 - .../bundler/uri_credentials_filter_spec.rb | 127 -- .../bundler/vendored_persistent_spec.rb | 78 - spec/bundler/bundler/version_ranges_spec.rb | 37 - spec/bundler/bundler/worker_spec.rb | 22 - spec/bundler/bundler/yaml_serializer_spec.rb | 194 -- spec/bundler/cache/cache_path_spec.rb | 32 - spec/bundler/cache/gems_spec.rb | 304 --- spec/bundler/cache/git_spec.rb | 214 --- spec/bundler/cache/path_spec.rb | 139 -- spec/bundler/cache/platform_spec.rb | 49 - spec/bundler/commands/add_spec.rb | 108 -- spec/bundler/commands/binstubs_spec.rb | 410 ----- spec/bundler/commands/check_spec.rb | 354 ---- spec/bundler/commands/clean_spec.rb | 736 -------- spec/bundler/commands/config_spec.rb | 384 ---- spec/bundler/commands/console_spec.rb | 106 -- spec/bundler/commands/doctor_spec.rb | 61 - spec/bundler/commands/exec_spec.rb | 799 -------- spec/bundler/commands/help_spec.rb | 98 - spec/bundler/commands/info_spec.rb | 57 - spec/bundler/commands/init_spec.rb | 163 -- spec/bundler/commands/inject_spec.rb | 117 -- spec/bundler/commands/install_spec.rb | 537 ------ spec/bundler/commands/issue_spec.rb | 16 - spec/bundler/commands/licenses_spec.rb | 31 - spec/bundler/commands/list_spec.rb | 40 - spec/bundler/commands/lock_spec.rb | 314 ---- spec/bundler/commands/newgem_spec.rb | 907 --------- spec/bundler/commands/open_spec.rb | 92 - spec/bundler/commands/outdated_spec.rb | 755 -------- spec/bundler/commands/package_spec.rb | 306 --- spec/bundler/commands/pristine_spec.rb | 168 -- spec/bundler/commands/show_spec.rb | 190 -- spec/bundler/commands/update_spec.rb | 838 --------- spec/bundler/commands/version_spec.rb | 39 - spec/bundler/commands/viz_spec.rb | 149 -- .../install/allow_offline_install_spec.rb | 92 - spec/bundler/install/binstubs_spec.rb | 43 - spec/bundler/install/bundler_spec.rb | 176 -- spec/bundler/install/deploy_spec.rb | 423 ----- spec/bundler/install/failure_spec.rb | 32 - spec/bundler/install/force_spec.rb | 62 - .../install/gemfile/eval_gemfile_spec.rb | 82 - spec/bundler/install/gemfile/gemspec_spec.rb | 672 ------- spec/bundler/install/gemfile/git_spec.rb | 1351 -------------- spec/bundler/install/gemfile/groups_spec.rb | 384 ---- spec/bundler/install/gemfile/install_if.rb | 44 - spec/bundler/install/gemfile/lockfile_spec.rb | 48 - spec/bundler/install/gemfile/path_spec.rb | 630 ------- spec/bundler/install/gemfile/platform_spec.rb | 264 --- spec/bundler/install/gemfile/ruby_spec.rb | 108 -- spec/bundler/install/gemfile/sources_spec.rb | 619 ------- .../install/gemfile/specific_platform_spec.rb | 114 -- spec/bundler/install/gemfile_spec.rb | 113 -- .../install/gems/compact_index_spec.rb | 909 --------- .../install/gems/dependency_api_spec.rb | 760 -------- spec/bundler/install/gems/env_spec.rb | 107 -- spec/bundler/install/gems/flex_spec.rb | 351 ---- spec/bundler/install/gems/mirror_spec.rb | 39 - .../install/gems/native_extensions_spec.rb | 90 - .../bundler/install/gems/post_install_spec.rb | 150 -- spec/bundler/install/gems/resolving_spec.rb | 194 -- spec/bundler/install/gems/standalone_spec.rb | 321 ---- spec/bundler/install/gems/sudo_spec.rb | 174 -- spec/bundler/install/gems/win32_spec.rb | 26 - spec/bundler/install/gemspecs_spec.rb | 109 -- spec/bundler/install/git_spec.rb | 65 - spec/bundler/install/global_cache_spec.rb | 235 --- spec/bundler/install/path_spec.rb | 177 -- .../install/post_bundle_message_spec.rb | 206 --- spec/bundler/install/prereleases_spec.rb | 41 - spec/bundler/install/process_lock_spec.rb | 24 - spec/bundler/install/security_policy_spec.rb | 77 - spec/bundler/install/yanked_spec.rb | 71 - spec/bundler/lock/git_spec.rb | 34 - spec/bundler/lock/lockfile_bundler_1_spec.rb | 1386 -------------- spec/bundler/lock/lockfile_spec.rb | 1425 -------------- spec/bundler/other/bundle_ruby_spec.rb | 142 -- spec/bundler/other/cli_dispatch_spec.rb | 29 - .../bundler/other/compatibility_guard_spec.rb | 25 - spec/bundler/other/ext_spec.rb | 66 - spec/bundler/other/major_deprecation_spec.rb | 282 --- spec/bundler/other/platform_spec.rb | 1299 ------------- spec/bundler/other/ssl_cert_spec.rb | 18 - spec/bundler/plugins/command_spec.rb | 80 - spec/bundler/plugins/hook_spec.rb | 27 - spec/bundler/plugins/install_spec.rb | 257 --- spec/bundler/plugins/source/example_spec.rb | 505 ----- spec/bundler/plugins/source_spec.rb | 108 -- spec/bundler/quality_spec.rb | 252 --- spec/bundler/realworld/dependency_api_spec.rb | 44 - spec/bundler/realworld/double_check_spec.rb | 40 - spec/bundler/realworld/edgecases_spec.rb | 382 ---- .../realworld/gemfile_source_header_spec.rb | 53 - spec/bundler/realworld/mirror_probe_spec.rb | 144 -- spec/bundler/realworld/parallel_spec.rb | 74 - spec/bundler/resolver/basic_spec.rb | 289 --- spec/bundler/resolver/platform_spec.rb | 100 - spec/bundler/runtime/executable_spec.rb | 190 -- spec/bundler/runtime/gem_tasks_spec.rb | 44 - spec/bundler/runtime/inline_spec.rb | 266 --- spec/bundler/runtime/load_spec.rb | 111 -- spec/bundler/runtime/platform_spec.rb | 118 -- spec/bundler/runtime/require_spec.rb | 452 ----- spec/bundler/runtime/setup_spec.rb | 1396 -------------- spec/bundler/runtime/with_clean_env_spec.rb | 151 -- spec/bundler/spec_helper.rb | 152 -- .../bundler/support/artifice/compact_index.rb | 122 -- .../artifice/compact_index_api_missing.rb | 18 - .../compact_index_basic_authentication.rb | 15 - .../compact_index_checksum_mismatch.rb | 16 - .../compact_index_concurrent_download.rb | 32 - .../artifice/compact_index_creds_diff_host.rb | 39 - .../support/artifice/compact_index_extra.rb | 37 - .../artifice/compact_index_extra_api.rb | 52 - .../compact_index_extra_api_missing.rb | 17 - .../artifice/compact_index_extra_missing.rb | 17 - .../artifice/compact_index_forbidden.rb | 13 - .../artifice/compact_index_host_redirect.rb | 21 - .../support/artifice/compact_index_no_gem.rb | 13 - .../artifice/compact_index_partial_update.rb | 38 - .../artifice/compact_index_redirects.rb | 21 - ...mpact_index_strict_basic_authentication.rb | 20 - .../compact_index_wrong_dependencies.rb | 17 - .../compact_index_wrong_gem_checksum.rb | 20 - ...opint_marshal_fail_basic_authentication.rb | 15 - spec/bundler/support/artifice/endpoint.rb | 100 - spec/bundler/support/artifice/endpoint_500.rb | 19 - .../artifice/endpoint_api_forbidden.rb | 13 - .../support/artifice/endpoint_api_missing.rb | 18 - .../artifice/endpoint_basic_authentication.rb | 15 - .../artifice/endpoint_creds_diff_host.rb | 39 - .../support/artifice/endpoint_extra.rb | 33 - .../support/artifice/endpoint_extra_api.rb | 34 - .../artifice/endpoint_extra_missing.rb | 17 - .../support/artifice/endpoint_fallback.rb | 19 - .../artifice/endpoint_host_redirect.rb | 17 - .../support/artifice/endpoint_marshal_fail.rb | 13 - .../artifice/endpoint_mirror_source.rb | 15 - .../support/artifice/endpoint_redirect.rb | 17 - .../endpoint_strict_basic_authentication.rb | 20 - .../support/artifice/endpoint_timeout.rb | 15 - spec/bundler/support/artifice/fail.rb | 39 - spec/bundler/support/artifice/vcr.rb | 158 -- .../v1/dependencies-gems=bundler/GET/request | 7 - .../v1/dependencies-gems=bundler/GET/response | Bin 13565 -> 0 bytes .../api/v1/dependencies/HEAD/request | 6 - .../api/v1/dependencies/HEAD/response | 24 - .../gems/bundler-1.12.3.gem/GET/request | 7 - .../gems/bundler-1.12.3.gem/GET/response | Bin 280896 -> 0 bytes .../bundler-1.12.3.gemspec.rz/GET/request | 7 - .../bundler-1.12.3.gemspec.rz/GET/response | Bin 1426 -> 0 bytes .../api.rubygems.org/specs.4.8.gz/GET/request | 7 - .../specs.4.8.gz/GET/response | Bin 3259398 -> 0 bytes .../info/CFPropertyList/GET/request | 7 - .../info/CFPropertyList/GET/response | Bin 2410 -> 0 bytes .../info/ParseTree/GET/request | 7 - .../info/ParseTree/GET/response | Bin 3083 -> 0 bytes .../info/RedCloth/GET/request | 7 - .../info/RedCloth/GET/response | Bin 3967 -> 0 bytes .../info/RubyInline/GET/request | 7 - .../info/RubyInline/GET/response | Bin 2680 -> 0 bytes .../info/SexpProcessor/GET/request | 7 - .../info/SexpProcessor/GET/response | Bin 1140 -> 0 bytes .../info/ZenTest/GET/request | 7 - .../info/ZenTest/GET/response | Bin 3606 -> 0 bytes .../info/abstract/GET/request | 7 - .../info/abstract/GET/response | Bin 1120 -> 0 bytes .../info/actioncable/GET/request | 7 - .../info/actioncable/GET/response | Bin 2216 -> 0 bytes .../info/actionmailer/GET/request | 7 - .../info/actionmailer/GET/response | Bin 15981 -> 0 bytes .../info/actionpack/GET/request | 7 - .../info/actionpack/GET/response | Bin 17131 -> 0 bytes .../info/actionview/GET/request | 7 - .../info/actionview/GET/response | Bin 5643 -> 0 bytes .../info/actionwebservice/GET/request | 7 - .../info/actionwebservice/GET/response | Bin 2437 -> 0 bytes .../info/activejob/GET/request | 7 - .../info/activejob/GET/response | Bin 3571 -> 0 bytes .../info/activemodel-globalid/GET/request | 7 - .../info/activemodel-globalid/GET/response | Bin 1260 -> 0 bytes .../info/activemodel/GET/request | 7 - .../info/activemodel/GET/response | Bin 12758 -> 0 bytes .../GET/request | 7 - .../GET/response | Bin 1397 -> 0 bytes .../info/activerecord/GET/request | 7 - .../info/activerecord/GET/response | Bin 16488 -> 0 bytes .../info/activeresource/GET/request | 7 - .../info/activeresource/GET/response | Bin 8619 -> 0 bytes .../info/activesupport/GET/request | 7 - .../info/activesupport/GET/response | Bin 14269 -> 0 bytes .../info/adamantium/GET/request | 7 - .../info/adamantium/GET/response | Bin 1717 -> 0 bytes .../info/addressable/GET/request | 7 - .../info/addressable/GET/response | Bin 2540 -> 0 bytes .../info/allison/GET/request | 7 - .../info/allison/GET/response | Bin 1293 -> 0 bytes .../index.rubygems.org/info/ansi/GET/request | 7 - .../index.rubygems.org/info/ansi/GET/response | Bin 1674 -> 0 bytes .../info/archive-tar-minitar/GET/request | 7 - .../info/archive-tar-minitar/GET/response | Bin 984 -> 0 bytes .../index.rubygems.org/info/arel/GET/request | 7 - .../index.rubygems.org/info/arel/GET/response | Bin 3490 -> 0 bytes .../index.rubygems.org/info/ast/GET/request | 7 - .../index.rubygems.org/info/ast/GET/response | Bin 1460 -> 0 bytes .../info/astrolabe/GET/request | 7 - .../info/astrolabe/GET/response | Bin 1633 -> 0 bytes .../info/atomic/GET/request | 7 - .../info/atomic/GET/response | Bin 3389 -> 0 bytes .../info/autoparse/GET/request | 7 - .../info/autoparse/GET/response | Bin 1543 -> 0 bytes .../info/axiom-types/GET/request | 7 - .../info/axiom-types/GET/response | Bin 1485 -> 0 bytes .../info/backports/GET/request | 7 - .../info/backports/GET/response | Bin 5492 -> 0 bytes .../index.rubygems.org/info/bacon/GET/request | 7 - .../info/bacon/GET/response | Bin 1291 -> 0 bytes .../info/bcrypt-ruby/GET/request | 7 - .../info/bcrypt-ruby/GET/response | Bin 3734 -> 0 bytes .../info/bcrypt/GET/request | 7 - .../info/bcrypt/GET/response | Bin 2291 -> 0 bytes .../info/bcrypt_pbkdf/GET/request | 7 - .../info/bcrypt_pbkdf/GET/response | Bin 1410 -> 0 bytes .../info/bones-extras/GET/request | 7 - .../info/bones-extras/GET/response | Bin 1473 -> 0 bytes .../info/bones-git/GET/request | 7 - .../info/bones-git/GET/response | Bin 1625 -> 0 bytes .../info/bones-rcov/GET/request | 7 - .../info/bones-rcov/GET/response | Bin 1189 -> 0 bytes .../info/bones-rspec/GET/request | 7 - .../info/bones-rspec/GET/response | Bin 1332 -> 0 bytes .../info/bones-rubyforge/GET/request | 7 - .../info/bones-rubyforge/GET/response | Bin 1151 -> 0 bytes .../info/bones-zentest/GET/request | 7 - .../info/bones-zentest/GET/response | Bin 1211 -> 0 bytes .../index.rubygems.org/info/bones/GET/request | 7 - .../info/bones/GET/response | Bin 3708 -> 0 bytes .../info/builder/GET/request | 7 - .../info/builder/GET/response | Bin 2001 -> 0 bytes .../info/bundler/GET/request | 7 - .../info/bundler/GET/response | Bin 11827 -> 0 bytes .../info/camping/GET/request | 7 - .../info/camping/GET/response | Bin 1816 -> 0 bytes .../info/capybara/GET/request | 7 - .../info/capybara/GET/response | Bin 4162 -> 0 bytes .../info/celerity/GET/request | 7 - .../info/celerity/GET/response | Bin 2445 -> 0 bytes .../info/celluloid-essentials/GET/request | 7 - .../info/celluloid-essentials/GET/response | Bin 1815 -> 0 bytes .../info/celluloid-extras/GET/request | 7 - .../info/celluloid-extras/GET/response | Bin 1573 -> 0 bytes .../info/celluloid-fsm/GET/request | 7 - .../info/celluloid-fsm/GET/response | Bin 1534 -> 0 bytes .../info/celluloid-io/GET/request | 7 - .../info/celluloid-io/GET/response | Bin 2503 -> 0 bytes .../info/celluloid-pool/GET/request | 7 - .../info/celluloid-pool/GET/response | Bin 1496 -> 0 bytes .../info/celluloid-supervision/GET/request | 7 - .../info/celluloid-supervision/GET/response | Bin 1619 -> 0 bytes .../info/celluloid/GET/request | 7 - .../info/celluloid/GET/response | Bin 3625 -> 0 bytes .../info/cgi_multipart_eof_fix/GET/request | 7 - .../info/cgi_multipart_eof_fix/GET/response | Bin 1317 -> 0 bytes .../info/childprocess/GET/request | 7 - .../info/childprocess/GET/response | Bin 3744 -> 0 bytes .../info/climate_control/GET/request | 7 - .../info/climate_control/GET/response | Bin 1332 -> 0 bytes .../info/cocaine/GET/request | 7 - .../info/cocaine/GET/response | Bin 1974 -> 0 bytes .../info/coercible/GET/request | 7 - .../info/coercible/GET/response | Bin 1406 -> 0 bytes .../info/coffee-rails/GET/request | 7 - .../info/coffee-rails/GET/response | Bin 1936 -> 0 bytes .../info/coffee-script-source/GET/request | 7 - .../info/coffee-script-source/GET/response | Bin 2383 -> 0 bytes .../info/coffee-script/GET/request | 7 - .../info/coffee-script/GET/response | Bin 2267 -> 0 bytes .../info/colorize/GET/request | 7 - .../info/colorize/GET/response | Bin 1784 -> 0 bytes .../info/concurrent-ruby/GET/request | 7 - .../info/concurrent-ruby/GET/response | Bin 5792 -> 0 bytes .../info/configuration/GET/request | 7 - .../info/configuration/GET/response | Bin 1438 -> 0 bytes .../info/coveralls/GET/request | 7 - .../info/coveralls/GET/response | Bin 3648 -> 0 bytes .../index.rubygems.org/info/crass/GET/request | 7 - .../info/crass/GET/response | Bin 1418 -> 0 bytes .../info/cucumber-core/GET/request | 7 - .../info/cucumber-core/GET/response | Bin 1868 -> 0 bytes .../info/cucumber-wire/GET/request | 7 - .../info/cucumber-wire/GET/response | Bin 1134 -> 0 bytes .../info/cucumber/GET/request | 7 - .../info/cucumber/GET/response | Bin 8724 -> 0 bytes .../info/culerity/GET/request | 7 - .../info/culerity/GET/response | Bin 1647 -> 0 bytes .../info/curses/GET/request | 7 - .../info/curses/GET/response | Bin 2167 -> 0 bytes .../info/daemons/GET/request | 7 - .../info/daemons/GET/response | Bin 2370 -> 0 bytes .../info/database_cleaner/GET/request | 7 - .../info/database_cleaner/GET/response | Bin 2826 -> 0 bytes .../info/declarative-option/GET/request | 7 - .../info/declarative-option/GET/response | Bin 1184 -> 0 bytes .../info/declarative/GET/request | 7 - .../info/declarative/GET/response | Bin 1450 -> 0 bytes .../info/descendants_tracker/GET/request | 7 - .../info/descendants_tracker/GET/response | Bin 1267 -> 0 bytes .../info/diff-lcs/GET/request | 7 - .../info/diff-lcs/GET/response | Bin 1553 -> 0 bytes .../info/docile/GET/request | 7 - .../info/docile/GET/response | Bin 1691 -> 0 bytes .../info/domain_name/GET/request | 7 - .../info/domain_name/GET/response | Bin 2707 -> 0 bytes .../info/dotenv-deployment/GET/request | 7 - .../info/dotenv-deployment/GET/response | Bin 1323 -> 0 bytes .../info/dotenv/GET/request | 7 - .../info/dotenv/GET/response | Bin 2172 -> 0 bytes .../index.rubygems.org/info/echoe/GET/request | 7 - .../info/echoe/GET/response | Bin 3498 -> 0 bytes .../info/em-hiredis/GET/request | 7 - .../info/em-hiredis/GET/response | Bin 1476 -> 0 bytes .../info/english/GET/request | 7 - .../info/english/GET/response | Bin 1474 -> 0 bytes .../info/equalizer/GET/request | 7 - .../info/equalizer/GET/response | Bin 1625 -> 0 bytes .../index.rubygems.org/info/erubi/GET/request | 7 - .../info/erubi/GET/response | Bin 1458 -> 0 bytes .../info/erubis/GET/request | 7 - .../info/erubis/GET/response | Bin 1910 -> 0 bytes .../info/escape_utils/GET/request | 7 - .../info/escape_utils/GET/response | Bin 2133 -> 0 bytes .../info/et-orbi/GET/request | 7 - .../info/et-orbi/GET/response | Bin 1348 -> 0 bytes .../info/event-bus/GET/request | 7 - .../info/event-bus/GET/response | Bin 1281 -> 0 bytes .../info/eventmachine-le/GET/request | 7 - .../info/eventmachine-le/GET/response | Bin 1551 -> 0 bytes .../info/eventmachine/GET/request | 7 - .../info/eventmachine/GET/response | Bin 5985 -> 0 bytes .../info/execjs/GET/request | 7 - .../info/execjs/GET/response | Bin 3129 -> 0 bytes .../info/extlib/GET/request | 7 - .../info/extlib/GET/response | Bin 1732 -> 0 bytes .../info/facets/GET/request | 7 - .../info/facets/GET/response | Bin 4021 -> 0 bytes .../info/facter/GET/request | 7 - .../info/facter/GET/response | Bin 6041 -> 0 bytes .../index.rubygems.org/info/faker/GET/request | 7 - .../info/faker/GET/response | Bin 2507 -> 0 bytes .../info/faraday/GET/request | 7 - .../info/faraday/GET/response | Bin 4141 -> 0 bytes .../info/fastthread/GET/request | 7 - .../info/fastthread/GET/response | Bin 1679 -> 0 bytes .../info/faye-websocket/GET/request | 7 - .../info/faye-websocket/GET/response | Bin 2955 -> 0 bytes .../index.rubygems.org/info/fcgi/GET/request | 7 - .../index.rubygems.org/info/fcgi/GET/response | Bin 1395 -> 0 bytes .../info/ffi-win32-extensions/GET/request | 7 - .../info/ffi-win32-extensions/GET/response | Bin 1248 -> 0 bytes .../index.rubygems.org/info/ffi/GET/request | 7 - .../index.rubygems.org/info/ffi/GET/response | Bin 10318 -> 0 bytes .../info/flexmock/GET/request | 7 - .../info/flexmock/GET/response | Bin 4116 -> 0 bytes .../info/functional-ruby/GET/request | 7 - .../info/functional-ruby/GET/response | Bin 1721 -> 0 bytes .../info/gem_plugin/GET/request | 7 - .../info/gem_plugin/GET/response | Bin 1293 -> 0 bytes .../info/gemcutter/GET/request | 7 - .../info/gemcutter/GET/response | Bin 2357 -> 0 bytes .../info/gherkin/GET/request | 7 - .../info/gherkin/GET/response | Bin 24605 -> 0 bytes .../info/gherkin3/GET/request | 7 - .../info/gherkin3/GET/response | Bin 1386 -> 0 bytes .../index.rubygems.org/info/git/GET/request | 7 - .../index.rubygems.org/info/git/GET/response | Bin 1869 -> 0 bytes .../info/globalid/GET/request | 7 - .../info/globalid/GET/response | Bin 1714 -> 0 bytes .../info/google-api-client/GET/request | 7 - .../info/google-api-client/GET/response | Bin 4702 -> 0 bytes .../info/googleauth/GET/request | 7 - .../info/googleauth/GET/response | Bin 1605 -> 0 bytes .../info/gxapi_rails/GET/request | 7 - .../info/gxapi_rails/GET/response | Bin 1462 -> 0 bytes .../info/hashie/GET/request | 7 - .../info/hashie/GET/response | Bin 2837 -> 0 bytes .../info/highline/GET/request | 7 - .../info/highline/GET/response | Bin 3415 -> 0 bytes .../index.rubygems.org/info/hike/GET/request | 7 - .../index.rubygems.org/info/hike/GET/response | Bin 2160 -> 0 bytes .../info/hiredis/GET/request | 7 - .../info/hiredis/GET/response | Bin 2410 -> 0 bytes .../info/hitimes/GET/request | 7 - .../info/hitimes/GET/response | Bin 3197 -> 0 bytes .../index.rubygems.org/info/hoe/GET/request | 7 - .../index.rubygems.org/info/hoe/GET/response | Bin 6301 -> 0 bytes .../index.rubygems.org/info/hooks/GET/request | 7 - .../info/hooks/GET/response | Bin 1871 -> 0 bytes .../info/http-cookie/GET/request | 7 - .../info/http-cookie/GET/response | Bin 1703 -> 0 bytes .../info/http_parser.rb/GET/request | 7 - .../info/http_parser.rb/GET/response | Bin 1985 -> 0 bytes .../info/httpadapter/GET/request | 7 - .../info/httpadapter/GET/response | Bin 1301 -> 0 bytes .../info/httpclient/GET/request | 7 - .../info/httpclient/GET/response | Bin 3290 -> 0 bytes .../info/hurley/GET/request | 7 - .../info/hurley/GET/response | Bin 1160 -> 0 bytes .../index.rubygems.org/info/i18n/GET/request | 7 - .../index.rubygems.org/info/i18n/GET/response | Bin 2462 -> 0 bytes .../info/ice_nine/GET/request | 7 - .../info/ice_nine/GET/response | Bin 1644 -> 0 bytes .../info/journey/GET/request | 7 - .../info/journey/GET/response | Bin 1462 -> 0 bytes .../info/jruby-pageant/GET/request | 7 - .../info/jruby-pageant/GET/response | Bin 1478 -> 0 bytes .../index.rubygems.org/info/json/GET/request | 7 - .../index.rubygems.org/info/json/GET/response | Bin 5774 -> 0 bytes .../info/json_pure/GET/request | 7 - .../info/json_pure/GET/response | Bin 3741 -> 0 bytes .../index.rubygems.org/info/jwt/GET/request | 7 - .../index.rubygems.org/info/jwt/GET/response | Bin 1835 -> 0 bytes .../info/language/GET/request | 7 - .../info/language/GET/response | Bin 1120 -> 0 bytes .../info/launchy/GET/request | 7 - .../info/launchy/GET/response | Bin 2826 -> 0 bytes .../info/libwebsocket/GET/request | 7 - .../info/libwebsocket/GET/response | Bin 1626 -> 0 bytes .../info/libxml-ruby/GET/request | 7 - .../info/libxml-ruby/GET/response | Bin 5227 -> 0 bytes .../info/liquid/GET/request | 7 - .../info/liquid/GET/response | Bin 2607 -> 0 bytes .../info/listen/GET/request | 7 - .../info/listen/GET/response | Bin 5536 -> 0 bytes .../info/little-plugger/GET/request | 7 - .../info/little-plugger/GET/response | Bin 1386 -> 0 bytes .../info/lockfile/GET/request | 7 - .../info/lockfile/GET/response | Bin 1537 -> 0 bytes .../info/logging/GET/request | 7 - .../info/logging/GET/response | Bin 3757 -> 0 bytes .../info/loofah/GET/request | 7 - .../info/loofah/GET/response | Bin 2158 -> 0 bytes .../info/loquacious/GET/request | 7 - .../info/loquacious/GET/response | Bin 2056 -> 0 bytes .../index.rubygems.org/info/mab/GET/request | 7 - .../index.rubygems.org/info/mab/GET/response | Bin 1252 -> 0 bytes .../index.rubygems.org/info/mail/GET/request | 7 - .../index.rubygems.org/info/mail/GET/response | Bin 4607 -> 0 bytes .../info/markaby/GET/request | 7 - .../info/markaby/GET/response | Bin 1627 -> 0 bytes .../info/memcache-client/GET/request | 7 - .../info/memcache-client/GET/response | Bin 2172 -> 0 bytes .../info/memoist/GET/request | 7 - .../info/memoist/GET/response | Bin 1622 -> 0 bytes .../info/memoizable/GET/request | 7 - .../info/memoizable/GET/response | Bin 1397 -> 0 bytes .../info/metaclass/GET/request | 7 - .../info/metaclass/GET/response | Bin 1240 -> 0 bytes .../info/metaid/GET/request | 7 - .../info/metaid/GET/response | Bin 1118 -> 0 bytes .../info/method_source/GET/request | 7 - .../info/method_source/GET/response | Bin 2124 -> 0 bytes .../info/mime-types-data/GET/request | 7 - .../info/mime-types-data/GET/response | Bin 1225 -> 0 bytes .../info/mime-types/GET/request | 7 - .../info/mime-types/GET/response | Bin 2503 -> 0 bytes .../info/mimemagic/GET/request | 7 - .../info/mimemagic/GET/response | Bin 1609 -> 0 bytes .../info/mini_portile/GET/request | 7 - .../info/mini_portile/GET/response | Bin 1861 -> 0 bytes .../info/mini_portile2/GET/request | 7 - .../info/mini_portile2/GET/response | Bin 1320 -> 0 bytes .../info/minitar-cli/GET/request | 7 - .../info/minitar-cli/GET/response | Bin 1271 -> 0 bytes .../info/minitar/GET/request | 7 - .../info/minitar/GET/response | Bin 1255 -> 0 bytes .../info/minitest/GET/request | 7 - .../info/minitest/GET/response | Bin 5383 -> 0 bytes .../index.rubygems.org/info/mkrf/GET/request | 7 - .../index.rubygems.org/info/mkrf/GET/response | Bin 1355 -> 0 bytes .../index.rubygems.org/info/mocha/GET/request | 7 - .../info/mocha/GET/response | Bin 3772 -> 0 bytes .../info/mongrel/GET/request | 7 - .../info/mongrel/GET/response | Bin 3435 -> 0 bytes .../info/mono_logger/GET/request | 7 - .../info/mono_logger/GET/response | Bin 1253 -> 0 bytes .../info/multi_json/GET/request | 7 - .../info/multi_json/GET/response | Bin 3388 -> 0 bytes .../info/multi_test/GET/request | 7 - .../info/multi_test/GET/response | Bin 1316 -> 0 bytes .../info/multimap/GET/request | 7 - .../info/multimap/GET/response | Bin 1172 -> 0 bytes .../info/multipart-post/GET/request | 7 - .../info/multipart-post/GET/response | Bin 1601 -> 0 bytes .../info/mustermann/GET/request | 7 - .../info/mustermann/GET/response | Bin 1525 -> 0 bytes .../info/needle/GET/request | 7 - .../info/needle/GET/response | Bin 1396 -> 0 bytes .../index.rubygems.org/info/nenv/GET/request | 7 - .../index.rubygems.org/info/nenv/GET/response | Bin 1373 -> 0 bytes .../info/net-scp/GET/request | 7 - .../info/net-scp/GET/response | Bin 1518 -> 0 bytes .../info/net-ssh/GET/request | 7 - .../info/net-ssh/GET/response | Bin 6108 -> 0 bytes .../index.rubygems.org/info/netrc/GET/request | 7 - .../info/netrc/GET/response | Bin 2065 -> 0 bytes .../info/newgem/GET/request | 7 - .../info/newgem/GET/response | Bin 4665 -> 0 bytes .../index.rubygems.org/info/nio4r/GET/request | 7 - .../info/nio4r/GET/response | Bin 3205 -> 0 bytes .../info/nokogiri/GET/request | 7 - .../info/nokogiri/GET/response | Bin 16547 -> 0 bytes .../index.rubygems.org/info/os/GET/request | 7 - .../index.rubygems.org/info/os/GET/response | Bin 2023 -> 0 bytes .../info/paperclip/GET/request | 7 - .../info/paperclip/GET/response | Bin 5137 -> 0 bytes .../info/parser/GET/request | 7 - .../info/parser/GET/response | Bin 4833 -> 0 bytes .../info/pattern-match/GET/request | 7 - .../info/pattern-match/GET/response | Bin 1487 -> 0 bytes .../info/pkg-config/GET/request | 7 - .../info/pkg-config/GET/response | Bin 1968 -> 0 bytes .../info/polyglot/GET/request | 7 - .../info/polyglot/GET/response | Bin 1781 -> 0 bytes .../info/power_assert/GET/request | 7 - .../info/power_assert/GET/response | Bin 1922 -> 0 bytes .../info/powerbar/GET/request | 7 - .../info/powerbar/GET/response | Bin 1596 -> 0 bytes .../info/powerpack/GET/request | 7 - .../info/powerpack/GET/response | Bin 1517 -> 0 bytes .../info/preforker/GET/request | 7 - .../info/preforker/GET/response | Bin 1162 -> 0 bytes .../info/public_suffix/GET/request | 7 - .../info/public_suffix/GET/response | Bin 1993 -> 0 bytes .../index.rubygems.org/info/racc/GET/request | 7 - .../index.rubygems.org/info/racc/GET/response | Bin 1606 -> 0 bytes .../info/rack-cache/GET/request | 7 - .../info/rack-cache/GET/response | Bin 2062 -> 0 bytes .../info/rack-mount/GET/request | 7 - .../info/rack-mount/GET/response | Bin 3016 -> 0 bytes .../info/rack-protection/GET/request | 7 - .../info/rack-protection/GET/response | Bin 1827 -> 0 bytes .../info/rack-ssl/GET/request | 7 - .../info/rack-ssl/GET/response | Bin 1538 -> 0 bytes .../info/rack-test/GET/request | 7 - .../info/rack-test/GET/response | Bin 1822 -> 0 bytes .../index.rubygems.org/info/rack/GET/request | 7 - .../index.rubygems.org/info/rack/GET/response | Bin 3634 -> 0 bytes .../rails-deprecated_sanitizer/GET/request | 7 - .../rails-deprecated_sanitizer/GET/response | Bin 1321 -> 0 bytes .../info/rails-dom-testing/GET/request | 7 - .../info/rails-dom-testing/GET/response | Bin 1707 -> 0 bytes .../info/rails-html-sanitizer/GET/request | 7 - .../info/rails-html-sanitizer/GET/response | Bin 1309 -> 0 bytes .../info/rails-observers/GET/request | 7 - .../info/rails-observers/GET/response | Bin 1298 -> 0 bytes .../index.rubygems.org/info/rails/GET/request | 7 - .../info/rails/GET/response | Bin 21031 -> 0 bytes .../info/railties/GET/request | 7 - .../info/railties/GET/response | Bin 13616 -> 0 bytes .../info/rainbow/GET/request | 7 - .../info/rainbow/GET/response | Bin 1837 -> 0 bytes .../info/rake-compiler/GET/request | 7 - .../info/rake-compiler/GET/response | Bin 2483 -> 0 bytes .../index.rubygems.org/info/rake/GET/request | 7 - .../index.rubygems.org/info/rake/GET/response | Bin 4284 -> 0 bytes .../info/rb-fchange/GET/request | 7 - .../info/rb-fchange/GET/response | Bin 1331 -> 0 bytes .../info/rb-fsevent/GET/request | 7 - .../info/rb-fsevent/GET/response | Bin 2442 -> 0 bytes .../info/rb-inotify/GET/request | 7 - .../info/rb-inotify/GET/response | Bin 2295 -> 0 bytes .../info/rb-kqueue/GET/request | 7 - .../info/rb-kqueue/GET/response | Bin 1513 -> 0 bytes .../info/rbnacl-libsodium/GET/request | 7 - .../info/rbnacl-libsodium/GET/response | Bin 1955 -> 0 bytes .../info/rbnacl/GET/request | 7 - .../info/rbnacl/GET/response | Bin 1870 -> 0 bytes .../index.rubygems.org/info/rcov/GET/request | 7 - .../index.rubygems.org/info/rcov/GET/response | Bin 2710 -> 0 bytes .../index.rubygems.org/info/rdoc/GET/request | 7 - .../index.rubygems.org/info/rdoc/GET/response | Bin 3765 -> 0 bytes .../info/redis-namespace/GET/request | 7 - .../info/redis-namespace/GET/response | Bin 2750 -> 0 bytes .../index.rubygems.org/info/redis/GET/request | 7 - .../info/redis/GET/response | Bin 3470 -> 0 bytes .../index.rubygems.org/info/ref/GET/request | 7 - .../index.rubygems.org/info/ref/GET/response | Bin 1332 -> 0 bytes .../info/representable/GET/request | 7 - .../info/representable/GET/response | Bin 5462 -> 0 bytes .../info/resque-scheduler/GET/request | 7 - .../info/resque-scheduler/GET/response | Bin 3414 -> 0 bytes .../info/resque/GET/request | 7 - .../info/resque/GET/response | Bin 4326 -> 0 bytes .../info/rest-client/GET/request | 7 - .../info/rest-client/GET/response | Bin 5868 -> 0 bytes .../info/retriable/GET/request | 7 - .../info/retriable/GET/response | Bin 1989 -> 0 bytes .../info/rexical/GET/request | 7 - .../info/rexical/GET/response | Bin 1321 -> 0 bytes .../info/right_aws/GET/request | 7 - .../info/right_aws/GET/response | Bin 2221 -> 0 bytes .../info/right_http_connection/GET/request | 7 - .../info/right_http_connection/GET/response | Bin 1464 -> 0 bytes .../info/rspec-core/GET/request | 7 - .../info/rspec-core/GET/response | Bin 6530 -> 0 bytes .../info/rspec-expectations/GET/request | 7 - .../info/rspec-expectations/GET/response | Bin 5083 -> 0 bytes .../info/rspec-logsplit/GET/request | 7 - .../info/rspec-logsplit/GET/response | Bin 1146 -> 0 bytes .../info/rspec-mocks/GET/request | 7 - .../info/rspec-mocks/GET/response | Bin 5745 -> 0 bytes .../info/rspec-support/GET/request | 7 - .../info/rspec-support/GET/response | Bin 1804 -> 0 bytes .../index.rubygems.org/info/rspec/GET/request | 7 - .../info/rspec/GET/response | Bin 9094 -> 0 bytes .../info/rubigen/GET/request | 7 - .../info/rubigen/GET/response | Bin 2605 -> 0 bytes .../info/rubocop/GET/request | 7 - .../info/rubocop/GET/response | Bin 5384 -> 0 bytes .../info/ruby-openid/GET/request | 7 - .../info/ruby-openid/GET/response | Bin 2170 -> 0 bytes .../info/ruby-progressbar/GET/request | 7 - .../info/ruby-progressbar/GET/response | Bin 2173 -> 0 bytes .../info/ruby-yadis/GET/request | 7 - .../info/ruby-yadis/GET/response | Bin 1397 -> 0 bytes .../info/ruby_dep/GET/request | 7 - .../info/ruby_dep/GET/response | Bin 1450 -> 0 bytes .../info/ruby_parser/GET/request | 7 - .../info/ruby_parser/GET/response | Bin 3611 -> 0 bytes .../info/rubyforge/GET/request | 7 - .../info/rubyforge/GET/response | Bin 2162 -> 0 bytes .../info/rubyzip/GET/request | 7 - .../info/rubyzip/GET/response | Bin 2155 -> 0 bytes .../info/rufus-scheduler/GET/request | 7 - .../info/rufus-scheduler/GET/response | Bin 4127 -> 0 bytes .../info/sass-listen/GET/request | 7 - .../info/sass-listen/GET/response | Bin 1211 -> 0 bytes .../info/sass-rails/GET/request | 7 - .../info/sass-rails/GET/response | Bin 3198 -> 0 bytes .../index.rubygems.org/info/sass/GET/request | 7 - .../index.rubygems.org/info/sass/GET/response | Bin 14818 -> 0 bytes .../info/selenium-webdriver/GET/request | 7 - .../info/selenium-webdriver/GET/response | Bin 8061 -> 0 bytes .../info/sexp_processor/GET/request | 7 - .../info/sexp_processor/GET/response | Bin 2677 -> 0 bytes .../info/shotgun/GET/request | 7 - .../info/shotgun/GET/response | Bin 1263 -> 0 bytes .../info/signet/GET/request | 7 - .../info/signet/GET/response | Bin 2508 -> 0 bytes .../info/simplecov-html/GET/request | 7 - .../info/simplecov-html/GET/response | Bin 1940 -> 0 bytes .../info/simplecov/GET/request | 7 - .../info/simplecov/GET/response | Bin 2868 -> 0 bytes .../info/sinatra/GET/request | 7 - .../info/sinatra/GET/response | Bin 4641 -> 0 bytes .../index.rubygems.org/info/slop/GET/request | 7 - .../index.rubygems.org/info/slop/GET/response | Bin 3977 -> 0 bytes .../info/spicycode-rcov/GET/request | 7 - .../info/spicycode-rcov/GET/response | Bin 1381 -> 0 bytes .../index.rubygems.org/info/spoon/GET/request | 7 - .../info/spoon/GET/response | Bin 985 -> 0 bytes .../info/sprockets-rails/GET/request | 7 - .../info/sprockets-rails/GET/response | Bin 2412 -> 0 bytes .../info/sprockets/GET/request | 7 - .../info/sprockets/GET/response | Bin 5491 -> 0 bytes .../index.rubygems.org/info/spruz/GET/request | 7 - .../info/spruz/GET/response | Bin 1759 -> 0 bytes .../info/sqlite3/GET/request | 7 - .../info/sqlite3/GET/response | Bin 3025 -> 0 bytes .../info/syntax/GET/request | 7 - .../info/syntax/GET/response | Bin 1321 -> 0 bytes .../info/sys-admin/GET/request | 7 - .../info/sys-admin/GET/response | Bin 2483 -> 0 bytes .../info/tenderlove-frex/GET/request | 7 - .../info/tenderlove-frex/GET/response | Bin 1128 -> 0 bytes .../info/term-ansicolor/GET/request | 7 - .../info/term-ansicolor/GET/response | Bin 2153 -> 0 bytes .../info/termios/GET/request | 7 - .../info/termios/GET/response | Bin 1121 -> 0 bytes .../info/test-spec/GET/request | 7 - .../info/test-spec/GET/response | Bin 1315 -> 0 bytes .../info/test-unit/GET/request | 7 - .../info/test-unit/GET/response | Bin 3249 -> 0 bytes .../info/text-format/GET/request | 7 - .../info/text-format/GET/response | Bin 1204 -> 0 bytes .../info/text-hyphen/GET/request | 7 - .../info/text-hyphen/GET/response | Bin 1368 -> 0 bytes .../index.rubygems.org/info/thin/GET/request | 7 - .../index.rubygems.org/info/thin/GET/response | Bin 4120 -> 0 bytes .../index.rubygems.org/info/thor/GET/request | 7 - .../index.rubygems.org/info/thor/GET/response | Bin 2903 -> 0 bytes .../info/thoughtbot-shoulda/GET/request | 7 - .../info/thoughtbot-shoulda/GET/response | Bin 1731 -> 0 bytes .../info/thread_safe/GET/request | 7 - .../info/thread_safe/GET/response | Bin 1798 -> 0 bytes .../index.rubygems.org/info/tilt/GET/request | 7 - .../index.rubygems.org/info/tilt/GET/response | Bin 2484 -> 0 bytes .../info/timers/GET/request | 7 - .../info/timers/GET/response | Bin 1960 -> 0 bytes .../index.rubygems.org/info/tins/GET/request | 7 - .../index.rubygems.org/info/tins/GET/response | Bin 4224 -> 0 bytes .../info/tlsmail/GET/request | 7 - .../info/tlsmail/GET/response | Bin 1119 -> 0 bytes .../index.rubygems.org/info/tool/GET/request | 7 - .../index.rubygems.org/info/tool/GET/response | Bin 1385 -> 0 bytes .../info/treetop/GET/request | 7 - .../info/treetop/GET/response | Bin 2821 -> 0 bytes .../info/trollop/GET/request | 7 - .../info/trollop/GET/response | Bin 2283 -> 0 bytes .../info/tzinfo/GET/request | 7 - .../info/tzinfo/GET/response | Bin 4086 -> 0 bytes .../index.rubygems.org/info/uber/GET/request | 7 - .../index.rubygems.org/info/uber/GET/response | Bin 1785 -> 0 bytes .../index.rubygems.org/info/unf/GET/request | 7 - .../index.rubygems.org/info/unf/GET/response | Bin 1800 -> 0 bytes .../info/unf_ext/GET/request | 7 - .../info/unf_ext/GET/response | Bin 1945 -> 0 bytes .../info/unicode-display_width/GET/request | 7 - .../info/unicode-display_width/GET/response | Bin 1886 -> 0 bytes .../info/uuidtools/GET/request | 7 - .../info/uuidtools/GET/response | Bin 2004 -> 0 bytes .../index.rubygems.org/info/vegas/GET/request | 7 - .../info/vegas/GET/response | Bin 1923 -> 0 bytes .../info/virtus/GET/request | 7 - .../info/virtus/GET/response | Bin 2840 -> 0 bytes .../info/weakling/GET/request | 7 - .../info/weakling/GET/response | Bin 1310 -> 0 bytes .../info/websocket-driver/GET/request | 7 - .../info/websocket-driver/GET/response | Bin 2734 -> 0 bytes .../info/websocket-extensions/GET/request | 7 - .../info/websocket-extensions/GET/response | Bin 1268 -> 0 bytes .../info/websocket/GET/request | 7 - .../info/websocket/GET/response | Bin 1864 -> 0 bytes .../info/win32-api/GET/request | 7 - .../info/win32-api/GET/response | Bin 3050 -> 0 bytes .../info/win32-dir/GET/request | 7 - .../info/win32-dir/GET/response | Bin 1925 -> 0 bytes .../info/win32-security/GET/request | 7 - .../info/win32-security/GET/response | Bin 1919 -> 0 bytes .../info/win32console/GET/request | 7 - .../info/win32console/GET/response | Bin 2033 -> 0 bytes .../info/windows-api/GET/request | 7 - .../info/windows-api/GET/response | Bin 1753 -> 0 bytes .../info/windows-pr/GET/request | 7 - .../info/windows-pr/GET/response | Bin 3435 -> 0 bytes .../index.rubygems.org/info/xpath/GET/request | 7 - .../info/xpath/GET/response | Bin 1538 -> 0 bytes .../index.rubygems.org/versions/GET/request | 7 - .../index.rubygems.org/versions/GET/response | Bin 4840039 -> 0 bytes .../gems/activesupport-3.2.12.gem/GET/request | 7 - .../activesupport-3.2.12.gem/GET/response | Bin 288573 -> 0 bytes .../activesupport-3.2.22.5.gem/GET/request | 7 - .../activesupport-3.2.22.5.gem/GET/response | Bin 290656 -> 0 bytes .../gems/bundler-1.12.3.gem/GET/request | 7 - .../gems/bundler-1.12.3.gem/GET/response | Bin 280894 -> 0 bytes .../gems/diff-lcs-1.3.gem/GET/request | 7 - .../gems/diff-lcs-1.3.gem/GET/response | Bin 46952 -> 0 bytes .../gems/faker-1.1.2.gem/GET/request | 7 - .../gems/faker-1.1.2.gem/GET/response | Bin 97085 -> 0 bytes .../gems/i18n-0.6.11.gem/GET/request | 7 - .../gems/i18n-0.6.11.gem/GET/response | Bin 62272 -> 0 bytes .../gems/i18n-0.8.1.gem/GET/request | 7 - .../gems/i18n-0.8.1.gem/GET/response | Bin 60266 -> 0 bytes .../gems/mono_logger-1.1.0.gem/GET/request | 7 - .../gems/mono_logger-1.1.0.gem/GET/response | Bin 11074 -> 0 bytes .../gems/multi_json-1.12.1.gem/GET/request | 7 - .../gems/multi_json-1.12.1.gem/GET/response | Bin 26950 -> 0 bytes .../gems/rack-1.0.1.gem/GET/request | 7 - .../gems/rack-1.0.1.gem/GET/response | Bin 135490 -> 0 bytes .../gems/rack-1.6.5.gem/GET/request | 7 - .../gems/rack-1.6.5.gem/GET/response | Bin 230240 -> 0 bytes .../gems/rack-2.0.1.gem/GET/request | 7 - .../gems/rack-2.0.1.gem/GET/response | Bin 254782 -> 0 bytes .../rack-protection-1.5.3.gem/GET/request | 7 - .../rack-protection-1.5.3.gem/GET/response | Bin 19265 -> 0 bytes .../gems/redis-3.3.3.gem/GET/request | 7 - .../gems/redis-3.3.3.gem/GET/response | Bin 93542 -> 0 bytes .../redis-namespace-1.5.3.gem/GET/request | 7 - .../redis-namespace-1.5.3.gem/GET/response | Bin 17766 -> 0 bytes .../gems/resque-1.24.1.gem/GET/request | 7 - .../gems/resque-1.24.1.gem/GET/response | Bin 91457 -> 0 bytes .../resque-scheduler-2.2.0.gem/GET/request | 7 - .../resque-scheduler-2.2.0.gem/GET/response | Bin 37697 -> 0 bytes .../rufus-scheduler-2.0.24.gem/GET/request | 7 - .../rufus-scheduler-2.0.24.gem/GET/response | Bin 38721 -> 0 bytes .../gems/sinatra-1.4.8.gem/GET/request | 7 - .../gems/sinatra-1.4.8.gem/GET/response | Bin 370016 -> 0 bytes .../gems/thread_safe-0.3.6.gem/GET/request | 7 - .../gems/thread_safe-0.3.6.gem/GET/response | Bin 121703 -> 0 bytes .../gems/tilt-2.0.7.gem/GET/request | 7 - .../gems/tilt-2.0.7.gem/GET/response | Bin 55139 -> 0 bytes .../gems/tzinfo-1.2.3.gem/GET/request | 7 - .../gems/tzinfo-1.2.3.gem/GET/response | Bin 152417 -> 0 bytes .../gems/vegas-0.1.11.gem/GET/request | 7 - .../gems/vegas-0.1.11.gem/GET/response | Bin 13632 -> 0 bytes .../bundler-1.12.3.gemspec.rz/GET/request | 7 - .../bundler-1.12.3.gemspec.rz/GET/response | Bin 1426 -> 0 bytes .../rubygems.org/specs.4.8.gz/GET/request | 7 - .../rubygems.org/specs.4.8.gz/GET/response | Bin 3248143 -> 0 bytes spec/bundler/support/artifice/windows.rb | 49 - spec/bundler/support/builders.rb | 810 -------- spec/bundler/support/code_climate.rb | 26 - spec/bundler/support/command_execution.rb | 57 - spec/bundler/support/hax.rb | 67 - spec/bundler/support/helpers.rb | 588 ------ spec/bundler/support/indexes.rb | 420 ----- spec/bundler/support/less_than_proc.rb | 20 - spec/bundler/support/manpages.rb | 14 - spec/bundler/support/matchers.rb | 242 --- spec/bundler/support/path.rb | 128 -- spec/bundler/support/permissions.rb | 12 - spec/bundler/support/platforms.rb | 116 -- spec/bundler/support/rubygems_ext.rb | 67 - spec/bundler/support/silent_logger.rb | 10 - spec/bundler/support/sometimes.rb | 57 - spec/bundler/support/streams.rb | 15 - spec/bundler/support/sudo.rb | 18 - spec/bundler/support/the_bundle.rb | 37 - spec/bundler/update/gems/post_install_spec.rb | 76 - spec/bundler/update/git_spec.rb | 374 ---- spec/bundler/update/path_spec.rb | 18 - test/rubygems/test_gem.rb | 13 +- tool/sync_default_gems.rb | 9 - 1100 files changed, 19 insertions(+), 71581 deletions(-) delete mode 100755 bin/bundle delete mode 100755 bin/bundler delete mode 100644 lib/bundler.gemspec delete mode 100644 lib/bundler.rb delete mode 100644 lib/bundler/build_metadata.rb delete mode 100644 lib/bundler/capistrano.rb delete mode 100644 lib/bundler/cli.rb delete mode 100644 lib/bundler/cli/add.rb delete mode 100644 lib/bundler/cli/binstubs.rb delete mode 100644 lib/bundler/cli/cache.rb delete mode 100644 lib/bundler/cli/check.rb delete mode 100644 lib/bundler/cli/clean.rb delete mode 100644 lib/bundler/cli/common.rb delete mode 100644 lib/bundler/cli/config.rb delete mode 100644 lib/bundler/cli/console.rb delete mode 100644 lib/bundler/cli/doctor.rb delete mode 100644 lib/bundler/cli/exec.rb delete mode 100644 lib/bundler/cli/gem.rb delete mode 100644 lib/bundler/cli/info.rb delete mode 100644 lib/bundler/cli/init.rb delete mode 100644 lib/bundler/cli/inject.rb delete mode 100644 lib/bundler/cli/install.rb delete mode 100644 lib/bundler/cli/issue.rb delete mode 100644 lib/bundler/cli/list.rb delete mode 100644 lib/bundler/cli/lock.rb delete mode 100644 lib/bundler/cli/open.rb delete mode 100644 lib/bundler/cli/outdated.rb delete mode 100644 lib/bundler/cli/package.rb delete mode 100644 lib/bundler/cli/platform.rb delete mode 100644 lib/bundler/cli/plugin.rb delete mode 100644 lib/bundler/cli/pristine.rb delete mode 100644 lib/bundler/cli/show.rb delete mode 100644 lib/bundler/cli/update.rb delete mode 100644 lib/bundler/cli/viz.rb delete mode 100644 lib/bundler/compact_index_client.rb delete mode 100644 lib/bundler/compact_index_client/cache.rb delete mode 100644 lib/bundler/compact_index_client/updater.rb delete mode 100644 lib/bundler/compatibility_guard.rb delete mode 100644 lib/bundler/constants.rb delete mode 100644 lib/bundler/current_ruby.rb delete mode 100644 lib/bundler/definition.rb delete mode 100644 lib/bundler/dep_proxy.rb delete mode 100644 lib/bundler/dependency.rb delete mode 100644 lib/bundler/deployment.rb delete mode 100644 lib/bundler/deprecate.rb delete mode 100644 lib/bundler/dsl.rb delete mode 100644 lib/bundler/endpoint_specification.rb delete mode 100644 lib/bundler/env.rb delete mode 100644 lib/bundler/environment_preserver.rb delete mode 100644 lib/bundler/errors.rb delete mode 100644 lib/bundler/feature_flag.rb delete mode 100644 lib/bundler/fetcher.rb delete mode 100644 lib/bundler/fetcher/base.rb delete mode 100644 lib/bundler/fetcher/compact_index.rb delete mode 100644 lib/bundler/fetcher/dependency.rb delete mode 100644 lib/bundler/fetcher/downloader.rb delete mode 100644 lib/bundler/fetcher/index.rb delete mode 100644 lib/bundler/friendly_errors.rb delete mode 100644 lib/bundler/gem_helper.rb delete mode 100644 lib/bundler/gem_helpers.rb delete mode 100644 lib/bundler/gem_remote_fetcher.rb delete mode 100644 lib/bundler/gem_tasks.rb delete mode 100644 lib/bundler/gem_version_promoter.rb delete mode 100644 lib/bundler/gemdeps.rb delete mode 100644 lib/bundler/graph.rb delete mode 100644 lib/bundler/index.rb delete mode 100644 lib/bundler/injector.rb delete mode 100644 lib/bundler/inline.rb delete mode 100644 lib/bundler/installer.rb delete mode 100644 lib/bundler/installer/gem_installer.rb delete mode 100644 lib/bundler/installer/parallel_installer.rb delete mode 100644 lib/bundler/installer/standalone.rb delete mode 100644 lib/bundler/lazy_specification.rb delete mode 100644 lib/bundler/lockfile_generator.rb delete mode 100644 lib/bundler/lockfile_parser.rb delete mode 100644 lib/bundler/match_platform.rb delete mode 100644 lib/bundler/mirror.rb delete mode 100644 lib/bundler/plugin.rb delete mode 100644 lib/bundler/plugin/api.rb delete mode 100644 lib/bundler/plugin/api/source.rb delete mode 100644 lib/bundler/plugin/dsl.rb delete mode 100644 lib/bundler/plugin/index.rb delete mode 100644 lib/bundler/plugin/installer.rb delete mode 100644 lib/bundler/plugin/installer/git.rb delete mode 100644 lib/bundler/plugin/installer/rubygems.rb delete mode 100644 lib/bundler/plugin/source_list.rb delete mode 100644 lib/bundler/process_lock.rb delete mode 100644 lib/bundler/psyched_yaml.rb delete mode 100644 lib/bundler/remote_specification.rb delete mode 100644 lib/bundler/resolver.rb delete mode 100644 lib/bundler/resolver/spec_group.rb delete mode 100644 lib/bundler/retry.rb delete mode 100644 lib/bundler/ruby_dsl.rb delete mode 100644 lib/bundler/ruby_version.rb delete mode 100644 lib/bundler/rubygems_ext.rb delete mode 100644 lib/bundler/rubygems_gem_installer.rb delete mode 100644 lib/bundler/rubygems_integration.rb delete mode 100644 lib/bundler/runtime.rb delete mode 100644 lib/bundler/settings.rb delete mode 100644 lib/bundler/settings/validator.rb delete mode 100644 lib/bundler/setup.rb delete mode 100644 lib/bundler/shared_helpers.rb delete mode 100644 lib/bundler/similarity_detector.rb delete mode 100644 lib/bundler/source.rb delete mode 100644 lib/bundler/source/gemspec.rb delete mode 100644 lib/bundler/source/git.rb delete mode 100644 lib/bundler/source/git/git_proxy.rb delete mode 100644 lib/bundler/source/metadata.rb delete mode 100644 lib/bundler/source/path.rb delete mode 100644 lib/bundler/source/path/installer.rb delete mode 100644 lib/bundler/source/rubygems.rb delete mode 100644 lib/bundler/source/rubygems/remote.rb delete mode 100644 lib/bundler/source_list.rb delete mode 100644 lib/bundler/spec_set.rb delete mode 100644 lib/bundler/ssl_certs/.document delete mode 100644 lib/bundler/ssl_certs/certificate_manager.rb delete mode 100644 lib/bundler/ssl_certs/index.rubygems.org/GlobalSignRootCA.pem delete mode 100644 lib/bundler/ssl_certs/rubygems.global.ssl.fastly.net/DigiCertHighAssuranceEVRootCA.pem delete mode 100644 lib/bundler/ssl_certs/rubygems.org/AddTrustExternalCARoot.pem delete mode 100644 lib/bundler/stub_specification.rb delete mode 100644 lib/bundler/templates/.document delete mode 100755 lib/bundler/templates/Executable delete mode 100644 lib/bundler/templates/Executable.bundler delete mode 100644 lib/bundler/templates/Executable.standalone delete mode 100644 lib/bundler/templates/Gemfile delete mode 100644 lib/bundler/templates/gems.rb delete mode 100644 lib/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt delete mode 100644 lib/bundler/templates/newgem/Gemfile.tt delete mode 100644 lib/bundler/templates/newgem/LICENSE.txt.tt delete mode 100644 lib/bundler/templates/newgem/README.md.tt delete mode 100644 lib/bundler/templates/newgem/Rakefile.tt delete mode 100644 lib/bundler/templates/newgem/bin/console.tt delete mode 100644 lib/bundler/templates/newgem/bin/setup.tt delete mode 100644 lib/bundler/templates/newgem/exe/newgem.tt delete mode 100644 lib/bundler/templates/newgem/ext/newgem/extconf.rb.tt delete mode 100644 lib/bundler/templates/newgem/ext/newgem/newgem.c.tt delete mode 100644 lib/bundler/templates/newgem/ext/newgem/newgem.h.tt delete mode 100644 lib/bundler/templates/newgem/gitignore.tt delete mode 100644 lib/bundler/templates/newgem/lib/newgem.rb.tt delete mode 100644 lib/bundler/templates/newgem/lib/newgem/version.rb.tt delete mode 100644 lib/bundler/templates/newgem/newgem.gemspec.tt delete mode 100644 lib/bundler/templates/newgem/rspec.tt delete mode 100644 lib/bundler/templates/newgem/spec/newgem_spec.rb.tt delete mode 100644 lib/bundler/templates/newgem/spec/spec_helper.rb.tt delete mode 100644 lib/bundler/templates/newgem/test/newgem_test.rb.tt delete mode 100644 lib/bundler/templates/newgem/test/test_helper.rb.tt delete mode 100644 lib/bundler/templates/newgem/travis.yml.tt delete mode 100644 lib/bundler/ui.rb delete mode 100644 lib/bundler/ui/rg_proxy.rb delete mode 100644 lib/bundler/ui/shell.rb delete mode 100644 lib/bundler/ui/silent.rb delete mode 100644 lib/bundler/uri_credentials_filter.rb delete mode 100644 lib/bundler/vendor/fileutils/lib/fileutils.rb delete mode 100644 lib/bundler/vendor/molinillo/lib/molinillo.rb delete mode 100644 lib/bundler/vendor/molinillo/lib/molinillo/compatibility.rb delete mode 100644 lib/bundler/vendor/molinillo/lib/molinillo/delegates/resolution_state.rb delete mode 100644 lib/bundler/vendor/molinillo/lib/molinillo/delegates/specification_provider.rb delete mode 100644 lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb delete mode 100644 lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/action.rb delete mode 100644 lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb delete mode 100644 lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_vertex.rb delete mode 100644 lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/delete_edge.rb delete mode 100644 lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb delete mode 100644 lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/log.rb delete mode 100644 lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/set_payload.rb delete mode 100644 lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb delete mode 100644 lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb delete mode 100644 lib/bundler/vendor/molinillo/lib/molinillo/errors.rb delete mode 100644 lib/bundler/vendor/molinillo/lib/molinillo/gem_metadata.rb delete mode 100644 lib/bundler/vendor/molinillo/lib/molinillo/modules/specification_provider.rb delete mode 100644 lib/bundler/vendor/molinillo/lib/molinillo/modules/ui.rb delete mode 100644 lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb delete mode 100644 lib/bundler/vendor/molinillo/lib/molinillo/resolver.rb delete mode 100644 lib/bundler/vendor/molinillo/lib/molinillo/state.rb delete mode 100644 lib/bundler/vendor/net-http-persistent/lib/net/http/faster.rb delete mode 100644 lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb delete mode 100644 lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/ssl_reuse.rb delete mode 100644 lib/bundler/vendor/thor/lib/thor.rb delete mode 100644 lib/bundler/vendor/thor/lib/thor/actions.rb delete mode 100644 lib/bundler/vendor/thor/lib/thor/actions/create_file.rb delete mode 100644 lib/bundler/vendor/thor/lib/thor/actions/create_link.rb delete mode 100644 lib/bundler/vendor/thor/lib/thor/actions/directory.rb delete mode 100644 lib/bundler/vendor/thor/lib/thor/actions/empty_directory.rb delete mode 100644 lib/bundler/vendor/thor/lib/thor/actions/file_manipulation.rb delete mode 100644 lib/bundler/vendor/thor/lib/thor/actions/inject_into_file.rb delete mode 100644 lib/bundler/vendor/thor/lib/thor/base.rb delete mode 100644 lib/bundler/vendor/thor/lib/thor/command.rb delete mode 100644 lib/bundler/vendor/thor/lib/thor/core_ext/hash_with_indifferent_access.rb delete mode 100644 lib/bundler/vendor/thor/lib/thor/core_ext/io_binary_read.rb delete mode 100644 lib/bundler/vendor/thor/lib/thor/core_ext/ordered_hash.rb delete mode 100644 lib/bundler/vendor/thor/lib/thor/error.rb delete mode 100644 lib/bundler/vendor/thor/lib/thor/group.rb delete mode 100644 lib/bundler/vendor/thor/lib/thor/invocation.rb delete mode 100644 lib/bundler/vendor/thor/lib/thor/line_editor.rb delete mode 100644 lib/bundler/vendor/thor/lib/thor/line_editor/basic.rb delete mode 100644 lib/bundler/vendor/thor/lib/thor/line_editor/readline.rb delete mode 100644 lib/bundler/vendor/thor/lib/thor/parser.rb delete mode 100644 lib/bundler/vendor/thor/lib/thor/parser/argument.rb delete mode 100644 lib/bundler/vendor/thor/lib/thor/parser/arguments.rb delete mode 100644 lib/bundler/vendor/thor/lib/thor/parser/option.rb delete mode 100644 lib/bundler/vendor/thor/lib/thor/parser/options.rb delete mode 100644 lib/bundler/vendor/thor/lib/thor/rake_compat.rb delete mode 100644 lib/bundler/vendor/thor/lib/thor/runner.rb delete mode 100644 lib/bundler/vendor/thor/lib/thor/shell.rb delete mode 100644 lib/bundler/vendor/thor/lib/thor/shell/basic.rb delete mode 100644 lib/bundler/vendor/thor/lib/thor/shell/color.rb delete mode 100644 lib/bundler/vendor/thor/lib/thor/shell/html.rb delete mode 100644 lib/bundler/vendor/thor/lib/thor/util.rb delete mode 100644 lib/bundler/vendor/thor/lib/thor/version.rb delete mode 100644 lib/bundler/vendored_fileutils.rb delete mode 100644 lib/bundler/vendored_molinillo.rb delete mode 100644 lib/bundler/vendored_persistent.rb delete mode 100644 lib/bundler/vendored_thor.rb delete mode 100644 lib/bundler/version.rb delete mode 100644 lib/bundler/version_ranges.rb delete mode 100644 lib/bundler/vlad.rb delete mode 100644 lib/bundler/worker.rb delete mode 100644 lib/bundler/yaml_serializer.rb delete mode 100644 spec/bundler/bundler/bundler_spec.rb delete mode 100644 spec/bundler/bundler/cli_spec.rb delete mode 100644 spec/bundler/bundler/compact_index_client/updater_spec.rb delete mode 100644 spec/bundler/bundler/definition_spec.rb delete mode 100644 spec/bundler/bundler/dsl_spec.rb delete mode 100644 spec/bundler/bundler/endpoint_specification_spec.rb delete mode 100644 spec/bundler/bundler/env_spec.rb delete mode 100644 spec/bundler/bundler/environment_preserver_spec.rb delete mode 100644 spec/bundler/bundler/fetcher/base_spec.rb delete mode 100644 spec/bundler/bundler/fetcher/compact_index_spec.rb delete mode 100644 spec/bundler/bundler/fetcher/dependency_spec.rb delete mode 100644 spec/bundler/bundler/fetcher/downloader_spec.rb delete mode 100644 spec/bundler/bundler/fetcher/index_spec.rb delete mode 100644 spec/bundler/bundler/fetcher_spec.rb delete mode 100644 spec/bundler/bundler/friendly_errors_spec.rb delete mode 100644 spec/bundler/bundler/gem_helper_spec.rb delete mode 100644 spec/bundler/bundler/gem_version_promoter_spec.rb delete mode 100644 spec/bundler/bundler/index_spec.rb delete mode 100644 spec/bundler/bundler/installer/gem_installer_spec.rb delete mode 100644 spec/bundler/bundler/installer/parallel_installer_spec.rb delete mode 100644 spec/bundler/bundler/installer/spec_installation_spec.rb delete mode 100644 spec/bundler/bundler/lockfile_parser_spec.rb delete mode 100644 spec/bundler/bundler/mirror_spec.rb delete mode 100644 spec/bundler/bundler/plugin/api/source_spec.rb delete mode 100644 spec/bundler/bundler/plugin/api_spec.rb delete mode 100644 spec/bundler/bundler/plugin/dsl_spec.rb delete mode 100644 spec/bundler/bundler/plugin/index_spec.rb delete mode 100644 spec/bundler/bundler/plugin/installer_spec.rb delete mode 100644 spec/bundler/bundler/plugin/source_list_spec.rb delete mode 100644 spec/bundler/bundler/plugin_spec.rb delete mode 100644 spec/bundler/bundler/psyched_yaml_spec.rb delete mode 100644 spec/bundler/bundler/remote_specification_spec.rb delete mode 100644 spec/bundler/bundler/retry_spec.rb delete mode 100644 spec/bundler/bundler/ruby_dsl_spec.rb delete mode 100644 spec/bundler/bundler/ruby_version_spec.rb delete mode 100644 spec/bundler/bundler/rubygems_integration_spec.rb delete mode 100644 spec/bundler/bundler/settings/validator_spec.rb delete mode 100644 spec/bundler/bundler/settings_spec.rb delete mode 100644 spec/bundler/bundler/shared_helpers_spec.rb delete mode 100644 spec/bundler/bundler/source/git/git_proxy_spec.rb delete mode 100644 spec/bundler/bundler/source/path_spec.rb delete mode 100644 spec/bundler/bundler/source/rubygems/remote_spec.rb delete mode 100644 spec/bundler/bundler/source/rubygems_spec.rb delete mode 100644 spec/bundler/bundler/source_list_spec.rb delete mode 100644 spec/bundler/bundler/source_spec.rb delete mode 100644 spec/bundler/bundler/spec_set_spec.rb delete mode 100644 spec/bundler/bundler/ssl_certs/certificate_manager_spec.rb delete mode 100644 spec/bundler/bundler/stub_specification_spec.rb delete mode 100644 spec/bundler/bundler/ui/shell_spec.rb delete mode 100644 spec/bundler/bundler/ui_spec.rb delete mode 100644 spec/bundler/bundler/uri_credentials_filter_spec.rb delete mode 100644 spec/bundler/bundler/vendored_persistent_spec.rb delete mode 100644 spec/bundler/bundler/version_ranges_spec.rb delete mode 100644 spec/bundler/bundler/worker_spec.rb delete mode 100644 spec/bundler/bundler/yaml_serializer_spec.rb delete mode 100644 spec/bundler/cache/cache_path_spec.rb delete mode 100644 spec/bundler/cache/gems_spec.rb delete mode 100644 spec/bundler/cache/git_spec.rb delete mode 100644 spec/bundler/cache/path_spec.rb delete mode 100644 spec/bundler/cache/platform_spec.rb delete mode 100644 spec/bundler/commands/add_spec.rb delete mode 100644 spec/bundler/commands/binstubs_spec.rb delete mode 100644 spec/bundler/commands/check_spec.rb delete mode 100644 spec/bundler/commands/clean_spec.rb delete mode 100644 spec/bundler/commands/config_spec.rb delete mode 100644 spec/bundler/commands/console_spec.rb delete mode 100644 spec/bundler/commands/doctor_spec.rb delete mode 100644 spec/bundler/commands/exec_spec.rb delete mode 100644 spec/bundler/commands/help_spec.rb delete mode 100644 spec/bundler/commands/info_spec.rb delete mode 100644 spec/bundler/commands/init_spec.rb delete mode 100644 spec/bundler/commands/inject_spec.rb delete mode 100644 spec/bundler/commands/install_spec.rb delete mode 100644 spec/bundler/commands/issue_spec.rb delete mode 100644 spec/bundler/commands/licenses_spec.rb delete mode 100644 spec/bundler/commands/list_spec.rb delete mode 100644 spec/bundler/commands/lock_spec.rb delete mode 100644 spec/bundler/commands/newgem_spec.rb delete mode 100644 spec/bundler/commands/open_spec.rb delete mode 100644 spec/bundler/commands/outdated_spec.rb delete mode 100644 spec/bundler/commands/package_spec.rb delete mode 100644 spec/bundler/commands/pristine_spec.rb delete mode 100644 spec/bundler/commands/show_spec.rb delete mode 100644 spec/bundler/commands/update_spec.rb delete mode 100644 spec/bundler/commands/version_spec.rb delete mode 100644 spec/bundler/commands/viz_spec.rb delete mode 100644 spec/bundler/install/allow_offline_install_spec.rb delete mode 100644 spec/bundler/install/binstubs_spec.rb delete mode 100644 spec/bundler/install/bundler_spec.rb delete mode 100644 spec/bundler/install/deploy_spec.rb delete mode 100644 spec/bundler/install/failure_spec.rb delete mode 100644 spec/bundler/install/force_spec.rb delete mode 100644 spec/bundler/install/gemfile/eval_gemfile_spec.rb delete mode 100644 spec/bundler/install/gemfile/gemspec_spec.rb delete mode 100644 spec/bundler/install/gemfile/git_spec.rb delete mode 100644 spec/bundler/install/gemfile/groups_spec.rb delete mode 100644 spec/bundler/install/gemfile/install_if.rb delete mode 100644 spec/bundler/install/gemfile/lockfile_spec.rb delete mode 100644 spec/bundler/install/gemfile/path_spec.rb delete mode 100644 spec/bundler/install/gemfile/platform_spec.rb delete mode 100644 spec/bundler/install/gemfile/ruby_spec.rb delete mode 100644 spec/bundler/install/gemfile/sources_spec.rb delete mode 100644 spec/bundler/install/gemfile/specific_platform_spec.rb delete mode 100644 spec/bundler/install/gemfile_spec.rb delete mode 100644 spec/bundler/install/gems/compact_index_spec.rb delete mode 100644 spec/bundler/install/gems/dependency_api_spec.rb delete mode 100644 spec/bundler/install/gems/env_spec.rb delete mode 100644 spec/bundler/install/gems/flex_spec.rb delete mode 100644 spec/bundler/install/gems/mirror_spec.rb delete mode 100644 spec/bundler/install/gems/native_extensions_spec.rb delete mode 100644 spec/bundler/install/gems/post_install_spec.rb delete mode 100644 spec/bundler/install/gems/resolving_spec.rb delete mode 100644 spec/bundler/install/gems/standalone_spec.rb delete mode 100644 spec/bundler/install/gems/sudo_spec.rb delete mode 100644 spec/bundler/install/gems/win32_spec.rb delete mode 100644 spec/bundler/install/gemspecs_spec.rb delete mode 100644 spec/bundler/install/git_spec.rb delete mode 100644 spec/bundler/install/global_cache_spec.rb delete mode 100644 spec/bundler/install/path_spec.rb delete mode 100644 spec/bundler/install/post_bundle_message_spec.rb delete mode 100644 spec/bundler/install/prereleases_spec.rb delete mode 100644 spec/bundler/install/process_lock_spec.rb delete mode 100644 spec/bundler/install/security_policy_spec.rb delete mode 100644 spec/bundler/install/yanked_spec.rb delete mode 100644 spec/bundler/lock/git_spec.rb delete mode 100644 spec/bundler/lock/lockfile_bundler_1_spec.rb delete mode 100644 spec/bundler/lock/lockfile_spec.rb delete mode 100644 spec/bundler/other/bundle_ruby_spec.rb delete mode 100644 spec/bundler/other/cli_dispatch_spec.rb delete mode 100644 spec/bundler/other/compatibility_guard_spec.rb delete mode 100644 spec/bundler/other/ext_spec.rb delete mode 100644 spec/bundler/other/major_deprecation_spec.rb delete mode 100644 spec/bundler/other/platform_spec.rb delete mode 100644 spec/bundler/other/ssl_cert_spec.rb delete mode 100644 spec/bundler/plugins/command_spec.rb delete mode 100644 spec/bundler/plugins/hook_spec.rb delete mode 100644 spec/bundler/plugins/install_spec.rb delete mode 100644 spec/bundler/plugins/source/example_spec.rb delete mode 100644 spec/bundler/plugins/source_spec.rb delete mode 100644 spec/bundler/quality_spec.rb delete mode 100644 spec/bundler/realworld/dependency_api_spec.rb delete mode 100644 spec/bundler/realworld/double_check_spec.rb delete mode 100644 spec/bundler/realworld/edgecases_spec.rb delete mode 100644 spec/bundler/realworld/gemfile_source_header_spec.rb delete mode 100644 spec/bundler/realworld/mirror_probe_spec.rb delete mode 100644 spec/bundler/realworld/parallel_spec.rb delete mode 100644 spec/bundler/resolver/basic_spec.rb delete mode 100644 spec/bundler/resolver/platform_spec.rb delete mode 100644 spec/bundler/runtime/executable_spec.rb delete mode 100644 spec/bundler/runtime/gem_tasks_spec.rb delete mode 100644 spec/bundler/runtime/inline_spec.rb delete mode 100644 spec/bundler/runtime/load_spec.rb delete mode 100644 spec/bundler/runtime/platform_spec.rb delete mode 100644 spec/bundler/runtime/require_spec.rb delete mode 100644 spec/bundler/runtime/setup_spec.rb delete mode 100644 spec/bundler/runtime/with_clean_env_spec.rb delete mode 100644 spec/bundler/spec_helper.rb delete mode 100644 spec/bundler/support/artifice/compact_index.rb delete mode 100644 spec/bundler/support/artifice/compact_index_api_missing.rb delete mode 100644 spec/bundler/support/artifice/compact_index_basic_authentication.rb delete mode 100644 spec/bundler/support/artifice/compact_index_checksum_mismatch.rb delete mode 100644 spec/bundler/support/artifice/compact_index_concurrent_download.rb delete mode 100644 spec/bundler/support/artifice/compact_index_creds_diff_host.rb delete mode 100644 spec/bundler/support/artifice/compact_index_extra.rb delete mode 100644 spec/bundler/support/artifice/compact_index_extra_api.rb delete mode 100644 spec/bundler/support/artifice/compact_index_extra_api_missing.rb delete mode 100644 spec/bundler/support/artifice/compact_index_extra_missing.rb delete mode 100644 spec/bundler/support/artifice/compact_index_forbidden.rb delete mode 100644 spec/bundler/support/artifice/compact_index_host_redirect.rb delete mode 100644 spec/bundler/support/artifice/compact_index_no_gem.rb delete mode 100644 spec/bundler/support/artifice/compact_index_partial_update.rb delete mode 100644 spec/bundler/support/artifice/compact_index_redirects.rb delete mode 100644 spec/bundler/support/artifice/compact_index_strict_basic_authentication.rb delete mode 100644 spec/bundler/support/artifice/compact_index_wrong_dependencies.rb delete mode 100644 spec/bundler/support/artifice/compact_index_wrong_gem_checksum.rb delete mode 100644 spec/bundler/support/artifice/endopint_marshal_fail_basic_authentication.rb delete mode 100644 spec/bundler/support/artifice/endpoint.rb delete mode 100644 spec/bundler/support/artifice/endpoint_500.rb delete mode 100644 spec/bundler/support/artifice/endpoint_api_forbidden.rb delete mode 100644 spec/bundler/support/artifice/endpoint_api_missing.rb delete mode 100644 spec/bundler/support/artifice/endpoint_basic_authentication.rb delete mode 100644 spec/bundler/support/artifice/endpoint_creds_diff_host.rb delete mode 100644 spec/bundler/support/artifice/endpoint_extra.rb delete mode 100644 spec/bundler/support/artifice/endpoint_extra_api.rb delete mode 100644 spec/bundler/support/artifice/endpoint_extra_missing.rb delete mode 100644 spec/bundler/support/artifice/endpoint_fallback.rb delete mode 100644 spec/bundler/support/artifice/endpoint_host_redirect.rb delete mode 100644 spec/bundler/support/artifice/endpoint_marshal_fail.rb delete mode 100644 spec/bundler/support/artifice/endpoint_mirror_source.rb delete mode 100644 spec/bundler/support/artifice/endpoint_redirect.rb delete mode 100644 spec/bundler/support/artifice/endpoint_strict_basic_authentication.rb delete mode 100644 spec/bundler/support/artifice/endpoint_timeout.rb delete mode 100644 spec/bundler/support/artifice/fail.rb delete mode 100644 spec/bundler/support/artifice/vcr.rb delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/api.rubygems.org/api/v1/dependencies-gems=bundler/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/api.rubygems.org/api/v1/dependencies-gems=bundler/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/api.rubygems.org/api/v1/dependencies/HEAD/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/api.rubygems.org/api/v1/dependencies/HEAD/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/api.rubygems.org/gems/bundler-1.12.3.gem/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/api.rubygems.org/gems/bundler-1.12.3.gem/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/api.rubygems.org/quick/Marshal.4.8/bundler-1.12.3.gemspec.rz/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/api.rubygems.org/quick/Marshal.4.8/bundler-1.12.3.gemspec.rz/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/api.rubygems.org/specs.4.8.gz/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/api.rubygems.org/specs.4.8.gz/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/CFPropertyList/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/CFPropertyList/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/ParseTree/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/ParseTree/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/RedCloth/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/RedCloth/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/RubyInline/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/RubyInline/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/SexpProcessor/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/SexpProcessor/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/ZenTest/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/ZenTest/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/abstract/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/abstract/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/actioncable/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/actioncable/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/actionmailer/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/actionmailer/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/actionpack/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/actionpack/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/actionview/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/actionview/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/actionwebservice/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/actionwebservice/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/activejob/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/activejob/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/activemodel-globalid/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/activemodel-globalid/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/activemodel/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/activemodel/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/activerecord-deprecated_finders/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/activerecord-deprecated_finders/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/activerecord/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/activerecord/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/activeresource/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/activeresource/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/activesupport/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/activesupport/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/adamantium/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/adamantium/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/addressable/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/addressable/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/allison/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/allison/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/ansi/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/ansi/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/archive-tar-minitar/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/archive-tar-minitar/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/arel/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/arel/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/ast/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/ast/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/astrolabe/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/astrolabe/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/atomic/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/atomic/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/autoparse/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/autoparse/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/axiom-types/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/axiom-types/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/backports/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/backports/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/bacon/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/bacon/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/bcrypt-ruby/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/bcrypt-ruby/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/bcrypt/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/bcrypt/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/bcrypt_pbkdf/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/bcrypt_pbkdf/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/bones-extras/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/bones-extras/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/bones-git/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/bones-git/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/bones-rcov/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/bones-rcov/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/bones-rspec/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/bones-rspec/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/bones-rubyforge/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/bones-rubyforge/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/bones-zentest/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/bones-zentest/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/bones/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/bones/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/builder/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/builder/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/bundler/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/bundler/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/camping/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/camping/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/capybara/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/capybara/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/celerity/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/celerity/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/celluloid-essentials/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/celluloid-essentials/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/celluloid-extras/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/celluloid-extras/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/celluloid-fsm/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/celluloid-fsm/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/celluloid-io/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/celluloid-io/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/celluloid-pool/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/celluloid-pool/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/celluloid-supervision/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/celluloid-supervision/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/celluloid/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/celluloid/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/cgi_multipart_eof_fix/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/cgi_multipart_eof_fix/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/childprocess/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/childprocess/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/climate_control/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/climate_control/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/cocaine/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/cocaine/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/coercible/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/coercible/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/coffee-rails/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/coffee-rails/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/coffee-script-source/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/coffee-script-source/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/coffee-script/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/coffee-script/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/colorize/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/colorize/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/concurrent-ruby/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/concurrent-ruby/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/configuration/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/configuration/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/coveralls/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/coveralls/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/crass/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/crass/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/cucumber-core/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/cucumber-core/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/cucumber-wire/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/cucumber-wire/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/cucumber/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/cucumber/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/culerity/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/culerity/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/curses/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/curses/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/daemons/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/daemons/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/database_cleaner/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/database_cleaner/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/declarative-option/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/declarative-option/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/declarative/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/declarative/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/descendants_tracker/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/descendants_tracker/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/diff-lcs/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/diff-lcs/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/docile/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/docile/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/domain_name/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/domain_name/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/dotenv-deployment/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/dotenv-deployment/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/dotenv/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/dotenv/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/echoe/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/echoe/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/em-hiredis/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/em-hiredis/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/english/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/english/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/equalizer/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/equalizer/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/erubi/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/erubi/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/erubis/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/erubis/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/escape_utils/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/escape_utils/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/et-orbi/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/et-orbi/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/event-bus/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/event-bus/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/eventmachine-le/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/eventmachine-le/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/eventmachine/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/eventmachine/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/execjs/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/execjs/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/extlib/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/extlib/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/facets/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/facets/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/facter/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/facter/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/faker/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/faker/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/faraday/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/faraday/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/fastthread/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/fastthread/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/faye-websocket/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/faye-websocket/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/fcgi/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/fcgi/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/ffi-win32-extensions/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/ffi-win32-extensions/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/ffi/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/ffi/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/flexmock/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/flexmock/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/functional-ruby/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/functional-ruby/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/gem_plugin/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/gem_plugin/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/gemcutter/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/gemcutter/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/gherkin/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/gherkin/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/gherkin3/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/gherkin3/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/git/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/git/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/globalid/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/globalid/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/google-api-client/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/google-api-client/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/googleauth/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/googleauth/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/gxapi_rails/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/gxapi_rails/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/hashie/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/hashie/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/highline/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/highline/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/hike/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/hike/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/hiredis/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/hiredis/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/hitimes/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/hitimes/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/hoe/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/hoe/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/hooks/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/hooks/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/http-cookie/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/http-cookie/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/http_parser.rb/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/http_parser.rb/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/httpadapter/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/httpadapter/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/httpclient/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/httpclient/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/hurley/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/hurley/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/i18n/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/i18n/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/ice_nine/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/ice_nine/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/journey/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/journey/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/jruby-pageant/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/jruby-pageant/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/json/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/json/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/json_pure/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/json_pure/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/jwt/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/jwt/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/language/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/language/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/launchy/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/launchy/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/libwebsocket/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/libwebsocket/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/libxml-ruby/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/libxml-ruby/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/liquid/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/liquid/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/listen/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/listen/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/little-plugger/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/little-plugger/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/lockfile/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/lockfile/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/logging/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/logging/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/loofah/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/loofah/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/loquacious/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/loquacious/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/mab/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/mab/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/mail/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/mail/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/markaby/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/markaby/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/memcache-client/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/memcache-client/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/memoist/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/memoist/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/memoizable/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/memoizable/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/metaclass/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/metaclass/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/metaid/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/metaid/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/method_source/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/method_source/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/mime-types-data/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/mime-types-data/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/mime-types/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/mime-types/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/mimemagic/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/mimemagic/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/mini_portile/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/mini_portile/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/mini_portile2/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/mini_portile2/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/minitar-cli/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/minitar-cli/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/minitar/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/minitar/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/minitest/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/minitest/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/mkrf/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/mkrf/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/mocha/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/mocha/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/mongrel/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/mongrel/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/mono_logger/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/mono_logger/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/multi_json/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/multi_json/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/multi_test/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/multi_test/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/multimap/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/multimap/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/multipart-post/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/multipart-post/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/mustermann/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/mustermann/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/needle/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/needle/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/nenv/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/nenv/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/net-scp/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/net-scp/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/net-ssh/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/net-ssh/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/netrc/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/netrc/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/newgem/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/newgem/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/nio4r/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/nio4r/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/nokogiri/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/nokogiri/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/os/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/os/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/paperclip/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/paperclip/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/parser/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/parser/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/pattern-match/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/pattern-match/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/pkg-config/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/pkg-config/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/polyglot/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/polyglot/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/power_assert/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/power_assert/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/powerbar/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/powerbar/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/powerpack/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/powerpack/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/preforker/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/preforker/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/public_suffix/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/public_suffix/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/racc/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/racc/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/rack-cache/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/rack-cache/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/rack-mount/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/rack-mount/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/rack-protection/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/rack-protection/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/rack-ssl/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/rack-ssl/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/rack-test/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/rack-test/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/rack/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/rack/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/rails-deprecated_sanitizer/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/rails-deprecated_sanitizer/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/rails-dom-testing/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/rails-dom-testing/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/rails-html-sanitizer/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/rails-html-sanitizer/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/rails-observers/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/rails-observers/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/rails/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/rails/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/railties/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/railties/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/rainbow/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/rainbow/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/rake-compiler/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/rake-compiler/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/rake/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/rake/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/rb-fchange/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/rb-fchange/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/rb-fsevent/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/rb-fsevent/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/rb-inotify/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/rb-inotify/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/rb-kqueue/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/rb-kqueue/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/rbnacl-libsodium/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/rbnacl-libsodium/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/rbnacl/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/rbnacl/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/rcov/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/rcov/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/rdoc/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/rdoc/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/redis-namespace/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/redis-namespace/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/redis/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/redis/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/ref/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/ref/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/representable/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/representable/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/resque-scheduler/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/resque-scheduler/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/resque/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/resque/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/rest-client/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/rest-client/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/retriable/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/retriable/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/rexical/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/rexical/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/right_aws/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/right_aws/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/right_http_connection/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/right_http_connection/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/rspec-core/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/rspec-core/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/rspec-expectations/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/rspec-expectations/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/rspec-logsplit/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/rspec-logsplit/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/rspec-mocks/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/rspec-mocks/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/rspec-support/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/rspec-support/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/rspec/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/rspec/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/rubigen/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/rubigen/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/rubocop/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/rubocop/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/ruby-openid/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/ruby-openid/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/ruby-progressbar/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/ruby-progressbar/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/ruby-yadis/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/ruby-yadis/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/ruby_dep/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/ruby_dep/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/ruby_parser/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/ruby_parser/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/rubyforge/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/rubyforge/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/rubyzip/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/rubyzip/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/rufus-scheduler/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/rufus-scheduler/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/sass-listen/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/sass-listen/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/sass-rails/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/sass-rails/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/sass/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/sass/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/selenium-webdriver/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/selenium-webdriver/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/sexp_processor/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/sexp_processor/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/shotgun/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/shotgun/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/signet/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/signet/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/simplecov-html/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/simplecov-html/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/simplecov/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/simplecov/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/sinatra/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/sinatra/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/slop/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/slop/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/spicycode-rcov/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/spicycode-rcov/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/spoon/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/spoon/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/sprockets-rails/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/sprockets-rails/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/sprockets/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/sprockets/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/spruz/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/spruz/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/sqlite3/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/sqlite3/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/syntax/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/syntax/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/sys-admin/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/sys-admin/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/tenderlove-frex/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/tenderlove-frex/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/term-ansicolor/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/term-ansicolor/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/termios/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/termios/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/test-spec/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/test-spec/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/test-unit/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/test-unit/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/text-format/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/text-format/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/text-hyphen/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/text-hyphen/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/thin/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/thin/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/thor/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/thor/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/thoughtbot-shoulda/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/thoughtbot-shoulda/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/thread_safe/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/thread_safe/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/tilt/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/tilt/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/timers/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/timers/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/tins/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/tins/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/tlsmail/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/tlsmail/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/tool/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/tool/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/treetop/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/treetop/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/trollop/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/trollop/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/tzinfo/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/tzinfo/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/uber/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/uber/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/unf/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/unf/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/unf_ext/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/unf_ext/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/unicode-display_width/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/unicode-display_width/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/uuidtools/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/uuidtools/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/vegas/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/vegas/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/virtus/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/virtus/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/weakling/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/weakling/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/websocket-driver/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/websocket-driver/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/websocket-extensions/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/websocket-extensions/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/websocket/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/websocket/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/win32-api/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/win32-api/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/win32-dir/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/win32-dir/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/win32-security/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/win32-security/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/win32console/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/win32console/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/windows-api/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/windows-api/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/windows-pr/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/windows-pr/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/xpath/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/xpath/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/versions/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/versions/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/rubygems.org/gems/activesupport-3.2.12.gem/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/rubygems.org/gems/activesupport-3.2.12.gem/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/rubygems.org/gems/activesupport-3.2.22.5.gem/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/rubygems.org/gems/activesupport-3.2.22.5.gem/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/rubygems.org/gems/bundler-1.12.3.gem/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/rubygems.org/gems/bundler-1.12.3.gem/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/rubygems.org/gems/diff-lcs-1.3.gem/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/rubygems.org/gems/diff-lcs-1.3.gem/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/rubygems.org/gems/faker-1.1.2.gem/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/rubygems.org/gems/faker-1.1.2.gem/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/rubygems.org/gems/i18n-0.6.11.gem/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/rubygems.org/gems/i18n-0.6.11.gem/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/rubygems.org/gems/i18n-0.8.1.gem/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/rubygems.org/gems/i18n-0.8.1.gem/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/rubygems.org/gems/mono_logger-1.1.0.gem/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/rubygems.org/gems/mono_logger-1.1.0.gem/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/rubygems.org/gems/multi_json-1.12.1.gem/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/rubygems.org/gems/multi_json-1.12.1.gem/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/rubygems.org/gems/rack-1.0.1.gem/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/rubygems.org/gems/rack-1.0.1.gem/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/rubygems.org/gems/rack-1.6.5.gem/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/rubygems.org/gems/rack-1.6.5.gem/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/rubygems.org/gems/rack-2.0.1.gem/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/rubygems.org/gems/rack-2.0.1.gem/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/rubygems.org/gems/rack-protection-1.5.3.gem/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/rubygems.org/gems/rack-protection-1.5.3.gem/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/rubygems.org/gems/redis-3.3.3.gem/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/rubygems.org/gems/redis-3.3.3.gem/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/rubygems.org/gems/redis-namespace-1.5.3.gem/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/rubygems.org/gems/redis-namespace-1.5.3.gem/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/rubygems.org/gems/resque-1.24.1.gem/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/rubygems.org/gems/resque-1.24.1.gem/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/rubygems.org/gems/resque-scheduler-2.2.0.gem/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/rubygems.org/gems/resque-scheduler-2.2.0.gem/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/rubygems.org/gems/rufus-scheduler-2.0.24.gem/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/rubygems.org/gems/rufus-scheduler-2.0.24.gem/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/rubygems.org/gems/sinatra-1.4.8.gem/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/rubygems.org/gems/sinatra-1.4.8.gem/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/rubygems.org/gems/thread_safe-0.3.6.gem/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/rubygems.org/gems/thread_safe-0.3.6.gem/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/rubygems.org/gems/tilt-2.0.7.gem/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/rubygems.org/gems/tilt-2.0.7.gem/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/rubygems.org/gems/tzinfo-1.2.3.gem/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/rubygems.org/gems/tzinfo-1.2.3.gem/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/rubygems.org/gems/vegas-0.1.11.gem/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/rubygems.org/gems/vegas-0.1.11.gem/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/rubygems.org/quick/Marshal.4.8/bundler-1.12.3.gemspec.rz/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/rubygems.org/quick/Marshal.4.8/bundler-1.12.3.gemspec.rz/GET/response delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/rubygems.org/specs.4.8.gz/GET/request delete mode 100644 spec/bundler/support/artifice/vcr_cassettes/realworld/rubygems.org/specs.4.8.gz/GET/response delete mode 100644 spec/bundler/support/artifice/windows.rb delete mode 100644 spec/bundler/support/builders.rb delete mode 100644 spec/bundler/support/code_climate.rb delete mode 100644 spec/bundler/support/command_execution.rb delete mode 100644 spec/bundler/support/hax.rb delete mode 100644 spec/bundler/support/helpers.rb delete mode 100644 spec/bundler/support/indexes.rb delete mode 100644 spec/bundler/support/less_than_proc.rb delete mode 100644 spec/bundler/support/manpages.rb delete mode 100644 spec/bundler/support/matchers.rb delete mode 100644 spec/bundler/support/path.rb delete mode 100644 spec/bundler/support/permissions.rb delete mode 100644 spec/bundler/support/platforms.rb delete mode 100644 spec/bundler/support/rubygems_ext.rb delete mode 100644 spec/bundler/support/silent_logger.rb delete mode 100644 spec/bundler/support/sometimes.rb delete mode 100644 spec/bundler/support/streams.rb delete mode 100644 spec/bundler/support/sudo.rb delete mode 100644 spec/bundler/support/the_bundle.rb delete mode 100644 spec/bundler/update/gems/post_install_spec.rb delete mode 100644 spec/bundler/update/git_spec.rb delete mode 100644 spec/bundler/update/path_spec.rb diff --git a/LEGAL b/LEGAL index 84eecccad3..4db39d5453 100644 --- a/LEGAL +++ b/LEGAL @@ -845,32 +845,3 @@ test/rubygems: IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. - -lib/bundler: -lib/bundler.rb: -lib/bundler.gemspec: -spec/bundler: - - Portions copyright (c) 2010 Andre Arko - Portions copyright (c) 2009 Engine Yard - - MIT License - - Permission is hereby granted, free of charge, to any person obtaining - a copy of this software and associated documentation files (the - "Software"), to deal in the Software without restriction, including - without limitation the rights to use, copy, modify, merge, publish, - distribute, sublicense, and/or sell copies of the Software, and to - permit persons to whom the Software is furnished to do so, subject to - the following conditions: - - The above copyright notice and this permission notice shall be - included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE - LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION - OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION - WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/NEWS b/NEWS index 05ebb37717..1cfbedad37 100644 --- a/NEWS +++ b/NEWS @@ -236,12 +236,6 @@ with all sufficient information, see the ChangeLog file or Redmine * BigDecimal#dup -* Bundler - - * Add Bundler to Standard Library. [Feature #12733] - - * Use 1.16.1. It's latest stable version. - * Coverage * Support branch coverage and method coverage [Feature #13901] diff --git a/bin/bundle b/bin/bundle deleted file mode 100755 index aaf773745d..0000000000 --- a/bin/bundle +++ /dev/null @@ -1,31 +0,0 @@ -#!/usr/bin/env ruby -# frozen_string_literal: true - -# Exit cleanly from an early interrupt -Signal.trap("INT") do - Bundler.ui.debug("\n#{caller.join("\n")}") if defined?(Bundler) - exit 1 -end - -require "bundler" -# Check if an older version of bundler is installed -$LOAD_PATH.each do |path| - next unless path =~ %r{/bundler-0\.(\d+)} && $1.to_i < 9 - err = String.new - err << "Looks like you have a version of bundler that's older than 0.9.\n" - err << "Please remove your old versions.\n" - err << "An easy way to do this is by running `gem cleanup bundler`." - abort(err) -end - -require "bundler/friendly_errors" -Bundler.with_friendly_errors do - require "bundler/cli" - - # Allow any command to use --help flag to show help for that command - help_flags = %w[--help -h] - help_flag_used = ARGV.any? {|a| help_flags.include? a } - args = help_flag_used ? Bundler::CLI.reformatted_help_args(ARGV) : ARGV - - Bundler::CLI.start(args, :debug => true) -end diff --git a/bin/bundler b/bin/bundler deleted file mode 100755 index d9131fe834..0000000000 --- a/bin/bundler +++ /dev/null @@ -1,4 +0,0 @@ -#!/usr/bin/env ruby -# frozen_string_literal: true - -load File.expand_path("../bundle", __FILE__) diff --git a/common.mk b/common.mk index f9b5b07748..d442710a8f 100644 --- a/common.mk +++ b/common.mk @@ -1182,21 +1182,6 @@ yes-test-bundled-gems: test-bundled-gems-run no-test-bundled-gems: test-bundled-gems-run: $(PREPARE_BUNDLED_GEMS) -test-bundler-precheck: $(arch)-fake.rb programs - -yes-test-bundler-prepare: test-bundler-precheck - $(XRUBY) -C "$(srcdir)" bin/gem install --no-ri --no-rdoc \ - --install-dir .bundle --conservative "rspec:~> 3.5" - -RSPECOPTS = --format progress -BUNDLER_SPECS = -test-bundler: $(TEST_RUNNABLE)-test-bundler -yes-test-bundler: yes-test-bundler-prepare - $(gnumake_recursive)$(Q) \ - $(XRUBY) -C $(srcdir) -Ispec/bundler .bundle/bin/rspec \ - --require spec_helper $(RSPECOPTS) spec/bundler/$(BUNDLER_SPECS) -no-test-bundler: - UNICODE_FILES = $(UNICODE_SRC_DATA_DIR)/UnicodeData.txt \ $(UNICODE_SRC_DATA_DIR)/CompositionExclusions.txt \ $(UNICODE_SRC_DATA_DIR)/NormalizationTest.txt \ @@ -1368,7 +1353,6 @@ help: PHONY " test-all: all ruby tests [TESTOPTS=-j4 TESTS=]" \ " test-spec: run the Ruby spec suite" \ " test-rubyspec: same as test-spec" \ - " test-bundler: run the Bundler spec" \ " test-bundled-gems: run the test suite of bundled gems" \ " up: update local copy and autogenerated files" \ " benchmark: benchmark this ruby and COMPARE_RUBY." \ diff --git a/defs/gmake.mk b/defs/gmake.mk index 5305790e6f..d961e27f77 100644 --- a/defs/gmake.mk +++ b/defs/gmake.mk @@ -61,7 +61,7 @@ endif ORDERED_TEST_TARGETS := $(filter $(TEST_TARGETS), \ btest-ruby test-knownbug test-basic \ test-testframework test-ruby test-almost test-all \ - test-spec test-bundler-prepare test-bundler \ + test-spec \ ) prev_test := $(if $(filter test-spec,$(ORDERED_TEST_TARGETS)),test-spec-precheck) $(foreach test,$(ORDERED_TEST_TARGETS), \ diff --git a/doc/maintainers.rdoc b/doc/maintainers.rdoc index 0cae82c419..382a4e2cbf 100644 --- a/doc/maintainers.rdoc +++ b/doc/maintainers.rdoc @@ -208,9 +208,6 @@ Zachary Scott (zzak) === Libraries -[lib/bundler.rb, lib/bundler/*] - Hiroshi SHIBATA (hsbt) - https://github.com/bundler/bundler [lib/cmath.rb] _unmaintained_ https://github.com/ruby/cmath diff --git a/lib/bundler.gemspec b/lib/bundler.gemspec deleted file mode 100644 index 227191b090..0000000000 --- a/lib/bundler.gemspec +++ /dev/null @@ -1,347 +0,0 @@ -# coding: utf-8 -# frozen_string_literal: true - -begin - require File.expand_path("../lib/bundler/version", __FILE__) -rescue LoadError # for Ruby core repository - require File.expand_path("../bundler/version", __FILE__) -end -require "shellwords" - -Gem::Specification.new do |s| - s.name = "bundler" - s.version = Bundler::VERSION - s.license = "MIT" - s.authors = [ - "André Arko", "Samuel Giddins", "Chris Morris", "James Wen", "Tim Moore", - "André Medeiros", "Jessica Lynn Suttles", "Terence Lee", "Carl Lerche", - "Yehuda Katz" - ] - s.email = ["team@bundler.io"] - s.homepage = "http://bundler.io" - s.summary = "The best way to manage your application's dependencies" - s.description = "Bundler manages an application's dependencies through its entire life, across many machines, systematically and repeatably" - - if s.respond_to?(:metadata=) - s.metadata = { - "bug_tracker_uri" => "http://github.com/bundler/bundler/issues", - "changelog_uri" => "https://github.com/bundler/bundler/blob/master/CHANGELOG.md", - "homepage_uri" => "https://bundler.io/", - "source_code_uri" => "http://github.com/bundler/bundler/", - } - end - - if s.version >= Gem::Version.new("2.a".dup) - s.required_ruby_version = ">= 2.3.0" - s.required_rubygems_version = ">= 2.5.0" - else - s.required_ruby_version = ">= 1.8.7" - s.required_rubygems_version = ">= 1.3.6" - end - - s.add_development_dependency "automatiek", "~> 0.1.0" - s.add_development_dependency "mustache", "0.99.6" - s.add_development_dependency "rake", "~> 10.0" - s.add_development_dependency "rdiscount", "~> 2.2" - s.add_development_dependency "ronn", "~> 0.7.3" - s.add_development_dependency "rspec", "~> 3.6" - - s.files = %w[ - exe/bundle - exe/bundle_ruby - exe/bundler - lib/bundler.rb - lib/bundler/build_metadata.rb - lib/bundler/capistrano.rb - lib/bundler/cli.rb - lib/bundler/cli/add.rb - lib/bundler/cli/binstubs.rb - lib/bundler/cli/cache.rb - lib/bundler/cli/check.rb - lib/bundler/cli/clean.rb - lib/bundler/cli/common.rb - lib/bundler/cli/config.rb - lib/bundler/cli/console.rb - lib/bundler/cli/doctor.rb - lib/bundler/cli/exec.rb - lib/bundler/cli/gem.rb - lib/bundler/cli/info.rb - lib/bundler/cli/init.rb - lib/bundler/cli/inject.rb - lib/bundler/cli/install.rb - lib/bundler/cli/issue.rb - lib/bundler/cli/list.rb - lib/bundler/cli/lock.rb - lib/bundler/cli/open.rb - lib/bundler/cli/outdated.rb - lib/bundler/cli/package.rb - lib/bundler/cli/platform.rb - lib/bundler/cli/plugin.rb - lib/bundler/cli/pristine.rb - lib/bundler/cli/show.rb - lib/bundler/cli/update.rb - lib/bundler/cli/viz.rb - lib/bundler/compact_index_client.rb - lib/bundler/compact_index_client/cache.rb - lib/bundler/compact_index_client/updater.rb - lib/bundler/compatibility_guard.rb - lib/bundler/constants.rb - lib/bundler/current_ruby.rb - lib/bundler/definition.rb - lib/bundler/dep_proxy.rb - lib/bundler/dependency.rb - lib/bundler/deployment.rb - lib/bundler/deprecate.rb - lib/bundler/dsl.rb - lib/bundler/endpoint_specification.rb - lib/bundler/env.rb - lib/bundler/environment_preserver.rb - lib/bundler/errors.rb - lib/bundler/feature_flag.rb - lib/bundler/fetcher.rb - lib/bundler/fetcher/base.rb - lib/bundler/fetcher/compact_index.rb - lib/bundler/fetcher/dependency.rb - lib/bundler/fetcher/downloader.rb - lib/bundler/fetcher/index.rb - lib/bundler/friendly_errors.rb - lib/bundler/gem_helper.rb - lib/bundler/gem_helpers.rb - lib/bundler/gem_remote_fetcher.rb - lib/bundler/gem_tasks.rb - lib/bundler/gem_version_promoter.rb - lib/bundler/gemdeps.rb - lib/bundler/graph.rb - lib/bundler/index.rb - lib/bundler/injector.rb - lib/bundler/inline.rb - lib/bundler/installer.rb - lib/bundler/installer/gem_installer.rb - lib/bundler/installer/parallel_installer.rb - lib/bundler/installer/standalone.rb - lib/bundler/lazy_specification.rb - lib/bundler/lockfile_generator.rb - lib/bundler/lockfile_parser.rb - lib/bundler/match_platform.rb - lib/bundler/mirror.rb - lib/bundler/plugin.rb - lib/bundler/plugin/api.rb - lib/bundler/plugin/api/source.rb - lib/bundler/plugin/dsl.rb - lib/bundler/plugin/index.rb - lib/bundler/plugin/installer.rb - lib/bundler/plugin/installer/git.rb - lib/bundler/plugin/installer/rubygems.rb - lib/bundler/plugin/source_list.rb - lib/bundler/process_lock.rb - lib/bundler/psyched_yaml.rb - lib/bundler/remote_specification.rb - lib/bundler/resolver.rb - lib/bundler/resolver/spec_group.rb - lib/bundler/retry.rb - lib/bundler/ruby_dsl.rb - lib/bundler/ruby_version.rb - lib/bundler/rubygems_ext.rb - lib/bundler/rubygems_gem_installer.rb - lib/bundler/rubygems_integration.rb - lib/bundler/runtime.rb - lib/bundler/settings.rb - lib/bundler/settings/validator.rb - lib/bundler/setup.rb - lib/bundler/shared_helpers.rb - lib/bundler/similarity_detector.rb - lib/bundler/source.rb - lib/bundler/source/gemspec.rb - lib/bundler/source/git.rb - lib/bundler/source/git/git_proxy.rb - lib/bundler/source/metadata.rb - lib/bundler/source/path.rb - lib/bundler/source/path/installer.rb - lib/bundler/source/rubygems.rb - lib/bundler/source/rubygems/remote.rb - lib/bundler/source_list.rb - lib/bundler/spec_set.rb - lib/bundler/ssl_certs/.document - lib/bundler/ssl_certs/certificate_manager.rb - lib/bundler/ssl_certs/index.rubygems.org/GlobalSignRootCA.pem - lib/bundler/ssl_certs/rubygems.global.ssl.fastly.net/DigiCertHighAssuranceEVRootCA.pem - lib/bundler/ssl_certs/rubygems.org/AddTrustExternalCARoot.pem - lib/bundler/stub_specification.rb - lib/bundler/templates/.document - lib/bundler/templates/Executable - lib/bundler/templates/Executable.bundler - lib/bundler/templates/Executable.standalone - lib/bundler/templates/Gemfile - lib/bundler/templates/gems.rb - lib/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt - lib/bundler/templates/newgem/Gemfile.tt - lib/bundler/templates/newgem/LICENSE.txt.tt - lib/bundler/templates/newgem/README.md.tt - lib/bundler/templates/newgem/Rakefile.tt - lib/bundler/templates/newgem/bin/console.tt - lib/bundler/templates/newgem/bin/setup.tt - lib/bundler/templates/newgem/exe/newgem.tt - lib/bundler/templates/newgem/ext/newgem/extconf.rb.tt - lib/bundler/templates/newgem/ext/newgem/newgem.c.tt - lib/bundler/templates/newgem/ext/newgem/newgem.h.tt - lib/bundler/templates/newgem/gitignore.tt - lib/bundler/templates/newgem/lib/newgem.rb.tt - lib/bundler/templates/newgem/lib/newgem/version.rb.tt - lib/bundler/templates/newgem/newgem.gemspec.tt - lib/bundler/templates/newgem/rspec.tt - lib/bundler/templates/newgem/spec/newgem_spec.rb.tt - lib/bundler/templates/newgem/spec/spec_helper.rb.tt - lib/bundler/templates/newgem/test/newgem_test.rb.tt - lib/bundler/templates/newgem/test/test_helper.rb.tt - lib/bundler/templates/newgem/travis.yml.tt - lib/bundler/ui.rb - lib/bundler/ui/rg_proxy.rb - lib/bundler/ui/shell.rb - lib/bundler/ui/silent.rb - lib/bundler/uri_credentials_filter.rb - lib/bundler/vendor/fileutils/lib/fileutils.rb - lib/bundler/vendor/molinillo/lib/molinillo.rb - lib/bundler/vendor/molinillo/lib/molinillo/compatibility.rb - lib/bundler/vendor/molinillo/lib/molinillo/delegates/resolution_state.rb - lib/bundler/vendor/molinillo/lib/molinillo/delegates/specification_provider.rb - lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb - lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/action.rb - lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb - lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_vertex.rb - lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/delete_edge.rb - lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb - lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/log.rb - lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/set_payload.rb - lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb - lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb - lib/bundler/vendor/molinillo/lib/molinillo/errors.rb - lib/bundler/vendor/molinillo/lib/molinillo/gem_metadata.rb - lib/bundler/vendor/molinillo/lib/molinillo/modules/specification_provider.rb - lib/bundler/vendor/molinillo/lib/molinillo/modules/ui.rb - lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb - lib/bundler/vendor/molinillo/lib/molinillo/resolver.rb - lib/bundler/vendor/molinillo/lib/molinillo/state.rb - lib/bundler/vendor/net-http-persistent/lib/net/http/faster.rb - lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb - lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/ssl_reuse.rb - lib/bundler/vendor/thor/lib/thor.rb - lib/bundler/vendor/thor/lib/thor/actions.rb - lib/bundler/vendor/thor/lib/thor/actions/create_file.rb - lib/bundler/vendor/thor/lib/thor/actions/create_link.rb - lib/bundler/vendor/thor/lib/thor/actions/directory.rb - lib/bundler/vendor/thor/lib/thor/actions/empty_directory.rb - lib/bundler/vendor/thor/lib/thor/actions/file_manipulation.rb - lib/bundler/vendor/thor/lib/thor/actions/inject_into_file.rb - lib/bundler/vendor/thor/lib/thor/base.rb - lib/bundler/vendor/thor/lib/thor/command.rb - lib/bundler/vendor/thor/lib/thor/core_ext/hash_with_indifferent_access.rb - lib/bundler/vendor/thor/lib/thor/core_ext/io_binary_read.rb - lib/bundler/vendor/thor/lib/thor/core_ext/ordered_hash.rb - lib/bundler/vendor/thor/lib/thor/error.rb - lib/bundler/vendor/thor/lib/thor/group.rb - lib/bundler/vendor/thor/lib/thor/invocation.rb - lib/bundler/vendor/thor/lib/thor/line_editor.rb - lib/bundler/vendor/thor/lib/thor/line_editor/basic.rb - lib/bundler/vendor/thor/lib/thor/line_editor/readline.rb - lib/bundler/vendor/thor/lib/thor/parser.rb - lib/bundler/vendor/thor/lib/thor/parser/argument.rb - lib/bundler/vendor/thor/lib/thor/parser/arguments.rb - lib/bundler/vendor/thor/lib/thor/parser/option.rb - lib/bundler/vendor/thor/lib/thor/parser/options.rb - lib/bundler/vendor/thor/lib/thor/rake_compat.rb - lib/bundler/vendor/thor/lib/thor/runner.rb - lib/bundler/vendor/thor/lib/thor/shell.rb - lib/bundler/vendor/thor/lib/thor/shell/basic.rb - lib/bundler/vendor/thor/lib/thor/shell/color.rb - lib/bundler/vendor/thor/lib/thor/shell/html.rb - lib/bundler/vendor/thor/lib/thor/util.rb - lib/bundler/vendor/thor/lib/thor/version.rb - lib/bundler/vendored_fileutils.rb - lib/bundler/vendored_molinillo.rb - lib/bundler/vendored_persistent.rb - lib/bundler/vendored_thor.rb - lib/bundler/version.rb - lib/bundler/version_ranges.rb - lib/bundler/vlad.rb - lib/bundler/worker.rb - lib/bundler/yaml_serializer.rb - man/bundle-platform.1 - man/bundle-update.1 - man/bundle-init.1.txt - man/bundle-info.ronn - man/bundle-gem.ronn - man/bundle-add.1.txt - man/bundle-list.ronn - man/bundle-info.1 - man/bundle-init.1 - man/bundle-outdated.ronn - man/bundle-init.ronn - man/bundle.1 - man/bundle-show.1.txt - man/bundle-exec.1 - man/bundle-install.1.txt - man/bundle-binstubs.1.txt - man/bundle-open.1.txt - man/index.txt - man/bundle-pristine.ronn - man/bundle-install.1 - man/bundle-inject.ronn - man/bundle-list.1 - man/bundle-outdated.1.txt - man/bundle-list.1.txt - man/bundle-update.ronn - man/bundle-clean.1.txt - man/bundle-show.ronn - man/bundle-pristine.1.txt - man/bundle-outdated.1 - man/bundle-check.1 - man/bundle-show.1 - man/gemfile.5 - man/bundle-gem.1 - man/bundle-install.ronn - man/bundle-gem.1.txt - man/bundle-open.1 - man/bundle-add.ronn - man/bundle-lock.1.txt - man/bundle-open.ronn - man/bundle-lock.1 - man/bundle-exec.ronn - man/bundle-check.ronn - man/bundle-info.1.txt - man/bundle-lock.ronn - man/bundle-pristine.1 - man/bundle-viz.1.txt - man/bundle.ronn - man/bundle-platform.ronn - man/bundle-binstubs.ronn - man/bundle-exec.1.txt - man/bundle.1.txt - man/bundle-config.1.txt - man/bundle-package.1.txt - man/bundle-platform.1.txt - man/bundle-binstubs.1 - man/bundle-viz.1 - man/bundle-clean.ronn - man/bundle-package.1 - man/bundle-add.1 - man/bundle-config.1 - man/bundle-package.ronn - man/bundle-viz.ronn - man/bundle-check.1.txt - man/bundle-clean.1 - man/gemfile.5.txt - man/bundle-inject.1 - man/gemfile.5.ronn - man/bundle-config.ronn - man/bundle-inject.1.txt - man/bundle-update.1.txt - CHANGELOG.md - LICENSE.md - README.md - bundler.gemspec - ] - - s.bindir = "exe" - s.executables = %w[bundle bundler] - s.require_paths = ["lib"] -end diff --git a/lib/bundler.rb b/lib/bundler.rb deleted file mode 100644 index bef2caabcf..0000000000 --- a/lib/bundler.rb +++ /dev/null @@ -1,545 +0,0 @@ -# frozen_string_literal: true - -require "bundler/compatibility_guard" - -require "bundler/vendored_fileutils" -require "pathname" -require "rbconfig" -require "thread" - -require "bundler/errors" -require "bundler/environment_preserver" -require "bundler/plugin" -require "bundler/rubygems_ext" -require "bundler/rubygems_integration" -require "bundler/version" -require "bundler/constants" -require "bundler/current_ruby" -require "bundler/build_metadata" - -module Bundler - environment_preserver = EnvironmentPreserver.new(ENV, EnvironmentPreserver::BUNDLER_KEYS) - ORIGINAL_ENV = environment_preserver.restore - ENV.replace(environment_preserver.backup) - SUDO_MUTEX = Mutex.new - - autoload :Definition, "bundler/definition" - autoload :Dependency, "bundler/dependency" - autoload :DepProxy, "bundler/dep_proxy" - autoload :Deprecate, "bundler/deprecate" - autoload :Dsl, "bundler/dsl" - autoload :EndpointSpecification, "bundler/endpoint_specification" - autoload :Env, "bundler/env" - autoload :Fetcher, "bundler/fetcher" - autoload :FeatureFlag, "bundler/feature_flag" - autoload :GemHelper, "bundler/gem_helper" - autoload :GemHelpers, "bundler/gem_helpers" - autoload :GemRemoteFetcher, "bundler/gem_remote_fetcher" - autoload :GemVersionPromoter, "bundler/gem_version_promoter" - autoload :Graph, "bundler/graph" - autoload :Index, "bundler/index" - autoload :Injector, "bundler/injector" - autoload :Installer, "bundler/installer" - autoload :LazySpecification, "bundler/lazy_specification" - autoload :LockfileParser, "bundler/lockfile_parser" - autoload :MatchPlatform, "bundler/match_platform" - autoload :ProcessLock, "bundler/process_lock" - autoload :RemoteSpecification, "bundler/remote_specification" - autoload :Resolver, "bundler/resolver" - autoload :Retry, "bundler/retry" - autoload :RubyDsl, "bundler/ruby_dsl" - autoload :RubyGemsGemInstaller, "bundler/rubygems_gem_installer" - autoload :RubyVersion, "bundler/ruby_version" - autoload :Runtime, "bundler/runtime" - autoload :Settings, "bundler/settings" - autoload :SharedHelpers, "bundler/shared_helpers" - autoload :Source, "bundler/source" - autoload :SourceList, "bundler/source_list" - autoload :SpecSet, "bundler/spec_set" - autoload :StubSpecification, "bundler/stub_specification" - autoload :UI, "bundler/ui" - autoload :URICredentialsFilter, "bundler/uri_credentials_filter" - autoload :VersionRanges, "bundler/version_ranges" - - class << self - def configure - @configured ||= configure_gem_home_and_path - end - - def ui - (defined?(@ui) && @ui) || (self.ui = UI::Silent.new) - end - - def ui=(ui) - Bundler.rubygems.ui = ui ? UI::RGProxy.new(ui) : nil - @ui = ui - end - - # Returns absolute path of where gems are installed on the filesystem. - def bundle_path - @bundle_path ||= Pathname.new(configured_bundle_path.path).expand_path(root) - end - - def configured_bundle_path - @configured_bundle_path ||= settings.path.tap(&:validate!) - end - - # Returns absolute location of where binstubs are installed to. - def bin_path - @bin_path ||= begin - path = settings[:bin] || "bin" - path = Pathname.new(path).expand_path(root).expand_path - SharedHelpers.filesystem_access(path) {|p| FileUtils.mkdir_p(p) } - path - end - end - - def setup(*groups) - # Return if all groups are already loaded - return @setup if defined?(@setup) && @setup - - definition.validate_runtime! - - SharedHelpers.print_major_deprecations! - - if groups.empty? - # Load all groups, but only once - @setup = load.setup - else - load.setup(*groups) - end - end - - def require(*groups) - setup(*groups).require(*groups) - end - - def load - @load ||= Runtime.new(root, definition) - end - - def environment - SharedHelpers.major_deprecation 2, "Bundler.environment has been removed in favor of Bundler.load" - load - end - - # Returns an instance of Bundler::Definition for given Gemfile and lockfile - # - # @param unlock [Hash, Boolean, nil] Gems that have been requested - # to be updated or true if all gems should be updated - # @return [Bundler::Definition] - def definition(unlock = nil) - @definition = nil if unlock - @definition ||= begin - configure - Definition.build(default_gemfile, default_lockfile, unlock) - end - end - - def frozen? - frozen = settings[:deployment] - frozen ||= settings[:frozen] unless feature_flag.deployment_means_frozen? - frozen - end - - def locked_gems - @locked_gems ||= - if defined?(@definition) && @definition - definition.locked_gems - elsif Bundler.default_lockfile.file? - lock = Bundler.read_file(Bundler.default_lockfile) - LockfileParser.new(lock) - end - end - - def ruby_scope - "#{Bundler.rubygems.ruby_engine}/#{Bundler.rubygems.config_map[:ruby_version]}" - end - - def user_home - @user_home ||= begin - home = Bundler.rubygems.user_home - - warning = if home.nil? - "Your home directory is not set." - elsif !File.directory?(home) - "`#{home}` is not a directory." - elsif !File.writable?(home) - "`#{home}` is not writable." - end - - if warning - user_home = tmp_home_path(Etc.getlogin, warning) - Bundler.ui.warn "#{warning}\nBundler will use `#{user_home}' as your home directory temporarily.\n" - user_home - else - Pathname.new(home) - end - end - end - - def tmp_home_path(login, warning) - login ||= "unknown" - Kernel.send(:require, "tmpdir") - path = Pathname.new(Dir.tmpdir).join("bundler", "home") - SharedHelpers.filesystem_access(path) do |tmp_home_path| - unless tmp_home_path.exist? - tmp_home_path.mkpath - tmp_home_path.chmod(0o777) - end - tmp_home_path.join(login).tap(&:mkpath) - end - rescue => e - raise e.exception("#{warning}\nBundler also failed to create a temporary home directory at `#{path}':\n#{e}") - end - - def user_bundle_path - Pathname.new(user_home).join(".bundle") - end - - def home - bundle_path.join("bundler") - end - - def install_path - home.join("gems") - end - - def specs_path - bundle_path.join("specifications") - end - - def user_cache - user_bundle_path.join("cache") - end - - def root - @root ||= begin - SharedHelpers.root - rescue GemfileNotFound - bundle_dir = default_bundle_dir - raise GemfileNotFound, "Could not locate Gemfile or .bundle/ directory" unless bundle_dir - Pathname.new(File.expand_path("..", bundle_dir)) - end - end - - def app_config_path - if app_config = ENV["BUNDLE_APP_CONFIG"] - Pathname.new(app_config).expand_path(root) - else - root.join(".bundle") - end - end - - def app_cache(custom_path = nil) - path = custom_path || root - Pathname.new(path).join(settings.app_cache_path) - end - - def tmp(name = Process.pid.to_s) - Kernel.send(:require, "tmpdir") - Pathname.new(Dir.mktmpdir(["bundler", name])) - end - - def rm_rf(path) - FileUtils.remove_entry_secure(path) if path && File.exist?(path) - rescue ArgumentError - message = < e - raise MarshalError, "#{e.class}: #{e.message}" - end - - def load_gemspec(file, validate = false) - @gemspec_cache ||= {} - key = File.expand_path(file) - @gemspec_cache[key] ||= load_gemspec_uncached(file, validate) - # Protect against caching side-effected gemspecs by returning a - # new instance each time. - @gemspec_cache[key].dup if @gemspec_cache[key] - end - - def load_gemspec_uncached(file, validate = false) - path = Pathname.new(file) - contents = path.read - spec = if contents.start_with?("---") # YAML header - eval_yaml_gemspec(path, contents) - else - # Eval the gemspec from its parent directory, because some gemspecs - # depend on "./" relative paths. - SharedHelpers.chdir(path.dirname.to_s) do - eval_gemspec(path, contents) - end - end - return unless spec - spec.loaded_from = path.expand_path.to_s - Bundler.rubygems.validate(spec) if validate - spec - end - - def clear_gemspec_cache - @gemspec_cache = {} - end - - def git_present? - return @git_present if defined?(@git_present) - @git_present = Bundler.which("git") || Bundler.which("git.exe") - end - - def feature_flag - @feature_flag ||= FeatureFlag.new(VERSION) - end - - def reset! - reset_paths! - Plugin.reset! - reset_rubygems! - end - - def reset_paths! - @bin_path = nil - @bundler_major_version = nil - @bundle_path = nil - @configured = nil - @configured_bundle_path = nil - @definition = nil - @load = nil - @locked_gems = nil - @root = nil - @settings = nil - @setup = nil - @user_home = nil - end - - def reset_rubygems! - return unless defined?(@rubygems) && @rubygems - rubygems.undo_replacements - rubygems.reset - @rubygems = nil - end - - private - - def eval_yaml_gemspec(path, contents) - Kernel.send(:require, "bundler/psyched_yaml") - - # If the YAML is invalid, Syck raises an ArgumentError, and Psych - # raises a Psych::SyntaxError. See psyched_yaml.rb for more info. - Gem::Specification.from_yaml(contents) - rescue YamlLibrarySyntaxError, ArgumentError, Gem::EndOfYAMLException, Gem::Exception - eval_gemspec(path, contents) - end - - def eval_gemspec(path, contents) - eval(contents, TOPLEVEL_BINDING.dup, path.expand_path.to_s) - rescue ScriptError, StandardError => e - msg = "There was an error while loading `#{path.basename}`: #{e.message}" - - if e.is_a?(LoadError) && RUBY_VERSION >= "1.9" - msg += "\nDoes it try to require a relative path? That's been removed in Ruby 1.9" - end - - raise GemspecError, Dsl::DSLError.new(msg, path, e.backtrace, contents) - end - - def configure_gem_home_and_path - configure_gem_path - configure_gem_home - bundle_path - end - - def configure_gem_path(env = ENV) - blank_home = env["GEM_HOME"].nil? || env["GEM_HOME"].empty? - if !use_system_gems? - # this needs to be empty string to cause - # PathSupport.split_gem_path to only load up the - # Bundler --path setting as the GEM_PATH. - env["GEM_PATH"] = "" - elsif blank_home - possibles = [Bundler.rubygems.gem_dir, Bundler.rubygems.gem_path] - paths = possibles.flatten.compact.uniq.reject(&:empty?) - env["GEM_PATH"] = paths.join(File::PATH_SEPARATOR) - end - end - - def configure_gem_home - Bundler::SharedHelpers.set_env "GEM_HOME", File.expand_path(bundle_path, root) - Bundler.rubygems.clear_paths - end - - # @param env [Hash] - def with_env(env) - backup = ENV.to_hash - ENV.replace(env) - yield - ensure - ENV.replace(backup) - end - end -end diff --git a/lib/bundler/build_metadata.rb b/lib/bundler/build_metadata.rb deleted file mode 100644 index 54436f982d..0000000000 --- a/lib/bundler/build_metadata.rb +++ /dev/null @@ -1,36 +0,0 @@ -# frozen_string_literal: true - -module Bundler - # Represents metadata from when the Bundler gem was built. - module BuildMetadata - # begin ivars - @release = false - # end ivars - - # A hash representation of the build metadata. - def self.to_h - { - "Built At" => built_at, - "Git SHA" => git_commit_sha, - "Released Version" => release?, - } - end - - # A string representing the date the bundler gem was built. - def self.built_at - @built_at ||= Time.now.utc.strftime("%Y-%m-%d").freeze - end - - # The SHA for the git commit the bundler gem was built from. - def self.git_commit_sha - @git_commit_sha ||= Dir.chdir(File.expand_path("..", __FILE__)) do - `git rev-parse --short HEAD`.strip.freeze - end - end - - # Whether this is an official release build of Bundler. - def self.release? - @release - end - end -end diff --git a/lib/bundler/capistrano.rb b/lib/bundler/capistrano.rb deleted file mode 100644 index 1b7145b72b..0000000000 --- a/lib/bundler/capistrano.rb +++ /dev/null @@ -1,22 +0,0 @@ -# frozen_string_literal: true - -require "bundler/shared_helpers" -Bundler::SharedHelpers.major_deprecation 2, - "The Bundler task for Capistrano. Please use http://github.com/capistrano/bundler" - -# Capistrano task for Bundler. -# -# Add "require 'bundler/capistrano'" in your Capistrano deploy.rb, and -# Bundler will be activated after each new deployment. -require "bundler/deployment" -require "capistrano/version" - -if defined?(Capistrano::Version) && Gem::Version.new(Capistrano::Version).release >= Gem::Version.new("3.0") - raise "For Capistrano 3.x integration, please use http://github.com/capistrano/bundler" -end - -Capistrano::Configuration.instance(:must_exist).load do - before "deploy:finalize_update", "bundle:install" - Bundler::Deployment.define_task(self, :task, :except => { :no_release => true }) - set :rake, lambda { "#{fetch(:bundle_cmd, "bundle")} exec rake" } -end diff --git a/lib/bundler/cli.rb b/lib/bundler/cli.rb deleted file mode 100644 index 05e1851c18..0000000000 --- a/lib/bundler/cli.rb +++ /dev/null @@ -1,746 +0,0 @@ -# frozen_string_literal: true - -require "bundler" -require "bundler/vendored_thor" - -module Bundler - class CLI < Thor - require "bundler/cli/common" - - package_name "Bundler" - - AUTO_INSTALL_CMDS = %w[show binstubs outdated exec open console licenses clean].freeze - PARSEABLE_COMMANDS = %w[ - check config help exec platform show version - ].freeze - - def self.start(*) - super - rescue Exception => e - Bundler.ui = UI::Shell.new - raise e - ensure - Bundler::SharedHelpers.print_major_deprecations! - end - - def self.dispatch(*) - super do |i| - i.send(:print_command) - i.send(:warn_on_outdated_bundler) - end - end - - def initialize(*args) - super - - custom_gemfile = options[:gemfile] || Bundler.settings[:gemfile] - if custom_gemfile && !custom_gemfile.empty? - Bundler::SharedHelpers.set_env "BUNDLE_GEMFILE", File.expand_path(custom_gemfile) - Bundler.reset_paths! - end - - Bundler.settings.set_command_option_if_given :retry, options[:retry] - - current_cmd = args.last[:current_command].name - auto_install if AUTO_INSTALL_CMDS.include?(current_cmd) - rescue UnknownArgumentError => e - raise InvalidOption, e.message - ensure - self.options ||= {} - unprinted_warnings = Bundler.ui.unprinted_warnings - Bundler.ui = UI::Shell.new(options) - Bundler.ui.level = "debug" if options["verbose"] - unprinted_warnings.each {|w| Bundler.ui.warn(w) } - - if ENV["RUBYGEMS_GEMDEPS"] && !ENV["RUBYGEMS_GEMDEPS"].empty? - Bundler.ui.warn( - "The RUBYGEMS_GEMDEPS environment variable is set. This enables RubyGems' " \ - "experimental Gemfile mode, which may conflict with Bundler and cause unexpected errors. " \ - "To remove this warning, unset RUBYGEMS_GEMDEPS.", :wrap => true - ) - end - end - - def self.deprecated_option(*args, &blk) - return if Bundler.feature_flag.forget_cli_options? - method_option(*args, &blk) - end - - check_unknown_options!(:except => [:config, :exec]) - stop_on_unknown_option! :exec - - desc "cli_help", "Prints a summary of bundler commands", :hide => true - def cli_help - version - Bundler.ui.info "\n" - - primary_commands = ["install", "update", - Bundler.feature_flag.cache_command_is_package? ? "cache" : "package", - "exec", "config", "help"] - - list = self.class.printable_commands(true) - by_name = list.group_by {|name, _message| name.match(/^bundle (\w+)/)[1] } - utilities = by_name.keys.sort - primary_commands - primary_commands.map! {|name| (by_name[name] || raise("no primary command #{name}")).first } - utilities.map! {|name| by_name[name].first } - - shell.say "Bundler commands:\n\n" - - shell.say " Primary commands:\n" - shell.print_table(primary_commands, :indent => 4, :truncate => true) - shell.say - shell.say " Utilities:\n" - shell.print_table(utilities, :indent => 4, :truncate => true) - shell.say - self.class.send(:class_options_help, shell) - end - default_task(Bundler.feature_flag.default_cli_command) - - class_option "no-color", :type => :boolean, :desc => "Disable colorization in output" - class_option "retry", :type => :numeric, :aliases => "-r", :banner => "NUM", - :desc => "Specify the number of times you wish to attempt network commands" - class_option "verbose", :type => :boolean, :desc => "Enable verbose output mode", :aliases => "-V" - - def help(cli = nil) - case cli - when "gemfile" then command = "gemfile" - when nil then command = "bundle" - else command = "bundle-#{cli}" - end - - man_path = File.expand_path("../../../man", __FILE__) - man_pages = Hash[Dir.glob(File.join(man_path, "*")).grep(/.*\.\d*\Z/).collect do |f| - [File.basename(f, ".*"), f] - end] - - if man_pages.include?(command) - if Bundler.which("man") && man_path !~ %r{^file:/.+!/META-INF/jruby.home/.+} - Kernel.exec "man #{man_pages[command]}" - else - puts File.read("#{man_path}/#{File.basename(man_pages[command])}.txt") - end - elsif command_path = Bundler.which("bundler-#{cli}") - Kernel.exec(command_path, "--help") - else - super - end - end - - def self.handle_no_command_error(command, has_namespace = $thor_runner) - if Bundler.feature_flag.plugins? && Bundler::Plugin.command?(command) - return Bundler::Plugin.exec_command(command, ARGV[1..-1]) - end - - return super unless command_path = Bundler.which("bundler-#{command}") - - Kernel.exec(command_path, *ARGV[1..-1]) - end - - desc "init [OPTIONS]", "Generates a Gemfile into the current working directory" - long_desc <<-D - Init generates a default Gemfile in the current working directory. When adding a - Gemfile to a gem with a gemspec, the --gemspec option will automatically add each - dependency listed in the gemspec file to the newly created Gemfile. - D - deprecated_option "gemspec", :type => :string, :banner => "Use the specified .gemspec to create the Gemfile" - def init - require "bundler/cli/init" - Init.new(options.dup).run - end - - desc "check [OPTIONS]", "Checks if the dependencies listed in Gemfile are satisfied by currently installed gems" - long_desc <<-D - Check searches the local machine for each of the gems requested in the Gemfile. If - all gems are found, Bundler prints a success message and exits with a status of 0. - If not, the first missing gem is listed and Bundler exits status 1. - D - method_option "dry-run", :type => :boolean, :default => false, :banner => - "Lock the Gemfile" - method_option "gemfile", :type => :string, :banner => - "Use the specified gemfile instead of Gemfile" - method_option "path", :type => :string, :banner => - "Specify a different path than the system default ($BUNDLE_PATH or $GEM_HOME).#{" Bundler will remember this value for future installs on this machine" unless Bundler.feature_flag.forget_cli_options?}" - map "c" => "check" - def check - require "bundler/cli/check" - Check.new(options).run - end - - desc "install [OPTIONS]", "Install the current environment to the system" - long_desc <<-D - Install will install all of the gems in the current bundle, making them available - for use. In a freshly checked out repository, this command will give you the same - gem versions as the last person who updated the Gemfile and ran `bundle update`. - - Passing [DIR] to install (e.g. vendor) will cause the unpacked gems to be installed - into the [DIR] directory rather than into system gems. - - If the bundle has already been installed, bundler will tell you so and then exit. - D - deprecated_option "binstubs", :type => :string, :lazy_default => "bin", :banner => - "Generate bin stubs for bundled gems to ./bin" - deprecated_option "clean", :type => :boolean, :banner => - "Run bundle clean automatically after install" - deprecated_option "deployment", :type => :boolean, :banner => - "Install using defaults tuned for deployment environments" - deprecated_option "frozen", :type => :boolean, :banner => - "Do not allow the Gemfile.lock to be updated after this install" - method_option "full-index", :type => :boolean, :banner => - "Fall back to using the single-file index of all gems" - method_option "gemfile", :type => :string, :banner => - "Use the specified gemfile instead of Gemfile" - method_option "jobs", :aliases => "-j", :type => :numeric, :banner => - "Specify the number of jobs to run in parallel" - method_option "local", :type => :boolean, :banner => - "Do not attempt to fetch gems remotely and use the gem cache instead" - deprecated_option "no-cache", :type => :boolean, :banner => - "Don't update the existing gem cache." - method_option "redownload", :type => :boolean, :aliases => - [Bundler.feature_flag.forget_cli_options? ? nil : "--force"].compact, :banner => - "Force downloading every gem." - deprecated_option "no-prune", :type => :boolean, :banner => - "Don't remove stale gems from the cache." - deprecated_option "path", :type => :string, :banner => - "Specify a different path than the system default ($BUNDLE_PATH or $GEM_HOME). Bundler will remember this value for future installs on this machine" - method_option "quiet", :type => :boolean, :banner => - "Only output warnings and errors." - deprecated_option "shebang", :type => :string, :banner => - "Specify a different shebang executable name than the default (usually 'ruby')" - method_option "standalone", :type => :array, :lazy_default => [], :banner => - "Make a bundle that can work without the Bundler runtime" - deprecated_option "system", :type => :boolean, :banner => - "Install to the system location ($BUNDLE_PATH or $GEM_HOME) even if the bundle was previously installed somewhere else for this application" - method_option "trust-policy", :alias => "P", :type => :string, :banner => - "Gem trust policy (like gem install -P). Must be one of " + - Bundler.rubygems.security_policy_keys.join("|") - deprecated_option "without", :type => :array, :banner => - "Exclude gems that are part of the specified named group." - deprecated_option "with", :type => :array, :banner => - "Include gems that are part of the specified named group." - map "i" => "install" - def install - require "bundler/cli/install" - Bundler.settings.temporary(:no_install => false) do - Install.new(options.dup).run - end - end - - desc "update [OPTIONS]", "Update the current environment" - long_desc <<-D - Update will install the newest versions of the gems listed in the Gemfile. Use - update when you have changed the Gemfile, or if you want to get the newest - possible versions of the gems in the bundle. - D - method_option "full-index", :type => :boolean, :banner => - "Fall back to using the single-file index of all gems" - method_option "group", :aliases => "-g", :type => :array, :banner => - "Update a specific group" - method_option "jobs", :aliases => "-j", :type => :numeric, :banner => - "Specify the number of jobs to run in parallel" - method_option "local", :type => :boolean, :banner => - "Do not attempt to fetch gems remotely and use the gem cache instead" - method_option "quiet", :type => :boolean, :banner => - "Only output warnings and errors." - method_option "source", :type => :array, :banner => - "Update a specific source (and all gems associated with it)" - method_option "force", :type => :boolean, :banner => - "Force downloading every gem." - method_option "ruby", :type => :boolean, :banner => - "Update ruby specified in Gemfile.lock" - method_option "bundler", :type => :string, :lazy_default => "> 0.a", :banner => - "Update the locked version of bundler" - method_option "patch", :type => :boolean, :banner => - "Prefer updating only to next patch version" - method_option "minor", :type => :boolean, :banner => - "Prefer updating only to next minor version" - method_option "major", :type => :boolean, :banner => - "Prefer updating to next major version (default)" - method_option "strict", :type => :boolean, :banner => - "Do not allow any gem to be updated past latest --patch | --minor | --major" - method_option "conservative", :type => :boolean, :banner => - "Use bundle install conservative update behavior and do not allow shared dependencies to be updated." - method_option "all", :type => :boolean, :banner => - "Update everything." - def update(*gems) - require "bundler/cli/update" - Update.new(options, gems).run - end - - desc "show GEM [OPTIONS]", "Shows all gems that are part of the bundle, or the path to a given gem" - long_desc <<-D - Show lists the names and versions of all gems that are required by your Gemfile. - Calling show with [GEM] will list the exact location of that gem on your machine. - D - method_option "paths", :type => :boolean, - :banner => "List the paths of all gems that are required by your Gemfile." - method_option "outdated", :type => :boolean, - :banner => "Show verbose output including whether gems are outdated." - def show(gem_name = nil) - Bundler::SharedHelpers.major_deprecation(2, "use `bundle list` instead of `bundle show`") if ARGV[0] == "show" - require "bundler/cli/show" - Show.new(options, gem_name).run - end - # TODO: 2.0 remove `bundle show` - - if Bundler.feature_flag.list_command? - desc "list", "List all gems in the bundle" - method_option "name-only", :type => :boolean, :banner => "print only the gem names" - def list - require "bundler/cli/list" - List.new(options).run - end - - map %w[ls] => "list" - else - map %w[list] => "show" - end - - desc "info GEM [OPTIONS]", "Show information for the given gem" - method_option "path", :type => :boolean, :banner => "Print full path to gem" - def info(gem_name) - require "bundler/cli/info" - Info.new(options, gem_name).run - end - - desc "binstubs GEM [OPTIONS]", "Install the binstubs of the listed gem" - long_desc <<-D - Generate binstubs for executables in [GEM]. Binstubs are put into bin, - or the --binstubs directory if one has been set. Calling binstubs with [GEM [GEM]] - will create binstubs for all given gems. - D - method_option "force", :type => :boolean, :default => false, :banner => - "Overwrite existing binstubs if they exist" - method_option "path", :type => :string, :lazy_default => "bin", :banner => - "Binstub destination directory (default bin)" - method_option "shebang", :type => :string, :banner => - "Specify a different shebang executable name than the default (usually 'ruby')" - method_option "standalone", :type => :boolean, :banner => - "Make binstubs that can work without the Bundler runtime" - def binstubs(*gems) - require "bundler/cli/binstubs" - Binstubs.new(options, gems).run - end - - desc "add GEM VERSION", "Add gem to Gemfile and run bundle install" - long_desc <<-D - Adds the specified gem to Gemfile (if valid) and run 'bundle install' in one step. - D - method_option "version", :aliases => "-v", :type => :string - method_option "group", :aliases => "-g", :type => :string - method_option "source", :aliases => "-s", :type => :string - - def add(gem_name) - require "bundler/cli/add" - Add.new(options.dup, gem_name).run - end - - desc "outdated GEM [OPTIONS]", "List installed gems with newer versions available" - long_desc <<-D - Outdated lists the names and versions of gems that have a newer version available - in the given source. Calling outdated with [GEM [GEM]] will only check for newer - versions of the given gems. Prerelease gems are ignored by default. If your gems - are up to date, Bundler will exit with a status of 0. Otherwise, it will exit 1. - - For more information on patch level options (--major, --minor, --patch, - --update-strict) see documentation on the same options on the update command. - D - method_option "group", :type => :string, :banner => "List gems from a specific group" - method_option "groups", :type => :boolean, :banner => "List gems organized by groups" - method_option "local", :type => :boolean, :banner => - "Do not attempt to fetch gems remotely and use the gem cache instead" - method_option "pre", :type => :boolean, :banner => "Check for newer pre-release gems" - method_option "source", :type => :array, :banner => "Check against a specific source" - method_option "strict", :type => :boolean, :banner => - "Only list newer versions allowed by your Gemfile requirements" - method_option "update-strict", :type => :boolean, :banner => - "Strict conservative resolution, do not allow any gem to be updated past latest --patch | --minor | --major" - method_option "minor", :type => :boolean, :banner => "Prefer updating only to next minor version" - method_option "major", :type => :boolean, :banner => "Prefer updating to next major version (default)" - method_option "patch", :type => :boolean, :banner => "Prefer updating only to next patch version" - method_option "filter-major", :type => :boolean, :banner => "Only list major newer versions" - method_option "filter-minor", :type => :boolean, :banner => "Only list minor newer versions" - method_option "filter-patch", :type => :boolean, :banner => "Only list patch newer versions" - method_option "parseable", :aliases => "--porcelain", :type => :boolean, :banner => - "Use minimal formatting for more parseable output" - def outdated(*gems) - require "bundler/cli/outdated" - Outdated.new(options, gems).run - end - - if Bundler.feature_flag.cache_command_is_package? - map %w[cache] => :package - else - desc "cache [OPTIONS]", "Cache all the gems to vendor/cache", :hide => true - unless Bundler.feature_flag.cache_command_is_package? - method_option "all", :type => :boolean, - :banner => "Include all sources (including path and git)." - end - method_option "all-platforms", :type => :boolean, :banner => "Include gems for all platforms present in the lockfile, not only the current one" - method_option "no-prune", :type => :boolean, :banner => "Don't remove stale gems from the cache." - def cache - require "bundler/cli/cache" - Cache.new(options).run - end - end - - desc "#{Bundler.feature_flag.cache_command_is_package? ? :cache : :package} [OPTIONS]", "Locks and then caches all of the gems into vendor/cache" - unless Bundler.feature_flag.cache_command_is_package? - method_option "all", :type => :boolean, - :banner => "Include all sources (including path and git)." - end - method_option "all-platforms", :type => :boolean, :banner => "Include gems for all platforms present in the lockfile, not only the current one" - method_option "cache-path", :type => :string, :banner => - "Specify a different cache path than the default (vendor/cache)." - method_option "gemfile", :type => :string, :banner => "Use the specified gemfile instead of Gemfile" - method_option "no-install", :type => :boolean, :banner => "Don't install the gems, only the package." - method_option "no-prune", :type => :boolean, :banner => "Don't remove stale gems from the cache." - method_option "path", :type => :string, :banner => - "Specify a different path than the system default ($BUNDLE_PATH or $GEM_HOME). Bundler will remember this value for future installs on this machine" - method_option "quiet", :type => :boolean, :banner => "Only output warnings and errors." - method_option "frozen", :type => :boolean, :banner => - "Do not allow the Gemfile.lock to be updated after this package operation's install" - long_desc <<-D - The package command will copy the .gem files for every gem in the bundle into the - directory ./vendor/cache. If you then check that directory into your source - control repository, others who check out your source will be able to install the - bundle without having to download any additional gems. - D - def package - require "bundler/cli/package" - Package.new(options).run - end - map %w[pack] => :package - - desc "exec [OPTIONS]", "Run the command in context of the bundle" - method_option :keep_file_descriptors, :type => :boolean, :default => false - long_desc <<-D - Exec runs a command, providing it access to the gems in the bundle. While using - bundle exec you can require and call the bundled gems as if they were installed - into the system wide RubyGems repository. - D - map "e" => "exec" - def exec(*args) - require "bundler/cli/exec" - Exec.new(options, args).run - end - - desc "config NAME [VALUE]", "Retrieve or set a configuration value" - long_desc <<-D - Retrieves or sets a configuration value. If only one parameter is provided, retrieve the value. If two parameters are provided, replace the - existing value with the newly provided one. - - By default, setting a configuration value sets it for all projects - on the machine. - - If a global setting is superceded by local configuration, this command - will show the current value, as well as any superceded values and - where they were specified. - D - method_option "parseable", :type => :boolean, :banner => "Use minimal formatting for more parseable output" - def config(*args) - require "bundler/cli/config" - Config.new(options, args, self).run - end - - desc "open GEM", "Opens the source directory of the given bundled gem" - def open(name) - require "bundler/cli/open" - Open.new(options, name).run - end - - if Bundler.feature_flag.console_command? - desc "console [GROUP]", "Opens an IRB session with the bundle pre-loaded" - def console(group = nil) - require "bundler/cli/console" - Console.new(options, group).run - end - end - - desc "version", "Prints the bundler's version information" - def version - cli_help = current_command.name == "cli_help" - if cli_help || ARGV.include?("version") - build_info = " (#{BuildMetadata.built_at} commit #{BuildMetadata.git_commit_sha})" - end - - if !cli_help && Bundler.feature_flag.print_only_version_number? - Bundler.ui.info "#{Bundler::VERSION}#{build_info}" - else - Bundler.ui.info "Bundler version #{Bundler::VERSION}#{build_info}" - end - end - map %w[-v --version] => :version - - desc "licenses", "Prints the license of all gems in the bundle" - def licenses - Bundler.load.specs.sort_by {|s| s.license.to_s }.reverse_each do |s| - gem_name = s.name - license = s.license || s.licenses - - if license.empty? - Bundler.ui.warn "#{gem_name}: Unknown" - else - Bundler.ui.info "#{gem_name}: #{license}" - end - end - end - - desc "viz [OPTIONS]", "Generates a visual dependency graph", :hide => true - long_desc <<-D - Viz generates a PNG file of the current Gemfile as a dependency graph. - Viz requires the ruby-graphviz gem (and its dependencies). - The associated gems must also be installed via 'bundle install'. - D - method_option :file, :type => :string, :default => "gem_graph", :aliases => "-f", :desc => "The name to use for the generated file. see format option" - method_option :format, :type => :string, :default => "png", :aliases => "-F", :desc => "This is output format option. Supported format is png, jpg, svg, dot ..." - method_option :requirements, :type => :boolean, :default => false, :aliases => "-R", :desc => "Set to show the version of each required dependency." - method_option :version, :type => :boolean, :default => false, :aliases => "-v", :desc => "Set to show each gem version." - method_option :without, :type => :array, :default => [], :aliases => "-W", :banner => "GROUP[ GROUP...]", :desc => "Exclude gems that are part of the specified named group." - def viz - require "bundler/cli/viz" - Viz.new(options.dup).run - end - - old_gem = instance_method(:gem) - - desc "gem NAME [OPTIONS]", "Creates a skeleton for creating a rubygem" - method_option :exe, :type => :boolean, :default => false, :aliases => ["--bin", "-b"], :desc => "Generate a binary executable for your library." - method_option :coc, :type => :boolean, :desc => "Generate a code of conduct file. Set a default with `bundle config gem.coc true`." - method_option :edit, :type => :string, :aliases => "-e", :required => false, :banner => "EDITOR", - :lazy_default => [ENV["BUNDLER_EDITOR"], ENV["VISUAL"], ENV["EDITOR"]].find {|e| !e.nil? && !e.empty? }, - :desc => "Open generated gemspec in the specified editor (defaults to $EDITOR or $BUNDLER_EDITOR)" - method_option :ext, :type => :boolean, :default => false, :desc => "Generate the boilerplate for C extension code" - method_option :mit, :type => :boolean, :desc => "Generate an MIT license file. Set a default with `bundle config gem.mit true`." - method_option :test, :type => :string, :lazy_default => "rspec", :aliases => "-t", :banner => "rspec", - :desc => "Generate a test directory for your library, either rspec or minitest. Set a default with `bundle config gem.test rspec`." - def gem(name) - end - - commands["gem"].tap do |gem_command| - def gem_command.run(instance, args = []) - arity = 1 # name - - require "bundler/cli/gem" - cmd_args = args + [instance] - cmd_args.unshift(instance.options) - - cmd = begin - Gem.new(*cmd_args) - rescue ArgumentError => e - instance.class.handle_argument_error(self, e, args, arity) - end - - cmd.run - end - end - - undef_method(:gem) - define_method(:gem, old_gem) - private :gem - - def self.source_root - File.expand_path(File.join(File.dirname(__FILE__), "templates")) - end - - desc "clean [OPTIONS]", "Cleans up unused gems in your bundler directory", :hide => true - method_option "dry-run", :type => :boolean, :default => false, :banner => - "Only print out changes, do not clean gems" - method_option "force", :type => :boolean, :default => false, :banner => - "Forces clean even if --path is not set" - def clean - require "bundler/cli/clean" - Clean.new(options.dup).run - end - - desc "platform [OPTIONS]", "Displays platform compatibility information" - method_option "ruby", :type => :boolean, :default => false, :banner => - "only display ruby related platform information" - def platform - require "bundler/cli/platform" - Platform.new(options).run - end - - desc "inject GEM VERSION", "Add the named gem, with version requirements, to the resolved Gemfile", :hide => true - method_option "source", :type => :string, :banner => - "Install gem from the given source" - method_option "group", :type => :string, :banner => - "Install gem into a bundler group" - def inject(name, version) - SharedHelpers.major_deprecation 2, "The `inject` command has been replaced by the `add` command" - require "bundler/cli/inject" - Inject.new(options.dup, name, version).run - end - - desc "lock", "Creates a lockfile without installing" - method_option "update", :type => :array, :lazy_default => true, :banner => - "ignore the existing lockfile, update all gems by default, or update list of given gems" - method_option "local", :type => :boolean, :default => false, :banner => - "do not attempt to fetch remote gemspecs and use the local gem cache only" - method_option "print", :type => :boolean, :default => false, :banner => - "print the lockfile to STDOUT instead of writing to the file system" - method_option "lockfile", :type => :string, :default => nil, :banner => - "the path the lockfile should be written to" - method_option "full-index", :type => :boolean, :default => false, :banner => - "Fall back to using the single-file index of all gems" - method_option "add-platform", :type => :array, :default => [], :banner => - "Add a new platform to the lockfile" - method_option "remove-platform", :type => :array, :default => [], :banner => - "Remove a platform from the lockfile" - method_option "patch", :type => :boolean, :banner => - "If updating, prefer updating only to next patch version" - method_option "minor", :type => :boolean, :banner => - "If updating, prefer updating only to next minor version" - method_option "major", :type => :boolean, :banner => - "If updating, prefer updating to next major version (default)" - method_option "strict", :type => :boolean, :banner => - "If updating, do not allow any gem to be updated past latest --patch | --minor | --major" - method_option "conservative", :type => :boolean, :banner => - "If updating, use bundle install conservative update behavior and do not allow shared dependencies to be updated" - def lock - require "bundler/cli/lock" - Lock.new(options).run - end - - desc "env", "Print information about the environment Bundler is running under" - def env - Env.write($stdout) - end - - desc "doctor [OPTIONS]", "Checks the bundle for common problems" - long_desc <<-D - Doctor scans the OS dependencies of each of the gems requested in the Gemfile. If - missing dependencies are detected, Bundler prints them and exits status 1. - Otherwise, Bundler prints a success message and exits with a status of 0. - D - method_option "gemfile", :type => :string, :banner => - "Use the specified gemfile instead of Gemfile" - method_option "quiet", :type => :boolean, :banner => - "Only output warnings and errors." - def doctor - require "bundler/cli/doctor" - Doctor.new(options).run - end - - desc "issue", "Learn how to report an issue in Bundler" - def issue - require "bundler/cli/issue" - Issue.new.run - end - - desc "pristine [GEMS...]", "Restores installed gems to pristine condition" - long_desc <<-D - Restores installed gems to pristine condition from files located in the - gem cache. Gems installed from a git repository will be issued `git - checkout --force`. - D - def pristine(*gems) - require "bundler/cli/pristine" - Pristine.new(gems).run - end - - if Bundler.feature_flag.plugins? - require "bundler/cli/plugin" - desc "plugin", "Manage the bundler plugins" - subcommand "plugin", Plugin - end - - # Reformat the arguments passed to bundle that include a --help flag - # into the corresponding `bundle help #{command}` call - def self.reformatted_help_args(args) - bundler_commands = all_commands.keys - help_flags = %w[--help -h] - exec_commands = %w[e ex exe exec] - help_used = args.index {|a| help_flags.include? a } - exec_used = args.index {|a| exec_commands.include? a } - command = args.find {|a| bundler_commands.include? a } - if exec_used && help_used - if exec_used + help_used == 1 - %w[help exec] - else - args - end - elsif help_used - args = args.dup - args.delete_at(help_used) - ["help", command || args].flatten.compact - else - args - end - end - - private - - # Automatically invoke `bundle install` and resume if - # Bundler.settings[:auto_install] exists. This is set through config cmd - # `bundle config auto_install 1`. - # - # Note that this method `nil`s out the global Definition object, so it - # should be called first, before you instantiate anything like an - # `Installer` that'll keep a reference to the old one instead. - def auto_install - return unless Bundler.settings[:auto_install] - - begin - Bundler.definition.specs - rescue GemNotFound - Bundler.ui.info "Automatically installing missing gems." - Bundler.reset! - invoke :install, [] - Bundler.reset! - end - end - - def current_command - _, _, config = @_initializer - config[:current_command] - end - - def print_command - return unless Bundler.ui.debug? - cmd = current_command - command_name = cmd.name - return if PARSEABLE_COMMANDS.include?(command_name) - command = ["bundle", command_name] + args - options_to_print = options.dup - options_to_print.delete_if do |k, v| - next unless o = cmd.options[k] - o.default == v - end - command << Thor::Options.to_switches(options_to_print.sort_by(&:first)).strip - command.reject!(&:empty?) - Bundler.ui.info "Running `#{command * " "}` with bundler #{Bundler::VERSION}" - end - - def warn_on_outdated_bundler - return if Bundler.settings[:disable_version_check] - - command_name = current_command.name - return if PARSEABLE_COMMANDS.include?(command_name) - - latest = Fetcher::CompactIndex. - new(nil, Source::Rubygems::Remote.new(URI("https://rubygems.org")), nil). - send(:compact_index_client). - instance_variable_get(:@cache). - dependencies("bundler"). - map {|d| Gem::Version.new(d.first) }. - max - return unless latest - - current = Gem::Version.new(VERSION) - return if current >= latest - latest_installed = Bundler.rubygems.find_name("bundler").map(&:version).max - - installation = "To install the latest version, run `gem install bundler#{" --pre" if latest.prerelease?}`" - if latest_installed && latest_installed > current - suggestion = "To update to the most recent installed version (#{latest_installed}), run `bundle update --bundler`" - suggestion = "#{installation}\n#{suggestion}" if latest_installed < latest - else - suggestion = installation - end - - Bundler.ui.warn "The latest bundler is #{latest}, but you are currently running #{current}.\n#{suggestion}" - rescue - nil - end - end -end diff --git a/lib/bundler/cli/add.rb b/lib/bundler/cli/add.rb deleted file mode 100644 index 1fcbd22f28..0000000000 --- a/lib/bundler/cli/add.rb +++ /dev/null @@ -1,25 +0,0 @@ -# frozen_string_literal: true - -module Bundler - class CLI::Add - def initialize(options, gem_name) - @gem_name = gem_name - @options = options - @options[:group] = @options[:group].split(",").map(&:strip) if !@options[:group].nil? && !@options[:group].empty? - end - - def run - version = @options[:version].nil? ? nil : @options[:version].split(",").map(&:strip) - - unless version.nil? - version.each do |v| - raise InvalidOption, "Invalid gem requirement pattern '#{v}'" unless Gem::Requirement::PATTERN =~ v.to_s - end - end - dependency = Bundler::Dependency.new(@gem_name, version, @options) - - Injector.inject([dependency], :conservative_versioning => @options[:version].nil?) # Perform conservative versioning only when version is not specified - Installer.install(Bundler.root, Bundler.definition) - end - end -end diff --git a/lib/bundler/cli/binstubs.rb b/lib/bundler/cli/binstubs.rb deleted file mode 100644 index 449204d821..0000000000 --- a/lib/bundler/cli/binstubs.rb +++ /dev/null @@ -1,43 +0,0 @@ -# frozen_string_literal: true - -module Bundler - class CLI::Binstubs - attr_reader :options, :gems - def initialize(options, gems) - @options = options - @gems = gems - end - - def run - Bundler.definition.validate_runtime! - path_option = options["path"] - path_option = nil if path_option && path_option.empty? - Bundler.settings.set_command_option :bin, path_option if options["path"] - Bundler.settings.set_command_option_if_given :shebang, options["shebang"] - installer = Installer.new(Bundler.root, Bundler.definition) - - if gems.empty? - Bundler.ui.error "`bundle binstubs` needs at least one gem to run." - exit 1 - end - - gems.each do |gem_name| - spec = Bundler.definition.specs.find {|s| s.name == gem_name } - unless spec - raise GemNotFound, Bundler::CLI::Common.gem_not_found_message( - gem_name, Bundler.definition.specs - ) - end - - if options[:standalone] - next Bundler.ui.warn("Sorry, Bundler can only be run via RubyGems.") if gem_name == "bundler" - Bundler.settings.temporary(:path => (Bundler.settings[:path] || Bundler.root)) do - installer.generate_standalone_bundler_executable_stubs(spec) - end - else - installer.generate_bundler_executable_stubs(spec, :force => options[:force], :binstubs_cmd => true) - end - end - end - end -end diff --git a/lib/bundler/cli/cache.rb b/lib/bundler/cli/cache.rb deleted file mode 100644 index 9d2ba87d34..0000000000 --- a/lib/bundler/cli/cache.rb +++ /dev/null @@ -1,36 +0,0 @@ -# frozen_string_literal: true - -module Bundler - class CLI::Cache - attr_reader :options - def initialize(options) - @options = options - end - - def run - Bundler.definition.validate_runtime! - Bundler.definition.resolve_with_cache! - setup_cache_all - Bundler.settings.set_command_option_if_given :cache_all_platforms, options["all-platforms"] - Bundler.load.cache - Bundler.settings.set_command_option_if_given :no_prune, options["no-prune"] - Bundler.load.lock - rescue GemNotFound => e - Bundler.ui.error(e.message) - Bundler.ui.warn "Run `bundle install` to install missing gems." - exit 1 - end - - private - - def setup_cache_all - Bundler.settings.set_command_option_if_given :cache_all, options[:all] - - if Bundler.definition.has_local_dependencies? && !Bundler.feature_flag.cache_all? - Bundler.ui.warn "Your Gemfile contains path and git dependencies. If you want " \ - "to package them as well, please pass the --all flag. This will be the default " \ - "on Bundler 2.0." - end - end - end -end diff --git a/lib/bundler/cli/check.rb b/lib/bundler/cli/check.rb deleted file mode 100644 index e572787dc4..0000000000 --- a/lib/bundler/cli/check.rb +++ /dev/null @@ -1,38 +0,0 @@ -# frozen_string_literal: true - -module Bundler - class CLI::Check - attr_reader :options - - def initialize(options) - @options = options - end - - def run - Bundler.settings.set_command_option_if_given :path, options[:path] - - begin - definition = Bundler.definition - definition.validate_runtime! - not_installed = definition.missing_specs - rescue GemNotFound, VersionConflict - Bundler.ui.error "Bundler can't satisfy your Gemfile's dependencies." - Bundler.ui.warn "Install missing gems with `bundle install`." - exit 1 - end - - if not_installed.any? - Bundler.ui.error "The following gems are missing" - not_installed.each {|s| Bundler.ui.error " * #{s.name} (#{s.version})" } - Bundler.ui.warn "Install missing gems with `bundle install`" - exit 1 - elsif !Bundler.default_lockfile.file? && Bundler.frozen? - Bundler.ui.error "This bundle has been frozen, but there is no #{Bundler.default_lockfile.relative_path_from(SharedHelpers.pwd)} present" - exit 1 - else - Bundler.load.lock(:preserve_unknown_sections => true) unless options[:"dry-run"] - Bundler.ui.info "The Gemfile's dependencies are satisfied" - end - end - end -end diff --git a/lib/bundler/cli/clean.rb b/lib/bundler/cli/clean.rb deleted file mode 100644 index 4a407fbae7..0000000000 --- a/lib/bundler/cli/clean.rb +++ /dev/null @@ -1,25 +0,0 @@ -# frozen_string_literal: true - -module Bundler - class CLI::Clean - attr_reader :options - - def initialize(options) - @options = options - end - - def run - require_path_or_force unless options[:"dry-run"] - Bundler.load.clean(options[:"dry-run"]) - end - - protected - - def require_path_or_force - return unless Bundler.use_system_gems? && !options[:force] - raise InvalidOption, "Cleaning all the gems on your system is dangerous! " \ - "If you're sure you want to remove every system gem not in this " \ - "bundle, run `bundle clean --force`." - end - end -end diff --git a/lib/bundler/cli/common.rb b/lib/bundler/cli/common.rb deleted file mode 100644 index 9d40ee9dfd..0000000000 --- a/lib/bundler/cli/common.rb +++ /dev/null @@ -1,102 +0,0 @@ -# frozen_string_literal: true - -module Bundler - module CLI::Common - def self.output_post_install_messages(messages) - return if Bundler.settings["ignore_messages"] - messages.to_a.each do |name, msg| - print_post_install_message(name, msg) unless Bundler.settings["ignore_messages.#{name}"] - end - end - - def self.print_post_install_message(name, msg) - Bundler.ui.confirm "Post-install message from #{name}:" - Bundler.ui.info msg - end - - def self.output_without_groups_message - return if Bundler.settings[:without].empty? - Bundler.ui.confirm without_groups_message - end - - def self.without_groups_message - groups = Bundler.settings[:without] - group_list = [groups[0...-1].join(", "), groups[-1..-1]]. - reject {|s| s.to_s.empty? }.join(" and ") - group_str = (groups.size == 1) ? "group" : "groups" - "Gems in the #{group_str} #{group_list} were not installed." - end - - def self.select_spec(name, regex_match = nil) - specs = [] - regexp = Regexp.new(name) if regex_match - - Bundler.definition.specs.each do |spec| - return spec if spec.name == name - specs << spec if regexp && spec.name =~ regexp - end - - case specs.count - when 0 - raise GemNotFound, gem_not_found_message(name, Bundler.definition.dependencies) - when 1 - specs.first - else - ask_for_spec_from(specs) - end - rescue RegexpError - raise GemNotFound, gem_not_found_message(name, Bundler.definition.dependencies) - end - - def self.ask_for_spec_from(specs) - if !$stdout.tty? && ENV["BUNDLE_SPEC_RUN"].nil? - raise GemNotFound, gem_not_found_message(name, Bundler.definition.dependencies) - end - - specs.each_with_index do |spec, index| - Bundler.ui.info "#{index.succ} : #{spec.name}", true - end - Bundler.ui.info "0 : - exit -", true - - num = Bundler.ui.ask("> ").to_i - num > 0 ? specs[num - 1] : nil - end - - def self.gem_not_found_message(missing_gem_name, alternatives) - require "bundler/similarity_detector" - message = "Could not find gem '#{missing_gem_name}'." - alternate_names = alternatives.map {|a| a.respond_to?(:name) ? a.name : a } - suggestions = SimilarityDetector.new(alternate_names).similar_word_list(missing_gem_name) - message += "\nDid you mean #{suggestions}?" if suggestions - message - end - - def self.ensure_all_gems_in_lockfile!(names, locked_gems = Bundler.locked_gems) - locked_names = locked_gems.specs.map(&:name) - names.-(locked_names).each do |g| - raise GemNotFound, gem_not_found_message(g, locked_names) - end - end - - def self.configure_gem_version_promoter(definition, options) - patch_level = patch_level_options(options) - raise InvalidOption, "Provide only one of the following options: #{patch_level.join(", ")}" unless patch_level.length <= 1 - definition.gem_version_promoter.tap do |gvp| - gvp.level = patch_level.first || :major - gvp.strict = options[:strict] || options["update-strict"] - end - end - - def self.patch_level_options(options) - [:major, :minor, :patch].select {|v| options.keys.include?(v.to_s) } - end - - def self.clean_after_install? - clean = Bundler.settings[:clean] - return clean unless clean.nil? - clean ||= Bundler.feature_flag.auto_clean_without_path? && Bundler.settings[:path].nil? - clean &&= !Bundler.use_system_gems? - clean - end - end -end diff --git a/lib/bundler/cli/config.rb b/lib/bundler/cli/config.rb deleted file mode 100644 index 12f71ea8fe..0000000000 --- a/lib/bundler/cli/config.rb +++ /dev/null @@ -1,119 +0,0 @@ -# frozen_string_literal: true - -module Bundler - class CLI::Config - attr_reader :name, :options, :scope, :thor - attr_accessor :args - - def initialize(options, args, thor) - @options = options - @args = args - @thor = thor - @name = peek = args.shift - @scope = "global" - return unless peek && peek.start_with?("--") - @name = args.shift - @scope = peek[2..-1] - end - - def run - unless name - confirm_all - return - end - - unless valid_scope?(scope) - Bundler.ui.error "Invalid scope --#{scope} given. Please use --local or --global." - exit 1 - end - - if scope == "delete" - Bundler.settings.set_local(name, nil) - Bundler.settings.set_global(name, nil) - return - end - - if args.empty? - if options[:parseable] - if value = Bundler.settings[name] - Bundler.ui.info("#{name}=#{value}") - end - return - end - - confirm(name) - return - end - - Bundler.ui.info(message) if message - Bundler.settings.send("set_#{scope}", name, new_value) - end - - private - - def confirm_all - if @options[:parseable] - thor.with_padding do - Bundler.settings.all.each do |setting| - val = Bundler.settings[setting] - Bundler.ui.info "#{setting}=#{val}" - end - end - else - Bundler.ui.confirm "Settings are listed in order of priority. The top value will be used.\n" - Bundler.settings.all.each do |setting| - Bundler.ui.confirm "#{setting}" - show_pretty_values_for(setting) - Bundler.ui.confirm "" - end - end - end - - def confirm(name) - Bundler.ui.confirm "Settings for `#{name}` in order of priority. The top value will be used" - show_pretty_values_for(name) - end - - def new_value - pathname = Pathname.new(args.join(" ")) - if name.start_with?("local.") && pathname.directory? - pathname.expand_path.to_s - else - args.join(" ") - end - end - - def message - locations = Bundler.settings.locations(name) - if @options[:parseable] - "#{name}=#{new_value}" if new_value - elsif scope == "global" - if locations[:local] - "Your application has set #{name} to #{locations[:local].inspect}. " \ - "This will override the global value you are currently setting" - elsif locations[:env] - "You have a bundler environment variable for #{name} set to " \ - "#{locations[:env].inspect}. This will take precedence over the global value you are setting" - elsif locations[:global] && locations[:global] != args.join(" ") - "You are replacing the current global value of #{name}, which is currently " \ - "#{locations[:global].inspect}" - end - elsif scope == "local" && locations[:local] != args.join(" ") - "You are replacing the current local value of #{name}, which is currently " \ - "#{locations[:local].inspect}" - end - end - - def show_pretty_values_for(setting) - thor.with_padding do - Bundler.settings.pretty_values_for(setting).each do |line| - Bundler.ui.info line - end - end - end - - def valid_scope?(scope) - %w[delete local global].include?(scope) - end - end -end diff --git a/lib/bundler/cli/console.rb b/lib/bundler/cli/console.rb deleted file mode 100644 index 853eca8358..0000000000 --- a/lib/bundler/cli/console.rb +++ /dev/null @@ -1,43 +0,0 @@ -# frozen_string_literal: true - -module Bundler - class CLI::Console - attr_reader :options, :group - def initialize(options, group) - @options = options - @group = group - end - - def run - Bundler::SharedHelpers.major_deprecation 2, "bundle console will be replaced " \ - "by `bin/console` generated by `bundle gem `" - - group ? Bundler.require(:default, *(group.split.map!(&:to_sym))) : Bundler.require - ARGV.clear - - console = get_console(Bundler.settings[:console] || "irb") - console.start - end - - def get_console(name) - require name - get_constant(name) - rescue LoadError - Bundler.ui.error "Couldn't load console #{name}, falling back to irb" - require "irb" - get_constant("irb") - end - - def get_constant(name) - const_name = { - "pry" => :Pry, - "ripl" => :Ripl, - "irb" => :IRB, - }[name] - Object.const_get(const_name) - rescue NameError - Bundler.ui.error "Could not find constant #{const_name}" - exit 1 - end - end -end diff --git a/lib/bundler/cli/doctor.rb b/lib/bundler/cli/doctor.rb deleted file mode 100644 index 7f28a5eb13..0000000000 --- a/lib/bundler/cli/doctor.rb +++ /dev/null @@ -1,94 +0,0 @@ -# frozen_string_literal: true - -require "rbconfig" - -module Bundler - class CLI::Doctor - DARWIN_REGEX = /\s+(.+) \(compatibility / - LDD_REGEX = /\t\S+ => (\S+) \(\S+\)/ - - attr_reader :options - - def initialize(options) - @options = options - end - - def otool_available? - Bundler.which("otool") - end - - def ldd_available? - Bundler.which("ldd") - end - - def dylibs_darwin(path) - output = `/usr/bin/otool -L "#{path}"`.chomp - dylibs = output.split("\n")[1..-1].map {|l| l.match(DARWIN_REGEX).captures[0] }.uniq - # ignore @rpath and friends - dylibs.reject {|dylib| dylib.start_with? "@" } - end - - def dylibs_ldd(path) - output = `/usr/bin/ldd "#{path}"`.chomp - output.split("\n").map do |l| - match = l.match(LDD_REGEX) - next if match.nil? - match.captures[0] - end.compact - end - - def dylibs(path) - case RbConfig::CONFIG["host_os"] - when /darwin/ - return [] unless otool_available? - dylibs_darwin(path) - when /(linux|solaris|bsd)/ - return [] unless ldd_available? - dylibs_ldd(path) - else # Windows, etc. - Bundler.ui.warn("Dynamic library check not supported on this platform.") - [] - end - end - - def bundles_for_gem(spec) - Dir.glob("#{spec.full_gem_path}/**/*.bundle") - end - - def check! - require "bundler/cli/check" - Bundler::CLI::Check.new({}).run - end - - def run - Bundler.ui.level = "error" if options[:quiet] - Bundler.settings.validate! - check! - - definition = Bundler.definition - broken_links = {} - - definition.specs.each do |spec| - bundles_for_gem(spec).each do |bundle| - bad_paths = dylibs(bundle).select {|f| !File.exist?(f) } - if bad_paths.any? - broken_links[spec] ||= [] - broken_links[spec].concat(bad_paths) - end - end - end - - if broken_links.any? - message = "The following gems are missing OS dependencies:" - broken_links.map do |spec, paths| - paths.uniq.map do |path| - "\n * #{spec.name}: #{path}" - end - end.flatten.sort.each {|m| message += m } - raise ProductionError, message - else - Bundler.ui.info "No issues found with the installed bundle" - end - end - end -end diff --git a/lib/bundler/cli/exec.rb b/lib/bundler/cli/exec.rb deleted file mode 100644 index 2fdc614fbb..0000000000 --- a/lib/bundler/cli/exec.rb +++ /dev/null @@ -1,105 +0,0 @@ -# frozen_string_literal: true - -require "bundler/current_ruby" - -module Bundler - class CLI::Exec - attr_reader :options, :args, :cmd - - RESERVED_SIGNALS = %w[SEGV BUS ILL FPE VTALRM KILL STOP].freeze - - def initialize(options, args) - @options = options - @cmd = args.shift - @args = args - - if Bundler.current_ruby.ruby_2? && !Bundler.current_ruby.jruby? - @args << { :close_others => !options.keep_file_descriptors? } - elsif options.keep_file_descriptors? - Bundler.ui.warn "Ruby version #{RUBY_VERSION} defaults to keeping non-standard file descriptors on Kernel#exec." - end - end - - def run - validate_cmd! - SharedHelpers.set_bundle_environment - if bin_path = Bundler.which(cmd) - if !Bundler.settings[:disable_exec_load] && ruby_shebang?(bin_path) - return kernel_load(bin_path, *args) - end - # First, try to exec directly to something in PATH - if Bundler.current_ruby.jruby_18? - kernel_exec(bin_path, *args) - else - kernel_exec([bin_path, cmd], *args) - end - else - # exec using the given command - kernel_exec(cmd, *args) - end - end - - private - - def validate_cmd! - return unless cmd.nil? - Bundler.ui.error "bundler: exec needs a command to run" - exit 128 - end - - def kernel_exec(*args) - ui = Bundler.ui - Bundler.ui = nil - Kernel.exec(*args) - rescue Errno::EACCES, Errno::ENOEXEC - Bundler.ui = ui - Bundler.ui.error "bundler: not executable: #{cmd}" - exit 126 - rescue Errno::ENOENT - Bundler.ui = ui - Bundler.ui.error "bundler: command not found: #{cmd}" - Bundler.ui.warn "Install missing gem executables with `bundle install`" - exit 127 - end - - def kernel_load(file, *args) - args.pop if args.last.is_a?(Hash) - ARGV.replace(args) - $0 = file - Process.setproctitle(process_title(file, args)) if Process.respond_to?(:setproctitle) - ui = Bundler.ui - Bundler.ui = nil - require "bundler/setup" - signals = Signal.list.keys - RESERVED_SIGNALS - signals.each {|s| trap(s, "DEFAULT") } - Kernel.load(file) - rescue SystemExit, SignalException - raise - rescue Exception => e # rubocop:disable Lint/RescueException - Bundler.ui = ui - Bundler.ui.error "bundler: failed to load command: #{cmd} (#{file})" - backtrace = e.backtrace.take_while {|bt| !bt.start_with?(__FILE__) } - abort "#{e.class}: #{e.message}\n #{backtrace.join("\n ")}" - end - - def process_title(file, args) - "#{file} #{args.join(" ")}".strip - end - - def ruby_shebang?(file) - possibilities = [ - "#!/usr/bin/env ruby\n", - "#!/usr/bin/env jruby\n", - "#!#{Gem.ruby}\n", - ] - - if File.zero?(file) - Bundler.ui.warn "#{file} is empty" - return false - end - - first_line = File.open(file, "rb") {|f| f.read(possibilities.map(&:size).max) } - possibilities.any? {|shebang| first_line.start_with?(shebang) } - end - end -end diff --git a/lib/bundler/cli/gem.rb b/lib/bundler/cli/gem.rb deleted file mode 100644 index 885578e819..0000000000 --- a/lib/bundler/cli/gem.rb +++ /dev/null @@ -1,249 +0,0 @@ -# frozen_string_literal: true - -require "pathname" - -module Bundler - class CLI - Bundler.require_thor_actions - include Thor::Actions - end - - class CLI::Gem - TEST_FRAMEWORK_VERSIONS = { - "rspec" => "3.0", - "minitest" => "5.0" - }.freeze - - attr_reader :options, :gem_name, :thor, :name, :target - - def initialize(options, gem_name, thor) - @options = options - @gem_name = resolve_name(gem_name) - - @thor = thor - thor.behavior = :invoke - thor.destination_root = nil - - @name = @gem_name - @target = SharedHelpers.pwd.join(gem_name) - - validate_ext_name if options[:ext] - end - - def run - Bundler.ui.confirm "Creating gem '#{name}'..." - - underscored_name = name.tr("-", "_") - namespaced_path = name.tr("-", "/") - constant_name = name.gsub(/-[_-]*(?![_-]|$)/) { "::" }.gsub(/([_-]+|(::)|^)(.|$)/) { $2.to_s + $3.upcase } - constant_array = constant_name.split("::") - - git_installed = Bundler.git_present? - - git_author_name = git_installed ? `git config user.name`.chomp : "" - github_username = git_installed ? `git config github.user`.chomp : "" - git_user_email = git_installed ? `git config user.email`.chomp : "" - - config = { - :name => name, - :underscored_name => underscored_name, - :namespaced_path => namespaced_path, - :makefile_path => "#{underscored_name}/#{underscored_name}", - :constant_name => constant_name, - :constant_array => constant_array, - :author => git_author_name.empty? ? "TODO: Write your name" : git_author_name, - :email => git_user_email.empty? ? "TODO: Write your email address" : git_user_email, - :test => options[:test], - :ext => options[:ext], - :exe => options[:exe], - :bundler_version => bundler_dependency_version, - :github_username => github_username.empty? ? "[USERNAME]" : github_username - } - ensure_safe_gem_name(name, constant_array) - - templates = { - "Gemfile.tt" => "Gemfile", - "lib/newgem.rb.tt" => "lib/#{namespaced_path}.rb", - "lib/newgem/version.rb.tt" => "lib/#{namespaced_path}/version.rb", - "newgem.gemspec.tt" => "#{name}.gemspec", - "Rakefile.tt" => "Rakefile", - "README.md.tt" => "README.md", - "bin/console.tt" => "bin/console", - "bin/setup.tt" => "bin/setup" - } - - executables = %w[ - bin/console - bin/setup - ] - - templates.merge!("gitignore.tt" => ".gitignore") if Bundler.git_present? - - if test_framework = ask_and_set_test_framework - config[:test] = test_framework - config[:test_framework_version] = TEST_FRAMEWORK_VERSIONS[test_framework] - - templates.merge!("travis.yml.tt" => ".travis.yml") - - case test_framework - when "rspec" - templates.merge!( - "rspec.tt" => ".rspec", - "spec/spec_helper.rb.tt" => "spec/spec_helper.rb", - "spec/newgem_spec.rb.tt" => "spec/#{namespaced_path}_spec.rb" - ) - when "minitest" - templates.merge!( - "test/test_helper.rb.tt" => "test/test_helper.rb", - "test/newgem_test.rb.tt" => "test/#{namespaced_path}_test.rb" - ) - end - end - - config[:test_task] = config[:test] == "minitest" ? "test" : "spec" - - if ask_and_set(:mit, "Do you want to license your code permissively under the MIT license?", - "This means that any other developer or company will be legally allowed to use your code " \ - "for free as long as they admit you created it. You can read more about the MIT license " \ - "at http://choosealicense.com/licenses/mit.") - config[:mit] = true - Bundler.ui.info "MIT License enabled in config" - templates.merge!("LICENSE.txt.tt" => "LICENSE.txt") - end - - if ask_and_set(:coc, "Do you want to include a code of conduct in gems you generate?", - "Codes of conduct can increase contributions to your project by contributors who " \ - "prefer collaborative, safe spaces. You can read more about the code of conduct at " \ - "contributor-covenant.org. Having a code of conduct means agreeing to the responsibility " \ - "of enforcing it, so be sure that you are prepared to do that. Be sure that your email " \ - "address is specified as a contact in the generated code of conduct so that people know " \ - "who to contact in case of a violation. For suggestions about " \ - "how to enforce codes of conduct, see http://bit.ly/coc-enforcement.") - config[:coc] = true - Bundler.ui.info "Code of conduct enabled in config" - templates.merge!("CODE_OF_CONDUCT.md.tt" => "CODE_OF_CONDUCT.md") - end - - templates.merge!("exe/newgem.tt" => "exe/#{name}") if config[:exe] - - if options[:ext] - templates.merge!( - "ext/newgem/extconf.rb.tt" => "ext/#{name}/extconf.rb", - "ext/newgem/newgem.h.tt" => "ext/#{name}/#{underscored_name}.h", - "ext/newgem/newgem.c.tt" => "ext/#{name}/#{underscored_name}.c" - ) - end - - templates.each do |src, dst| - destination = target.join(dst) - SharedHelpers.filesystem_access(destination) do - thor.template("newgem/#{src}", destination, config) - end - end - - executables.each do |file| - SharedHelpers.filesystem_access(target.join(file)) do |path| - executable = (path.stat.mode | 0o111) - path.chmod(executable) - end - end - - if Bundler.git_present? - Bundler.ui.info "Initializing git repo in #{target}" - Dir.chdir(target) do - `git init` - `git add .` - end - end - - # Open gemspec in editor - open_editor(options["edit"], target.join("#{name}.gemspec")) if options[:edit] - rescue Errno::EEXIST => e - raise GenericSystemCallError.new(e, "There was a conflict while creating the new gem.") - end - - private - - def resolve_name(name) - SharedHelpers.pwd.join(name).basename.to_s - end - - def ask_and_set(key, header, message) - choice = options[key] - choice = Bundler.settings["gem.#{key}"] if choice.nil? - - if choice.nil? - Bundler.ui.confirm header - choice = Bundler.ui.yes? "#{message} y/(n):" - Bundler.settings.set_global("gem.#{key}", choice) - end - - choice - end - - def validate_ext_name - return unless gem_name.index("-") - - Bundler.ui.error "You have specified a gem name which does not conform to the \n" \ - "naming guidelines for C extensions. For more information, \n" \ - "see the 'Extension Naming' section at the following URL:\n" \ - "http://guides.rubygems.org/gems-with-extensions/\n" - exit 1 - end - - def ask_and_set_test_framework - test_framework = options[:test] || Bundler.settings["gem.test"] - - if test_framework.nil? - Bundler.ui.confirm "Do you want to generate tests with your gem?" - result = Bundler.ui.ask "Type 'rspec' or 'minitest' to generate those test files now and " \ - "in the future. rspec/minitest/(none):" - if result =~ /rspec|minitest/ - test_framework = result - else - test_framework = false - end - end - - if Bundler.settings["gem.test"].nil? - Bundler.settings.set_global("gem.test", test_framework) - end - - test_framework - end - - def bundler_dependency_version - v = Gem::Version.new(Bundler::VERSION) - req = v.segments[0..1] - req << "a" if v.prerelease? - req.join(".") - end - - def ensure_safe_gem_name(name, constant_array) - if name =~ /^\d/ - Bundler.ui.error "Invalid gem name #{name} Please give a name which does not start with numbers." - exit 1 - end - - constant_name = constant_array.join("::") - - existing_constant = constant_array.inject(Object) do |c, s| - defined = begin - c.const_defined?(s) - rescue NameError - Bundler.ui.error "Invalid gem name #{name} -- `#{constant_name}` is an invalid constant name" - exit 1 - end - (defined && c.const_get(s)) || break - end - - return unless existing_constant - Bundler.ui.error "Invalid gem name #{name} constant #{constant_name} is already in use. Please choose another gem name." - exit 1 - end - - def open_editor(editor, file) - thor.run(%(#{editor} "#{file}")) - end - end -end diff --git a/lib/bundler/cli/info.rb b/lib/bundler/cli/info.rb deleted file mode 100644 index 958b525067..0000000000 --- a/lib/bundler/cli/info.rb +++ /dev/null @@ -1,50 +0,0 @@ -# frozen_string_literal: true - -module Bundler - class CLI::Info - attr_reader :gem_name, :options - def initialize(options, gem_name) - @options = options - @gem_name = gem_name - end - - def run - spec = spec_for_gem(gem_name) - - spec_not_found(gem_name) unless spec - return print_gem_path(spec) if @options[:path] - print_gem_info(spec) - end - - private - - def spec_for_gem(gem_name) - spec = Bundler.definition.specs.find {|s| s.name == gem_name } - spec || default_gem_spec(gem_name) - end - - def default_gem_spec(gem_name) - return unless Gem::Specification.respond_to?(:find_all_by_name) - gem_spec = Gem::Specification.find_all_by_name(gem_name).last - return gem_spec if gem_spec && gem_spec.respond_to?(:default_gem?) && gem_spec.default_gem? - end - - def spec_not_found(gem_name) - raise GemNotFound, Bundler::CLI::Common.gem_not_found_message(gem_name, Bundler.definition.dependencies) - end - - def print_gem_path(spec) - Bundler.ui.info spec.full_gem_path - end - - def print_gem_info(spec) - gem_info = String.new - gem_info << " * #{spec.name} (#{spec.version}#{spec.git_version})\n" - gem_info << "\tSummary: #{spec.summary}\n" if spec.summary - gem_info << "\tHomepage: #{spec.homepage}\n" if spec.homepage - gem_info << "\tPath: #{spec.full_gem_path}\n" - gem_info << "\tDefault Gem: yes" if spec.respond_to?(:default_gem?) && spec.default_gem? - Bundler.ui.info gem_info - end - end -end diff --git a/lib/bundler/cli/init.rb b/lib/bundler/cli/init.rb deleted file mode 100644 index fa53e7c74b..0000000000 --- a/lib/bundler/cli/init.rb +++ /dev/null @@ -1,42 +0,0 @@ -# frozen_string_literal: true - -module Bundler - class CLI::Init - attr_reader :options - def initialize(options) - @options = options - end - - def run - if File.exist?(gemfile) - Bundler.ui.error "#{gemfile} already exists at #{File.expand_path(gemfile)}" - exit 1 - end - - if options[:gemspec] - gemspec = File.expand_path(options[:gemspec]) - unless File.exist?(gemspec) - Bundler.ui.error "Gem specification #{gemspec} doesn't exist" - exit 1 - end - - spec = Bundler.load_gemspec_uncached(gemspec) - - File.open(gemfile, "wb") do |file| - file << "# Generated from #{gemspec}\n" - file << spec.to_gemfile - end - else - FileUtils.cp(File.expand_path("../../templates/#{gemfile}", __FILE__), gemfile) - end - - puts "Writing new #{gemfile} to #{SharedHelpers.pwd}/#{gemfile}" - end - - private - - def gemfile - @gemfile ||= Bundler.feature_flag.init_gems_rb? ? "gems.rb" : "Gemfile" - end - end -end diff --git a/lib/bundler/cli/inject.rb b/lib/bundler/cli/inject.rb deleted file mode 100644 index b00675d348..0000000000 --- a/lib/bundler/cli/inject.rb +++ /dev/null @@ -1,60 +0,0 @@ -# frozen_string_literal: true - -module Bundler - class CLI::Inject - attr_reader :options, :name, :version, :group, :source, :gems - def initialize(options, name, version) - @options = options - @name = name - @version = version || last_version_number - @group = options[:group].split(",") unless options[:group].nil? - @source = options[:source] - @gems = [] - end - - def run - # The required arguments allow Thor to give useful feedback when the arguments - # are incorrect. This adds those first two arguments onto the list as a whole. - gems.unshift(source).unshift(group).unshift(version).unshift(name) - - # Build an array of Dependency objects out of the arguments - deps = [] - # when `inject` support addition of more than one gem, then this loop will - # help. Currently this loop is running once. - gems.each_slice(4) do |gem_name, gem_version, gem_group, gem_source| - ops = Gem::Requirement::OPS.map {|key, _val| key } - has_op = ops.any? {|op| gem_version.start_with? op } - gem_version = "~> #{gem_version}" unless has_op - deps << Bundler::Dependency.new(gem_name, gem_version, "group" => gem_group, "source" => gem_source) - end - - added = Injector.inject(deps, options) - - if added.any? - Bundler.ui.confirm "Added to Gemfile:" - Bundler.ui.confirm(added.map do |d| - name = "'#{d.name}'" - requirement = ", '#{d.requirement}'" - group = ", :group => #{d.groups.inspect}" if d.groups != Array(:default) - source = ", :source => '#{d.source}'" unless d.source.nil? - %(gem #{name}#{requirement}#{group}#{source}) - end.join("\n")) - else - Bundler.ui.confirm "All gems were already present in the Gemfile" - end - end - - private - - def last_version_number - definition = Bundler.definition(true) - definition.resolve_remotely! - specs = definition.index[name].sort_by(&:version) - unless options[:pre] - specs.delete_if {|b| b.respond_to?(:version) && b.version.prerelease? } - end - spec = specs.last - spec.version.to_s - end - end -end diff --git a/lib/bundler/cli/install.rb b/lib/bundler/cli/install.rb deleted file mode 100644 index f0b821ed84..0000000000 --- a/lib/bundler/cli/install.rb +++ /dev/null @@ -1,214 +0,0 @@ -# frozen_string_literal: true - -module Bundler - class CLI::Install - attr_reader :options - def initialize(options) - @options = options - end - - def run - Bundler.ui.level = "error" if options[:quiet] - - warn_if_root - - normalize_groups - - Bundler::SharedHelpers.set_env "RB_USER_INSTALL", "1" if Bundler::FREEBSD - - # Disable color in deployment mode - Bundler.ui.shell = Thor::Shell::Basic.new if options[:deployment] - - check_for_options_conflicts - - check_trust_policy - - if options[:deployment] || options[:frozen] || Bundler.frozen? - unless Bundler.default_lockfile.exist? - flag = "--deployment flag" if options[:deployment] - flag ||= "--frozen flag" if options[:frozen] - flag ||= "deployment setting" - raise ProductionError, "The #{flag} requires a #{Bundler.default_lockfile.relative_path_from(SharedHelpers.pwd)}. Please make " \ - "sure you have checked your #{Bundler.default_lockfile.relative_path_from(SharedHelpers.pwd)} into version control " \ - "before deploying." - end - - options[:local] = true if Bundler.app_cache.exist? - - if Bundler.feature_flag.deployment_means_frozen? - Bundler.settings.set_command_option :deployment, true - else - Bundler.settings.set_command_option :frozen, true - end - end - - # When install is called with --no-deployment, disable deployment mode - if options[:deployment] == false - Bundler.settings.set_command_option :frozen, nil - options[:system] = true - end - - normalize_settings - - Bundler::Fetcher.disable_endpoint = options["full-index"] - - if options["binstubs"] - Bundler::SharedHelpers.major_deprecation 2, - "The --binstubs option will be removed in favor of `bundle binstubs`" - end - - Plugin.gemfile_install(Bundler.default_gemfile) if Bundler.feature_flag.plugins? - - definition = Bundler.definition - definition.validate_runtime! - - installer = Installer.install(Bundler.root, definition, options) - Bundler.load.cache if Bundler.app_cache.exist? && !options["no-cache"] && !Bundler.frozen? - - Bundler.ui.confirm "Bundle complete! #{dependencies_count_for(definition)}, #{gems_installed_for(definition)}." - Bundler::CLI::Common.output_without_groups_message - - if Bundler.use_system_gems? - Bundler.ui.confirm "Use `bundle info [gemname]` to see where a bundled gem is installed." - else - absolute_path = File.expand_path(Bundler.configured_bundle_path.base_path) - relative_path = absolute_path.sub(File.expand_path(".") + File::SEPARATOR, "." + File::SEPARATOR) - Bundler.ui.confirm "Bundled gems are installed into `#{relative_path}`" - end - - Bundler::CLI::Common.output_post_install_messages installer.post_install_messages - - warn_ambiguous_gems - - if CLI::Common.clean_after_install? - require "bundler/cli/clean" - Bundler::CLI::Clean.new(options).run - end - rescue GemNotFound, VersionConflict => e - if options[:local] && Bundler.app_cache.exist? - Bundler.ui.warn "Some gems seem to be missing from your #{Bundler.settings.app_cache_path} directory." - end - - unless Bundler.definition.has_rubygems_remotes? - Bundler.ui.warn <<-WARN, :wrap => true - Your Gemfile has no gem server sources. If you need gems that are \ - not already on your machine, add a line like this to your Gemfile: - source 'https://rubygems.org' - WARN - end - raise e - rescue Gem::InvalidSpecificationException => e - Bundler.ui.warn "You have one or more invalid gemspecs that need to be fixed." - raise e - end - - private - - def warn_if_root - return if Bundler.settings[:silence_root_warning] || Bundler::WINDOWS || !Process.uid.zero? - Bundler.ui.warn "Don't run Bundler as root. Bundler can ask for sudo " \ - "if it is needed, and installing your bundle as root will break this " \ - "application for all non-root users on this machine.", :wrap => true - end - - def dependencies_count_for(definition) - count = definition.dependencies.count - "#{count} Gemfile #{count == 1 ? "dependency" : "dependencies"}" - end - - def gems_installed_for(definition) - count = definition.specs.count - "#{count} #{count == 1 ? "gem" : "gems"} now installed" - end - - def check_for_group_conflicts_in_cli_options - conflicting_groups = Array(options[:without]) & Array(options[:with]) - return if conflicting_groups.empty? - raise InvalidOption, "You can't list a group in both with and without." \ - " The offending groups are: #{conflicting_groups.join(", ")}." - end - - def check_for_options_conflicts - if (options[:path] || options[:deployment]) && options[:system] - error_message = String.new - error_message << "You have specified both --path as well as --system. Please choose only one option.\n" if options[:path] - error_message << "You have specified both --deployment as well as --system. Please choose only one option.\n" if options[:deployment] - raise InvalidOption.new(error_message) - end - end - - def check_trust_policy - trust_policy = options["trust-policy"] - unless Bundler.rubygems.security_policies.keys.unshift(nil).include?(trust_policy) - raise InvalidOption, "RubyGems doesn't know about trust policy '#{trust_policy}'. " \ - "The known policies are: #{Bundler.rubygems.security_policies.keys.join(", ")}." - end - Bundler.settings.set_command_option_if_given :"trust-policy", trust_policy - end - - def normalize_groups - options[:with] &&= options[:with].join(":").tr(" ", ":").split(":") - options[:without] &&= options[:without].join(":").tr(" ", ":").split(":") - - check_for_group_conflicts_in_cli_options - - Bundler.settings.set_command_option :with, nil if options[:with] == [] - Bundler.settings.set_command_option :without, nil if options[:without] == [] - - with = options.fetch(:with, []) - with |= Bundler.settings[:with].map(&:to_s) - with -= options[:without] if options[:without] - - without = options.fetch(:without, []) - without |= Bundler.settings[:without].map(&:to_s) - without -= options[:with] if options[:with] - - options[:with] = with - options[:without] = without - end - - def normalize_settings - Bundler.settings.set_command_option :path, nil if options[:system] - Bundler.settings.set_command_option :path, "vendor/bundle" if options[:deployment] - Bundler.settings.set_command_option_if_given :path, options["path"] - Bundler.settings.set_command_option :path, "bundle" if options["standalone"] && Bundler.settings[:path].nil? - - bin_option = options["binstubs"] - bin_option = nil if bin_option && bin_option.empty? - Bundler.settings.set_command_option :bin, bin_option if options["binstubs"] - - Bundler.settings.set_command_option_if_given :shebang, options["shebang"] - - Bundler.settings.set_command_option_if_given :jobs, options["jobs"] - - Bundler.settings.set_command_option_if_given :no_prune, options["no-prune"] - - Bundler.settings.set_command_option_if_given :no_install, options["no-install"] - - Bundler.settings.set_command_option_if_given :clean, options["clean"] - - unless Bundler.settings[:without] == options[:without] && Bundler.settings[:with] == options[:with] - # need to nil them out first to get around validation for backwards compatibility - Bundler.settings.set_command_option :without, nil - Bundler.settings.set_command_option :with, nil - Bundler.settings.set_command_option :without, options[:without] - options[:with] - Bundler.settings.set_command_option :with, options[:with] - end - - options[:force] = options[:redownload] - end - - def warn_ambiguous_gems - Installer.ambiguous_gems.to_a.each do |name, installed_from_uri, *also_found_in_uris| - Bundler.ui.error "Warning: the gem '#{name}' was found in multiple sources." - Bundler.ui.error "Installed from: #{installed_from_uri}" - Bundler.ui.error "Also found in:" - also_found_in_uris.each {|uri| Bundler.ui.error " * #{uri}" } - Bundler.ui.error "You should add a source requirement to restrict this gem to your preferred source." - Bundler.ui.error "For example:" - Bundler.ui.error " gem '#{name}', :source => '#{installed_from_uri}'" - Bundler.ui.error "Then uninstall the gem '#{name}' (or delete all bundled gems) and then install again." - end - end - end -end diff --git a/lib/bundler/cli/issue.rb b/lib/bundler/cli/issue.rb deleted file mode 100644 index 91f827ea99..0000000000 --- a/lib/bundler/cli/issue.rb +++ /dev/null @@ -1,40 +0,0 @@ -# frozen_string_literal: true - -require "rbconfig" - -module Bundler - class CLI::Issue - def run - Bundler.ui.info <<-EOS.gsub(/^ {8}/, "") - Did you find an issue with Bundler? Before filing a new issue, - be sure to check out these resources: - - 1. Check out our troubleshooting guide for quick fixes to common issues: - https://github.com/bundler/bundler/blob/master/doc/TROUBLESHOOTING.md - - 2. Instructions for common Bundler uses can be found on the documentation - site: http://bundler.io/ - - 3. Information about each Bundler command can be found in the Bundler - man pages: http://bundler.io/man/bundle.1.html - - Hopefully the troubleshooting steps above resolved your problem! If things - still aren't working the way you expect them to, please let us know so - that we can diagnose and help fix the problem you're having. Please - view the Filing Issues guide for more information: - https://github.com/bundler/bundler/blob/master/doc/contributing/ISSUES.md - - EOS - - Bundler.ui.info Bundler::Env.report - - Bundler.ui.info "\n## Bundle Doctor" - doctor - end - - def doctor - require "bundler/cli/doctor" - Bundler::CLI::Doctor.new({}).run - end - end -end diff --git a/lib/bundler/cli/list.rb b/lib/bundler/cli/list.rb deleted file mode 100644 index b5e7c1e650..0000000000 --- a/lib/bundler/cli/list.rb +++ /dev/null @@ -1,22 +0,0 @@ -# frozen_string_literal: true - -module Bundler - class CLI::List - def initialize(options) - @options = options - end - - def run - specs = Bundler.load.specs.reject {|s| s.name == "bundler" }.sort_by(&:name) - return specs.each {|s| Bundler.ui.info s.name } if @options["name-only"] - - return Bundler.ui.info "No gems in the Gemfile" if specs.empty? - Bundler.ui.info "Gems included by the bundle:" - specs.each do |s| - Bundler.ui.info " * #{s.name} (#{s.version}#{s.git_version})" - end - - Bundler.ui.info "Use `bundle info` to print more detailed information about a gem" - end - end -end diff --git a/lib/bundler/cli/lock.rb b/lib/bundler/cli/lock.rb deleted file mode 100644 index 7dd078b1ef..0000000000 --- a/lib/bundler/cli/lock.rb +++ /dev/null @@ -1,63 +0,0 @@ -# frozen_string_literal: true - -module Bundler - class CLI::Lock - attr_reader :options - - def initialize(options) - @options = options - end - - def run - unless Bundler.default_gemfile - Bundler.ui.error "Unable to find a Gemfile to lock" - exit 1 - end - - print = options[:print] - ui = Bundler.ui - Bundler.ui = UI::Silent.new if print - - Bundler::Fetcher.disable_endpoint = options["full-index"] - - update = options[:update] - if update.is_a?(Array) # unlocking specific gems - Bundler::CLI::Common.ensure_all_gems_in_lockfile!(update) - update = { :gems => update, :lock_shared_dependencies => options[:conservative] } - end - definition = Bundler.definition(update) - - Bundler::CLI::Common.configure_gem_version_promoter(Bundler.definition, options) if options[:update] - - options["remove-platform"].each do |platform| - definition.remove_platform(platform) - end - - options["add-platform"].each do |platform_string| - platform = Gem::Platform.new(platform_string) - if platform.to_s == "unknown" - Bundler.ui.warn "The platform `#{platform_string}` is unknown to RubyGems " \ - "and adding it will likely lead to resolution errors" - end - definition.add_platform(platform) - end - - if definition.platforms.empty? - raise InvalidOption, "Removing all platforms from the bundle is not allowed" - end - - definition.resolve_remotely! unless options[:local] - - if print - puts definition.to_lock - else - file = options[:lockfile] - file = file ? File.expand_path(file) : Bundler.default_lockfile - puts "Writing lockfile to #{file}" - definition.lock(file) - end - - Bundler.ui = ui - end - end -end diff --git a/lib/bundler/cli/open.rb b/lib/bundler/cli/open.rb deleted file mode 100644 index 552fe6f128..0000000000 --- a/lib/bundler/cli/open.rb +++ /dev/null @@ -1,26 +0,0 @@ -# frozen_string_literal: true - -require "shellwords" - -module Bundler - class CLI::Open - attr_reader :options, :name - def initialize(options, name) - @options = options - @name = name - end - - def run - editor = [ENV["BUNDLER_EDITOR"], ENV["VISUAL"], ENV["EDITOR"]].find {|e| !e.nil? && !e.empty? } - return Bundler.ui.info("To open a bundled gem, set $EDITOR or $BUNDLER_EDITOR") unless editor - return unless spec = Bundler::CLI::Common.select_spec(name, :regex_match) - path = spec.full_gem_path - Dir.chdir(path) do - command = Shellwords.split(editor) + [path] - Bundler.with_original_env do - system(*command) - end || Bundler.ui.info("Could not run '#{command.join(" ")}'") - end - end - end -end diff --git a/lib/bundler/cli/outdated.rb b/lib/bundler/cli/outdated.rb deleted file mode 100644 index 5125cc710b..0000000000 --- a/lib/bundler/cli/outdated.rb +++ /dev/null @@ -1,260 +0,0 @@ -# frozen_string_literal: true - -module Bundler - class CLI::Outdated - attr_reader :options, :gems - - def initialize(options, gems) - @options = options - @gems = gems - end - - def run - check_for_deployment_mode - - sources = Array(options[:source]) - - gems.each do |gem_name| - Bundler::CLI::Common.select_spec(gem_name) - end - - Bundler.definition.validate_runtime! - current_specs = Bundler.ui.silence { Bundler.definition.resolve } - current_dependencies = {} - Bundler.ui.silence do - Bundler.load.dependencies.each do |dep| - current_dependencies[dep.name] = dep - end - end - - definition = if gems.empty? && sources.empty? - # We're doing a full update - Bundler.definition(true) - else - Bundler.definition(:gems => gems, :sources => sources) - end - - Bundler::CLI::Common.configure_gem_version_promoter( - Bundler.definition, - options - ) - - # the patch level options imply strict is also true. It wouldn't make - # sense otherwise. - strict = options[:strict] || - Bundler::CLI::Common.patch_level_options(options).any? - - filter_options_patch = options.keys & - %w[filter-major filter-minor filter-patch] - - definition_resolution = proc do - options[:local] ? definition.resolve_with_cache! : definition.resolve_remotely! - end - - if options[:parseable] - Bundler.ui.silence(&definition_resolution) - else - definition_resolution.call - end - - Bundler.ui.info "" - outdated_gems_by_groups = {} - outdated_gems_list = [] - - # Loop through the current specs - gemfile_specs, dependency_specs = current_specs.partition do |spec| - current_dependencies.key? spec.name - end - - (gemfile_specs + dependency_specs).sort_by(&:name).each do |current_spec| - next if !gems.empty? && !gems.include?(current_spec.name) - - dependency = current_dependencies[current_spec.name] - active_spec = retrieve_active_spec(strict, definition, current_spec) - - next if active_spec.nil? - if filter_options_patch.any? - update_present = update_present_via_semver_portions(current_spec, active_spec, options) - next unless update_present - end - - gem_outdated = Gem::Version.new(active_spec.version) > Gem::Version.new(current_spec.version) - next unless gem_outdated || (current_spec.git_version != active_spec.git_version) - groups = nil - if dependency && !options[:parseable] - groups = dependency.groups.join(", ") - end - - outdated_gems_list << { :active_spec => active_spec, - :current_spec => current_spec, - :dependency => dependency, - :groups => groups } - - outdated_gems_by_groups[groups] ||= [] - outdated_gems_by_groups[groups] << { :active_spec => active_spec, - :current_spec => current_spec, - :dependency => dependency, - :groups => groups } - end - - if outdated_gems_list.empty? - display_nothing_outdated_message(filter_options_patch) - else - unless options[:parseable] - if options[:pre] - Bundler.ui.info "Outdated gems included in the bundle (including " \ - "pre-releases):" - else - Bundler.ui.info "Outdated gems included in the bundle:" - end - end - - options_include_groups = [:group, :groups].select do |v| - options.keys.include?(v.to_s) - end - - if options_include_groups.any? - ordered_groups = outdated_gems_by_groups.keys.compact.sort - [nil, ordered_groups].flatten.each do |groups| - gems = outdated_gems_by_groups[groups] - contains_group = if groups - groups.split(",").include?(options[:group]) - else - options[:group] == "group" - end - - next if (!options[:groups] && !contains_group) || gems.nil? - - unless options[:parseable] - if groups - Bundler.ui.info "===== Group #{groups} =====" - else - Bundler.ui.info "===== Without group =====" - end - end - - gems.each do |gem| - print_gem( - gem[:current_spec], - gem[:active_spec], - gem[:dependency], - groups, - options_include_groups.any? - ) - end - end - else - outdated_gems_list.each do |gem| - print_gem( - gem[:current_spec], - gem[:active_spec], - gem[:dependency], - gem[:groups], - options_include_groups.any? - ) - end - end - - exit 1 - end - end - - private - - def retrieve_active_spec(strict, definition, current_spec) - if strict - active_spec = definition.find_resolved_spec(current_spec) - else - active_specs = definition.find_indexed_specs(current_spec) - if !current_spec.version.prerelease? && !options[:pre] && active_specs.size > 1 - active_specs.delete_if {|b| b.respond_to?(:version) && b.version.prerelease? } - end - active_spec = active_specs.last - end - - active_spec - end - - def display_nothing_outdated_message(filter_options_patch) - unless options[:parseable] - if filter_options_patch.any? - display = filter_options_patch.map do |o| - o.sub("filter-", "") - end.join(" or ") - - Bundler.ui.info "No #{display} updates to display.\n" - else - Bundler.ui.info "Bundle up to date!\n" - end - end - end - - def print_gem(current_spec, active_spec, dependency, groups, options_include_groups) - spec_version = "#{active_spec.version}#{active_spec.git_version}" - spec_version += " (from #{active_spec.loaded_from})" if Bundler.ui.debug? && active_spec.loaded_from - current_version = "#{current_spec.version}#{current_spec.git_version}" - - if dependency && dependency.specific? - dependency_version = %(, requested #{dependency.requirement}) - end - - spec_outdated_info = "#{active_spec.name} (newest #{spec_version}, " \ - "installed #{current_version}#{dependency_version})" - - output_message = if options[:parseable] - spec_outdated_info.to_s - elsif options_include_groups || !groups - " * #{spec_outdated_info}" - else - " * #{spec_outdated_info} in groups \"#{groups}\"" - end - - Bundler.ui.info output_message.rstrip - end - - def check_for_deployment_mode - return unless Bundler.frozen? - suggested_command = if Bundler.settings.locations("frozen")[:global] - "bundle config --delete frozen" - elsif Bundler.settings.locations("deployment").keys.&([:global, :local]).any? - "bundle config --delete deployment" - else - "bundle install --no-deployment" - end - raise ProductionError, "You are trying to check outdated gems in " \ - "deployment mode. Run `bundle outdated` elsewhere.\n" \ - "\nIf this is a development machine, remove the " \ - "#{Bundler.default_gemfile} freeze" \ - "\nby running `#{suggested_command}`." - end - - def update_present_via_semver_portions(current_spec, active_spec, options) - current_major = current_spec.version.segments.first - active_major = active_spec.version.segments.first - - update_present = false - update_present = active_major > current_major if options["filter-major"] - - if !update_present && (options["filter-minor"] || options["filter-patch"]) && current_major == active_major - current_minor = get_version_semver_portion_value(current_spec, 1) - active_minor = get_version_semver_portion_value(active_spec, 1) - - update_present = active_minor > current_minor if options["filter-minor"] - - if !update_present && options["filter-patch"] && current_minor == active_minor - current_patch = get_version_semver_portion_value(current_spec, 2) - active_patch = get_version_semver_portion_value(active_spec, 2) - - update_present = active_patch > current_patch - end - end - - update_present - end - - def get_version_semver_portion_value(spec, version_portion_index) - version_section = spec.version.segments[version_portion_index, 1] - version_section.nil? ? 0 : (version_section.first || 0) - end - end -end diff --git a/lib/bundler/cli/package.rb b/lib/bundler/cli/package.rb deleted file mode 100644 index 2dcd0e1e29..0000000000 --- a/lib/bundler/cli/package.rb +++ /dev/null @@ -1,49 +0,0 @@ -# frozen_string_literal: true - -module Bundler - class CLI::Package - attr_reader :options - - def initialize(options) - @options = options - end - - def run - Bundler.ui.level = "error" if options[:quiet] - Bundler.settings.set_command_option_if_given :path, options[:path] - Bundler.settings.set_command_option_if_given :cache_all_platforms, options["all-platforms"] - Bundler.settings.set_command_option_if_given :cache_path, options["cache-path"] - - setup_cache_all - install - - # TODO: move cache contents here now that all bundles are locked - custom_path = Bundler.settings[:path] if options[:path] - Bundler.load.cache(custom_path) - end - - private - - def install - require "bundler/cli/install" - options = self.options.dup - if Bundler.settings[:cache_all_platforms] - options["local"] = false - options["update"] = true - end - Bundler::CLI::Install.new(options).run - end - - def setup_cache_all - all = options.fetch(:all, Bundler.feature_flag.cache_command_is_package? || nil) - - Bundler.settings.set_command_option_if_given :cache_all, all - - if Bundler.definition.has_local_dependencies? && !Bundler.feature_flag.cache_all? - Bundler.ui.warn "Your Gemfile contains path and git dependencies. If you want " \ - "to package them as well, please pass the --all flag. This will be the default " \ - "on Bundler 2.0." - end - end - end -end diff --git a/lib/bundler/cli/platform.rb b/lib/bundler/cli/platform.rb deleted file mode 100644 index e97cad49a4..0000000000 --- a/lib/bundler/cli/platform.rb +++ /dev/null @@ -1,46 +0,0 @@ -# frozen_string_literal: true - -module Bundler - class CLI::Platform - attr_reader :options - def initialize(options) - @options = options - end - - def run - platforms, ruby_version = Bundler.ui.silence do - locked_ruby_version = Bundler.locked_gems && Bundler.locked_gems.ruby_version - gemfile_ruby_version = Bundler.definition.ruby_version && Bundler.definition.ruby_version.single_version_string - [Bundler.definition.platforms.map {|p| "* #{p}" }, - locked_ruby_version || gemfile_ruby_version] - end - output = [] - - if options[:ruby] - if ruby_version - output << ruby_version - else - output << "No ruby version specified" - end - else - output << "Your platform is: #{RUBY_PLATFORM}" - output << "Your app has gems that work on these platforms:\n#{platforms.join("\n")}" - - if ruby_version - output << "Your Gemfile specifies a Ruby version requirement:\n* #{ruby_version}" - - begin - Bundler.definition.validate_runtime! - output << "Your current platform satisfies the Ruby version requirement." - rescue RubyVersionMismatch => e - output << e.message - end - else - output << "Your Gemfile does not specify a Ruby version requirement." - end - end - - Bundler.ui.info output.join("\n\n") - end - end -end diff --git a/lib/bundler/cli/plugin.rb b/lib/bundler/cli/plugin.rb deleted file mode 100644 index 5488a9f28d..0000000000 --- a/lib/bundler/cli/plugin.rb +++ /dev/null @@ -1,24 +0,0 @@ -# frozen_string_literal: true - -require "bundler/vendored_thor" -module Bundler - class CLI::Plugin < Thor - desc "install PLUGINS", "Install the plugin from the source" - long_desc <<-D - Install plugins either from the rubygems source provided (with --source option) or from a git source provided with (--git option). If no sources are provided, it uses Gem.sources - D - method_option "source", :type => :string, :default => nil, :banner => - "URL of the RubyGems source to fetch the plugin from" - method_option "version", :type => :string, :default => nil, :banner => - "The version of the plugin to fetch" - method_option "git", :type => :string, :default => nil, :banner => - "URL of the git repo to fetch from" - method_option "branch", :type => :string, :default => nil, :banner => - "The git branch to checkout" - method_option "ref", :type => :string, :default => nil, :banner => - "The git revision to check out" - def install(*plugins) - Bundler::Plugin.install(plugins, options) - end - end -end diff --git a/lib/bundler/cli/pristine.rb b/lib/bundler/cli/pristine.rb deleted file mode 100644 index 9b9cdaa9b3..0000000000 --- a/lib/bundler/cli/pristine.rb +++ /dev/null @@ -1,43 +0,0 @@ -# frozen_string_literal: true - -module Bundler - class CLI::Pristine - def initialize(gems) - @gems = gems - end - - def run - CLI::Common.ensure_all_gems_in_lockfile!(@gems) - definition = Bundler.definition - definition.validate_runtime! - installer = Bundler::Installer.new(Bundler.root, definition) - - Bundler.load.specs.each do |spec| - next if spec.name == "bundler" # Source::Rubygems doesn't install bundler - next if !@gems.empty? && !@gems.include?(spec.name) - - gem_name = "#{spec.name} (#{spec.version}#{spec.git_version})" - gem_name += " (#{spec.platform})" if !spec.platform.nil? && spec.platform != Gem::Platform::RUBY - - case source = spec.source - when Source::Rubygems - cached_gem = spec.cache_file - unless File.exist?(cached_gem) - Bundler.ui.error("Failed to pristine #{gem_name}. Cached gem #{cached_gem} does not exist.") - next - end - - FileUtils.rm_rf spec.full_gem_path - when Source::Git - source.remote! - FileUtils.rm_rf spec.full_gem_path - else - Bundler.ui.warn("Cannot pristine #{gem_name}. Gem is sourced from local path.") - next - end - - Bundler::GemInstaller.new(spec, installer, false, 0, true).install_from_spec - end - end - end -end diff --git a/lib/bundler/cli/show.rb b/lib/bundler/cli/show.rb deleted file mode 100644 index 61756801b2..0000000000 --- a/lib/bundler/cli/show.rb +++ /dev/null @@ -1,75 +0,0 @@ -# frozen_string_literal: true - -module Bundler - class CLI::Show - attr_reader :options, :gem_name, :latest_specs - def initialize(options, gem_name) - @options = options - @gem_name = gem_name - @verbose = options[:verbose] || options[:outdated] - @latest_specs = fetch_latest_specs if @verbose - end - - def run - Bundler.ui.silence do - Bundler.definition.validate_runtime! - Bundler.load.lock - end - - if gem_name - if gem_name == "bundler" - path = File.expand_path("../../../..", __FILE__) - else - spec = Bundler::CLI::Common.select_spec(gem_name, :regex_match) - return unless spec - path = spec.full_gem_path - unless File.directory?(path) - Bundler.ui.warn "The gem #{gem_name} has been deleted. It was installed at:" - end - end - return Bundler.ui.info(path) - end - - if options[:paths] - Bundler.load.specs.sort_by(&:name).map do |s| - Bundler.ui.info s.full_gem_path - end - else - Bundler.ui.info "Gems included by the bundle:" - Bundler.load.specs.sort_by(&:name).each do |s| - desc = " * #{s.name} (#{s.version}#{s.git_version})" - if @verbose - latest = latest_specs.find {|l| l.name == s.name } - Bundler.ui.info <<-END.gsub(/^ +/, "") - #{desc} - \tSummary: #{s.summary || "No description available."} - \tHomepage: #{s.homepage || "No website available."} - \tStatus: #{outdated?(s, latest) ? "Outdated - #{s.version} < #{latest.version}" : "Up to date"} - END - else - Bundler.ui.info desc - end - end - end - end - - private - - def fetch_latest_specs - definition = Bundler.definition(true) - if options[:outdated] - Bundler.ui.info "Fetching remote specs for outdated check...\n\n" - Bundler.ui.silence { definition.resolve_remotely! } - else - definition.resolve_with_cache! - end - Bundler.reset! - definition.specs - end - - def outdated?(current, latest) - return false unless latest - Gem::Version.new(current.version) < Gem::Version.new(latest.version) - end - end -end diff --git a/lib/bundler/cli/update.rb b/lib/bundler/cli/update.rb deleted file mode 100644 index 3890ea307a..0000000000 --- a/lib/bundler/cli/update.rb +++ /dev/null @@ -1,91 +0,0 @@ -# frozen_string_literal: true - -module Bundler - class CLI::Update - attr_reader :options, :gems - def initialize(options, gems) - @options = options - @gems = gems - end - - def run - Bundler.ui.level = "error" if options[:quiet] - - Plugin.gemfile_install(Bundler.default_gemfile) if Bundler.feature_flag.plugins? - - sources = Array(options[:source]) - groups = Array(options[:group]).map(&:to_sym) - - full_update = gems.empty? && sources.empty? && groups.empty? && !options[:ruby] && !options[:bundler] - - if full_update && !options[:all] - if Bundler.feature_flag.update_requires_all_flag? - raise InvalidOption, "To update everything, pass the `--all` flag." - end - SharedHelpers.major_deprecation 2, "Pass --all to `bundle update` to update everything" - elsif !full_update && options[:all] - raise InvalidOption, "Cannot specify --all along with specific options." - end - - if full_update - # We're doing a full update - Bundler.definition(true) - else - unless Bundler.default_lockfile.exist? - raise GemfileLockNotFound, "This Bundle hasn't been installed yet. " \ - "Run `bundle install` to update and install the bundled gems." - end - Bundler::CLI::Common.ensure_all_gems_in_lockfile!(gems) - - if groups.any? - specs = Bundler.definition.specs_for groups - gems.concat(specs.map(&:name)) - end - - Bundler.definition(:gems => gems, :sources => sources, :ruby => options[:ruby], - :lock_shared_dependencies => options[:conservative], - :bundler => options[:bundler]) - end - - Bundler::CLI::Common.configure_gem_version_promoter(Bundler.definition, options) - - Bundler::Fetcher.disable_endpoint = options["full-index"] - - opts = options.dup - opts["update"] = true - opts["local"] = options[:local] - - Bundler.settings.set_command_option_if_given :jobs, opts["jobs"] - - Bundler.definition.validate_runtime! - installer = Installer.install Bundler.root, Bundler.definition, opts - Bundler.load.cache if Bundler.app_cache.exist? - - if CLI::Common.clean_after_install? - require "bundler/cli/clean" - Bundler::CLI::Clean.new(options).run - end - - if locked_gems = Bundler.definition.locked_gems - gems.each do |name| - locked_version = locked_gems.specs.find {|s| s.name == name } - locked_version &&= locked_version.version - next unless locked_version - new_version = Bundler.definition.specs[name].first - new_version &&= new_version.version - if !new_version - Bundler.ui.warn "Bundler attempted to update #{name} but it was removed from the bundle" - elsif new_version < locked_version - Bundler.ui.warn "Bundler attempted to update #{name} but its version regressed from #{locked_version} to #{new_version}" - elsif new_version == locked_version - Bundler.ui.warn "Bundler attempted to update #{name} but its version stayed the same" - end - end - end - - Bundler.ui.confirm "Bundle updated!" - Bundler::CLI::Common.output_without_groups_message - Bundler::CLI::Common.output_post_install_messages installer.post_install_messages - end - end -end diff --git a/lib/bundler/cli/viz.rb b/lib/bundler/cli/viz.rb deleted file mode 100644 index 644f9b25cf..0000000000 --- a/lib/bundler/cli/viz.rb +++ /dev/null @@ -1,31 +0,0 @@ -# frozen_string_literal: true - -module Bundler - class CLI::Viz - attr_reader :options, :gem_name - def initialize(options) - @options = options - end - - def run - # make sure we get the right `graphviz`. There is also a `graphviz` - # gem we're not built to support - gem "ruby-graphviz" - require "graphviz" - - options[:without] = options[:without].join(":").tr(" ", ":").split(":") - output_file = File.expand_path(options[:file]) - - graph = Graph.new(Bundler.load, output_file, options[:version], options[:requirements], options[:format], options[:without]) - graph.viz - rescue LoadError => e - Bundler.ui.error e.inspect - Bundler.ui.warn "Make sure you have the graphviz ruby gem. You can install it with:" - Bundler.ui.warn "`gem install ruby-graphviz`" - rescue StandardError => e - raise unless e.message =~ /GraphViz not installed or dot not in PATH/ - Bundler.ui.error e.message - Bundler.ui.warn "Please install GraphViz. On a Mac with Homebrew, you can run `brew install graphviz`." - end - end -end diff --git a/lib/bundler/compact_index_client.rb b/lib/bundler/compact_index_client.rb deleted file mode 100644 index 6c241ca07a..0000000000 --- a/lib/bundler/compact_index_client.rb +++ /dev/null @@ -1,109 +0,0 @@ -# frozen_string_literal: true - -require "pathname" -require "set" - -module Bundler - class CompactIndexClient - DEBUG_MUTEX = Mutex.new - def self.debug - return unless ENV["DEBUG_COMPACT_INDEX"] - DEBUG_MUTEX.synchronize { warn("[#{self}] #{yield}") } - end - - class Error < StandardError; end - - require "bundler/compact_index_client/cache" - require "bundler/compact_index_client/updater" - - attr_reader :directory - - # @return [Lambda] A lambda that takes an array of inputs and a block, and - # maps the inputs with the block in parallel. - # - attr_accessor :in_parallel - - def initialize(directory, fetcher) - @directory = Pathname.new(directory) - @updater = Updater.new(fetcher) - @cache = Cache.new(@directory) - @endpoints = Set.new - @info_checksums_by_name = {} - @parsed_checksums = false - @mutex = Mutex.new - @in_parallel = lambda do |inputs, &blk| - inputs.map(&blk) - end - end - - def names - Bundler::CompactIndexClient.debug { "/names" } - update(@cache.names_path, "names") - @cache.names - end - - def versions - Bundler::CompactIndexClient.debug { "/versions" } - update(@cache.versions_path, "versions") - versions, @info_checksums_by_name = @cache.versions - versions - end - - def dependencies(names) - Bundler::CompactIndexClient.debug { "dependencies(#{names})" } - in_parallel.call(names) do |name| - update_info(name) - @cache.dependencies(name).map {|d| d.unshift(name) } - end.flatten(1) - end - - def spec(name, version, platform = nil) - Bundler::CompactIndexClient.debug { "spec(name = #{name}, version = #{version}, platform = #{platform})" } - update_info(name) - @cache.specific_dependency(name, version, platform) - end - - def update_and_parse_checksums! - Bundler::CompactIndexClient.debug { "update_and_parse_checksums!" } - return @info_checksums_by_name if @parsed_checksums - update(@cache.versions_path, "versions") - @info_checksums_by_name = @cache.checksums - @parsed_checksums = true - end - - private - - def update(local_path, remote_path) - Bundler::CompactIndexClient.debug { "update(#{local_path}, #{remote_path})" } - unless synchronize { @endpoints.add?(remote_path) } - Bundler::CompactIndexClient.debug { "already fetched #{remote_path}" } - return - end - @updater.update(local_path, url(remote_path)) - end - - def update_info(name) - Bundler::CompactIndexClient.debug { "update_info(#{name})" } - path = @cache.info_path(name) - checksum = @updater.checksum_for_file(path) - unless existing = @info_checksums_by_name[name] - Bundler::CompactIndexClient.debug { "skipping updating info for #{name} since it is missing from versions" } - return - end - if checksum == existing - Bundler::CompactIndexClient.debug { "skipping updating info for #{name} since the versions checksum matches the local checksum" } - return - end - Bundler::CompactIndexClient.debug { "updating info for #{name} since the versions checksum #{existing} != the local checksum #{checksum}" } - update(path, "info/#{name}") - end - - def url(path) - path - end - - def synchronize - @mutex.synchronize { yield } - end - end -end diff --git a/lib/bundler/compact_index_client/cache.rb b/lib/bundler/compact_index_client/cache.rb deleted file mode 100644 index f6105d3bb3..0000000000 --- a/lib/bundler/compact_index_client/cache.rb +++ /dev/null @@ -1,118 +0,0 @@ -# frozen_string_literal: true - -module Bundler - class CompactIndexClient - class Cache - attr_reader :directory - - def initialize(directory) - @directory = Pathname.new(directory).expand_path - info_roots.each do |dir| - SharedHelpers.filesystem_access(dir) do - FileUtils.mkdir_p(dir) - end - end - end - - def names - lines(names_path) - end - - def names_path - directory.join("names") - end - - def versions - versions_by_name = Hash.new {|hash, key| hash[key] = [] } - info_checksums_by_name = {} - - lines(versions_path).each do |line| - name, versions_string, info_checksum = line.split(" ", 3) - info_checksums_by_name[name] = info_checksum || "" - versions_string.split(",").each do |version| - if version.start_with?("-") - version = version[1..-1].split("-", 2).unshift(name) - versions_by_name[name].delete(version) - else - version = version.split("-", 2).unshift(name) - versions_by_name[name] << version - end - end - end - - [versions_by_name, info_checksums_by_name] - end - - def versions_path - directory.join("versions") - end - - def checksums - checksums = {} - - lines(versions_path).each do |line| - name, _, checksum = line.split(" ", 3) - checksums[name] = checksum - end - - checksums - end - - def dependencies(name) - lines(info_path(name)).map do |line| - parse_gem(line) - end - end - - def info_path(name) - name = name.to_s - if name =~ /[^a-z0-9_-]/ - name += "-#{SharedHelpers.digest(:MD5).hexdigest(name).downcase}" - info_roots.last.join(name) - else - info_roots.first.join(name) - end - end - - def specific_dependency(name, version, platform) - pattern = [version, platform].compact.join("-") - return nil if pattern.empty? - - gem_lines = info_path(name).read - gem_line = gem_lines[/^#{Regexp.escape(pattern)}\b.*/, 0] - gem_line ? parse_gem(gem_line) : nil - end - - private - - def lines(path) - return [] unless path.file? - lines = SharedHelpers.filesystem_access(path, :read, &:read).split("\n") - header = lines.index("---") - header ? lines[header + 1..-1] : lines - end - - def parse_gem(string) - version_and_platform, rest = string.split(" ", 2) - version, platform = version_and_platform.split("-", 2) - dependencies, requirements = rest.split("|", 2).map {|s| s.split(",") } if rest - dependencies = dependencies ? dependencies.map {|d| parse_dependency(d) } : [] - requirements = requirements ? requirements.map {|r| parse_dependency(r) } : [] - [version, platform, dependencies, requirements] - end - - def parse_dependency(string) - dependency = string.split(":") - dependency[-1] = dependency[-1].split("&") if dependency.size > 1 - dependency - end - - def info_roots - [ - directory.join("info"), - directory.join("info-special-characters"), - ] - end - end - end -end diff --git a/lib/bundler/compact_index_client/updater.rb b/lib/bundler/compact_index_client/updater.rb deleted file mode 100644 index 3a4e4441ca..0000000000 --- a/lib/bundler/compact_index_client/updater.rb +++ /dev/null @@ -1,107 +0,0 @@ -# frozen_string_literal: true - -require "bundler/vendored_fileutils" -require "stringio" -require "zlib" - -module Bundler - class CompactIndexClient - class Updater - class MisMatchedChecksumError < Error - def initialize(path, server_checksum, local_checksum) - @path = path - @server_checksum = server_checksum - @local_checksum = local_checksum - end - - def message - "The checksum of /#{@path} does not match the checksum provided by the server! Something is wrong " \ - "(local checksum is #{@local_checksum.inspect}, was expecting #{@server_checksum.inspect})." - end - end - - def initialize(fetcher) - @fetcher = fetcher - require "tmpdir" - end - - def update(local_path, remote_path, retrying = nil) - headers = {} - - Dir.mktmpdir("bundler-compact-index-") do |local_temp_dir| - local_temp_path = Pathname.new(local_temp_dir).join(local_path.basename) - - # first try to fetch any new bytes on the existing file - if retrying.nil? && local_path.file? - FileUtils.cp local_path, local_temp_path - headers["If-None-Match"] = etag_for(local_temp_path) - headers["Range"] = - if local_temp_path.size.nonzero? - # Subtract a byte to ensure the range won't be empty. - # Avoids 416 (Range Not Satisfiable) responses. - "bytes=#{local_temp_path.size - 1}-" - else - "bytes=#{local_temp_path.size}-" - end - else - # Fastly ignores Range when Accept-Encoding: gzip is set - headers["Accept-Encoding"] = "gzip" - end - - response = @fetcher.call(remote_path, headers) - return nil if response.is_a?(Net::HTTPNotModified) - - content = response.body - if response["Content-Encoding"] == "gzip" - content = Zlib::GzipReader.new(StringIO.new(content)).read - end - - SharedHelpers.filesystem_access(local_temp_path) do - if response.is_a?(Net::HTTPPartialContent) && local_temp_path.size.nonzero? - local_temp_path.open("a") {|f| f << slice_body(content, 1..-1) } - else - local_temp_path.open("w") {|f| f << content } - end - end - - response_etag = (response["ETag"] || "").gsub(%r{\AW/}, "") - if etag_for(local_temp_path) == response_etag - SharedHelpers.filesystem_access(local_path) do - FileUtils.mv(local_temp_path, local_path) - end - return nil - end - - if retrying - raise MisMatchedChecksumError.new(remote_path, response_etag, etag_for(local_temp_path)) - end - - update(local_path, remote_path, :retrying) - end - end - - def etag_for(path) - sum = checksum_for_file(path) - sum ? %("#{sum}") : nil - end - - def slice_body(body, range) - if body.respond_to?(:byteslice) - body.byteslice(range) - else # pre-1.9.3 - body.unpack("@#{range.first}a#{range.end + 1}").first - end - end - - def checksum_for_file(path) - return nil unless path.file? - # This must use IO.read instead of Digest.file().hexdigest - # because we need to preserve \n line endings on windows when calculating - # the checksum - SharedHelpers.filesystem_access(path, :read) do - SharedHelpers.digest(:MD5).hexdigest(IO.read(path)) - end - end - end - end -end diff --git a/lib/bundler/compatibility_guard.rb b/lib/bundler/compatibility_guard.rb deleted file mode 100644 index 750a1db04f..0000000000 --- a/lib/bundler/compatibility_guard.rb +++ /dev/null @@ -1,14 +0,0 @@ -# frozen_string_literal: false - -require "rubygems" -require "bundler/version" - -if Bundler::VERSION.split(".").first.to_i >= 2 - if Gem::Version.new(Object::RUBY_VERSION.dup) < Gem::Version.new("2.3") - abort "Bundler 2 requires Ruby 2.3 or later. Either install bundler 1 or update to a supported Ruby version." - end - - if Gem::Version.new(Gem::VERSION.dup) < Gem::Version.new("2.5") - abort "Bundler 2 requires RubyGems 2.5 or later. Either install bundler 1 or update to a supported RubyGems version." - end -end diff --git a/lib/bundler/constants.rb b/lib/bundler/constants.rb deleted file mode 100644 index 2e4ebb37ee..0000000000 --- a/lib/bundler/constants.rb +++ /dev/null @@ -1,7 +0,0 @@ -# frozen_string_literal: true - -module Bundler - WINDOWS = RbConfig::CONFIG["host_os"] =~ /(msdos|mswin|djgpp|mingw)/ - FREEBSD = RbConfig::CONFIG["host_os"] =~ /bsd/ - NULL = WINDOWS ? "NUL" : "/dev/null" -end diff --git a/lib/bundler/current_ruby.rb b/lib/bundler/current_ruby.rb deleted file mode 100644 index 31532d108d..0000000000 --- a/lib/bundler/current_ruby.rb +++ /dev/null @@ -1,86 +0,0 @@ -# frozen_string_literal: true - -module Bundler - # Returns current version of Ruby - # - # @return [CurrentRuby] Current version of Ruby - def self.current_ruby - @current_ruby ||= CurrentRuby.new - end - - class CurrentRuby - KNOWN_MINOR_VERSIONS = %w[ - 1.8 - 1.9 - 2.0 - 2.1 - 2.2 - 2.3 - 2.4 - 2.5 - ].freeze - - KNOWN_MAJOR_VERSIONS = KNOWN_MINOR_VERSIONS.map {|v| v.split(".", 2).first }.uniq.freeze - - KNOWN_PLATFORMS = %w[ - jruby - maglev - mingw - mri - mswin - mswin64 - rbx - ruby - x64_mingw - ].freeze - - def ruby? - !mswin? && (!defined?(RUBY_ENGINE) || RUBY_ENGINE == "ruby" || RUBY_ENGINE == "rbx" || RUBY_ENGINE == "maglev") - end - - def mri? - !mswin? && (!defined?(RUBY_ENGINE) || RUBY_ENGINE == "ruby") - end - - def rbx? - ruby? && defined?(RUBY_ENGINE) && RUBY_ENGINE == "rbx" - end - - def jruby? - defined?(RUBY_ENGINE) && RUBY_ENGINE == "jruby" - end - - def maglev? - defined?(RUBY_ENGINE) && RUBY_ENGINE == "maglev" - end - - def mswin? - Bundler::WINDOWS - end - - def mswin64? - Bundler::WINDOWS && Bundler.local_platform != Gem::Platform::RUBY && Bundler.local_platform.os == "mswin64" && Bundler.local_platform.cpu == "x64" - end - - def mingw? - Bundler::WINDOWS && Bundler.local_platform != Gem::Platform::RUBY && Bundler.local_platform.os == "mingw32" && Bundler.local_platform.cpu != "x64" - end - - def x64_mingw? - Bundler::WINDOWS && Bundler.local_platform != Gem::Platform::RUBY && Bundler.local_platform.os == "mingw32" && Bundler.local_platform.cpu == "x64" - end - - (KNOWN_MINOR_VERSIONS + KNOWN_MAJOR_VERSIONS).each do |version| - trimmed_version = version.tr(".", "") - define_method(:"on_#{trimmed_version}?") do - RUBY_VERSION.start_with?("#{version}.") - end - - KNOWN_PLATFORMS.each do |platform| - define_method(:"#{platform}_#{trimmed_version}?") do - send(:"#{platform}?") && send(:"on_#{trimmed_version}?") - end - end - end - end -end diff --git a/lib/bundler/definition.rb b/lib/bundler/definition.rb deleted file mode 100644 index ad16389dae..0000000000 --- a/lib/bundler/definition.rb +++ /dev/null @@ -1,984 +0,0 @@ -# frozen_string_literal: true - -require "bundler/lockfile_parser" -require "set" - -module Bundler - class Definition - include GemHelpers - - attr_reader( - :dependencies, - :gem_version_promoter, - :locked_deps, - :locked_gems, - :platforms, - :requires, - :ruby_version, - :lockfile, - :gemfiles - ) - - # Given a gemfile and lockfile creates a Bundler definition - # - # @param gemfile [Pathname] Path to Gemfile - # @param lockfile [Pathname,nil] Path to Gemfile.lock - # @param unlock [Hash, Boolean, nil] Gems that have been requested - # to be updated or true if all gems should be updated - # @return [Bundler::Definition] - def self.build(gemfile, lockfile, unlock) - unlock ||= {} - gemfile = Pathname.new(gemfile).expand_path - - raise GemfileNotFound, "#{gemfile} not found" unless gemfile.file? - - Dsl.evaluate(gemfile, lockfile, unlock) - end - - # - # How does the new system work? - # - # * Load information from Gemfile and Lockfile - # * Invalidate stale locked specs - # * All specs from stale source are stale - # * All specs that are reachable only through a stale - # dependency are stale. - # * If all fresh dependencies are satisfied by the locked - # specs, then we can try to resolve locally. - # - # @param lockfile [Pathname] Path to Gemfile.lock - # @param dependencies [Array(Bundler::Dependency)] array of dependencies from Gemfile - # @param sources [Bundler::SourceList] - # @param unlock [Hash, Boolean, nil] Gems that have been requested - # to be updated or true if all gems should be updated - # @param ruby_version [Bundler::RubyVersion, nil] Requested Ruby Version - # @param optional_groups [Array(String)] A list of optional groups - def initialize(lockfile, dependencies, sources, unlock, ruby_version = nil, optional_groups = [], gemfiles = []) - if [true, false].include?(unlock) - @unlocking_bundler = false - @unlocking = unlock - else - unlock = unlock.dup - @unlocking_bundler = unlock.delete(:bundler) - unlock.delete_if {|_k, v| Array(v).empty? } - @unlocking = !unlock.empty? - end - - @dependencies = dependencies - @sources = sources - @unlock = unlock - @optional_groups = optional_groups - @remote = false - @specs = nil - @ruby_version = ruby_version - @gemfiles = gemfiles - - @lockfile = lockfile - @lockfile_contents = String.new - @locked_bundler_version = nil - @locked_ruby_version = nil - - if lockfile && File.exist?(lockfile) - @lockfile_contents = Bundler.read_file(lockfile) - @locked_gems = LockfileParser.new(@lockfile_contents) - @locked_platforms = @locked_gems.platforms - @platforms = @locked_platforms.dup - @locked_bundler_version = @locked_gems.bundler_version - @locked_ruby_version = @locked_gems.ruby_version - - if unlock != true - @locked_deps = @locked_gems.dependencies - @locked_specs = SpecSet.new(@locked_gems.specs) - @locked_sources = @locked_gems.sources - else - @unlock = {} - @locked_deps = {} - @locked_specs = SpecSet.new([]) - @locked_sources = [] - end - else - @unlock = {} - @platforms = [] - @locked_gems = nil - @locked_deps = {} - @locked_specs = SpecSet.new([]) - @locked_sources = [] - @locked_platforms = [] - end - - @unlock[:gems] ||= [] - @unlock[:sources] ||= [] - @unlock[:ruby] ||= if @ruby_version && locked_ruby_version_object - @ruby_version.diff(locked_ruby_version_object) - end - @unlocking ||= @unlock[:ruby] ||= (!@locked_ruby_version ^ !@ruby_version) - - add_current_platform unless Bundler.frozen? - - converge_path_sources_to_gemspec_sources - @path_changes = converge_paths - @source_changes = converge_sources - - unless @unlock[:lock_shared_dependencies] - eager_unlock = expand_dependencies(@unlock[:gems]) - @unlock[:gems] = @locked_specs.for(eager_unlock).map(&:name) - end - - @gem_version_promoter = create_gem_version_promoter - - @dependency_changes = converge_dependencies - @local_changes = converge_locals - - @requires = compute_requires - end - - def create_gem_version_promoter - locked_specs = - if unlocking? && @locked_specs.empty? && !@lockfile_contents.empty? - # Definition uses an empty set of locked_specs to indicate all gems - # are unlocked, but GemVersionPromoter needs the locked_specs - # for conservative comparison. - Bundler::SpecSet.new(@locked_gems.specs) - else - @locked_specs - end - GemVersionPromoter.new(locked_specs, @unlock[:gems]) - end - - def resolve_with_cache! - raise "Specs already loaded" if @specs - sources.cached! - specs - end - - def resolve_remotely! - raise "Specs already loaded" if @specs - @remote = true - sources.remote! - specs - end - - # For given dependency list returns a SpecSet with Gemspec of all the required - # dependencies. - # 1. The method first resolves the dependencies specified in Gemfile - # 2. After that it tries and fetches gemspec of resolved dependencies - # - # @return [Bundler::SpecSet] - def specs - @specs ||= begin - begin - specs = resolve.materialize(Bundler.settings[:cache_all_platforms] ? dependencies : requested_dependencies) - rescue GemNotFound => e # Handle yanked gem - gem_name, gem_version = extract_gem_info(e) - locked_gem = @locked_specs[gem_name].last - raise if locked_gem.nil? || locked_gem.version.to_s != gem_version || !@remote - raise GemNotFound, "Your bundle is locked to #{locked_gem}, but that version could not " \ - "be found in any of the sources listed in your Gemfile. If you haven't changed sources, " \ - "that means the author of #{locked_gem} has removed it. You'll need to update your bundle " \ - "to a different version of #{locked_gem} that hasn't been removed in order to install." - end - unless specs["bundler"].any? - bundler = sources.metadata_source.specs.search(Gem::Dependency.new("bundler", VERSION)).last - specs["bundler"] = bundler - end - - specs - end - end - - def new_specs - specs - @locked_specs - end - - def removed_specs - @locked_specs - specs - end - - def new_platform? - @new_platform - end - - def missing_specs - missing = [] - resolve.materialize(requested_dependencies, missing) - missing - end - - def missing_specs? - missing = missing_specs - return false if missing.empty? - Bundler.ui.debug "The definition is missing #{missing.map(&:full_name)}" - true - rescue BundlerError => e - @index = nil - @resolve = nil - @specs = nil - @gem_version_promoter = create_gem_version_promoter - - Bundler.ui.debug "The definition is missing dependencies, failed to resolve & materialize locally (#{e})" - true - end - - def requested_specs - @requested_specs ||= begin - groups = requested_groups - groups.map!(&:to_sym) - specs_for(groups) - end - end - - def current_dependencies - dependencies.select(&:should_include?) - end - - def specs_for(groups) - deps = dependencies.select {|d| (d.groups & groups).any? } - deps.delete_if {|d| !d.should_include? } - specs.for(expand_dependencies(deps)) - end - - # Resolve all the dependencies specified in Gemfile. It ensures that - # dependencies that have been already resolved via locked file and are fresh - # are reused when resolving dependencies - # - # @return [SpecSet] resolved dependencies - def resolve - @resolve ||= begin - last_resolve = converge_locked_specs - if Bundler.frozen? - Bundler.ui.debug "Frozen, using resolution from the lockfile" - last_resolve - elsif !unlocking? && nothing_changed? - Bundler.ui.debug("Found no changes, using resolution from the lockfile") - last_resolve - else - # Run a resolve against the locally available gems - Bundler.ui.debug("Found changes from the lockfile, re-resolving dependencies because #{change_reason}") - last_resolve.merge Resolver.resolve(expanded_dependencies, index, source_requirements, last_resolve, gem_version_promoter, additional_base_requirements_for_resolve, platforms) - end - end - end - - def index - @index ||= Index.build do |idx| - dependency_names = @dependencies.map(&:name) - - sources.all_sources.each do |source| - source.dependency_names = dependency_names - pinned_spec_names(source) - idx.add_source source.specs - dependency_names.concat(source.unmet_deps).uniq! - end - - double_check_for_index(idx, dependency_names) - end - end - - # Suppose the gem Foo depends on the gem Bar. Foo exists in Source A. Bar has some versions that exist in both - # sources A and B. At this point, the API request will have found all the versions of Bar in source A, - # but will not have found any versions of Bar from source B, which is a problem if the requested version - # of Foo specifically depends on a version of Bar that is only found in source B. This ensures that for - # each spec we found, we add all possible versions from all sources to the index. - def double_check_for_index(idx, dependency_names) - pinned_names = pinned_spec_names - loop do - idxcount = idx.size - - names = :names # do this so we only have to traverse to get dependency_names from the index once - unmet_dependency_names = lambda do - return names unless names == :names - new_names = sources.all_sources.map(&:dependency_names_to_double_check) - return names = nil if new_names.compact! - names = new_names.flatten(1).concat(dependency_names) - names.uniq! - names -= pinned_names - names - end - - sources.all_sources.each do |source| - source.double_check_for(unmet_dependency_names) - end - - break if idxcount == idx.size - end - end - private :double_check_for_index - - def has_rubygems_remotes? - sources.rubygems_sources.any? {|s| s.remotes.any? } - end - - def has_local_dependencies? - !sources.path_sources.empty? || !sources.git_sources.empty? - end - - def spec_git_paths - sources.git_sources.map {|s| s.path.to_s } - end - - def groups - dependencies.map(&:groups).flatten.uniq - end - - def lock(file, preserve_unknown_sections = false) - contents = to_lock - - # Convert to \r\n if the existing lock has them - # i.e., Windows with `git config core.autocrlf=true` - contents.gsub!(/\n/, "\r\n") if @lockfile_contents.match("\r\n") - - if @locked_bundler_version - locked_major = @locked_bundler_version.segments.first - current_major = Gem::Version.create(Bundler::VERSION).segments.first - - if updating_major = locked_major < current_major - Bundler.ui.warn "Warning: the lockfile is being updated to Bundler #{current_major}, " \ - "after which you will be unable to return to Bundler #{@locked_bundler_version.segments.first}." - end - end - - preserve_unknown_sections ||= !updating_major && (Bundler.frozen? || !(unlocking? || @unlocking_bundler)) - return if lockfiles_equal?(@lockfile_contents, contents, preserve_unknown_sections) - - if Bundler.frozen? - Bundler.ui.error "Cannot write a changed lockfile while frozen." - return - end - - SharedHelpers.filesystem_access(file) do |p| - File.open(p, "wb") {|f| f.puts(contents) } - end - end - - def locked_bundler_version - if @locked_bundler_version && @locked_bundler_version < Gem::Version.new(Bundler::VERSION) - new_version = Bundler::VERSION - end - - new_version || @locked_bundler_version || Bundler::VERSION - end - - def locked_ruby_version - return unless ruby_version - if @unlock[:ruby] || !@locked_ruby_version - Bundler::RubyVersion.system - else - @locked_ruby_version - end - end - - def locked_ruby_version_object - return unless @locked_ruby_version - @locked_ruby_version_object ||= begin - unless version = RubyVersion.from_string(@locked_ruby_version) - raise LockfileError, "The Ruby version #{@locked_ruby_version} from " \ - "#{@lockfile} could not be parsed. " \ - "Try running bundle update --ruby to resolve this." - end - version - end - end - - def to_lock - require "bundler/lockfile_generator" - LockfileGenerator.generate(self) - end - - def ensure_equivalent_gemfile_and_lockfile(explicit_flag = false) - msg = String.new - msg << "You are trying to install in deployment mode after changing\n" \ - "your Gemfile. Run `bundle install` elsewhere and add the\n" \ - "updated #{Bundler.default_lockfile.relative_path_from(SharedHelpers.pwd)} to version control." - - unless explicit_flag - suggested_command = if Bundler.settings.locations("frozen")[:global] - "bundle config --delete frozen" - elsif Bundler.settings.locations("deployment").keys.&([:global, :local]).any? - "bundle config --delete deployment" - else - "bundle install --no-deployment" - end - msg << "\n\nIf this is a development machine, remove the #{Bundler.default_gemfile} " \ - "freeze \nby running `#{suggested_command}`." - end - - added = [] - deleted = [] - changed = [] - - new_platforms = @platforms - @locked_platforms - deleted_platforms = @locked_platforms - @platforms - added.concat new_platforms.map {|p| "* platform: #{p}" } - deleted.concat deleted_platforms.map {|p| "* platform: #{p}" } - - gemfile_sources = sources.lock_sources - - new_sources = gemfile_sources - @locked_sources - deleted_sources = @locked_sources - gemfile_sources - - new_deps = @dependencies - @locked_deps.values - deleted_deps = @locked_deps.values - @dependencies - - # Check if it is possible that the source is only changed thing - if (new_deps.empty? && deleted_deps.empty?) && (!new_sources.empty? && !deleted_sources.empty?) - new_sources.reject! {|source| (source.path? && source.path.exist?) || equivalent_rubygems_remotes?(source) } - deleted_sources.reject! {|source| (source.path? && source.path.exist?) || equivalent_rubygems_remotes?(source) } - end - - if @locked_sources != gemfile_sources - if new_sources.any? - added.concat new_sources.map {|source| "* source: #{source}" } - end - - if deleted_sources.any? - deleted.concat deleted_sources.map {|source| "* source: #{source}" } - end - end - - added.concat new_deps.map {|d| "* #{pretty_dep(d)}" } if new_deps.any? - if deleted_deps.any? - deleted.concat deleted_deps.map {|d| "* #{pretty_dep(d)}" } - end - - both_sources = Hash.new {|h, k| h[k] = [] } - @dependencies.each {|d| both_sources[d.name][0] = d } - @locked_deps.each {|name, d| both_sources[name][1] = d.source } - - both_sources.each do |name, (dep, lock_source)| - next unless (dep.nil? && !lock_source.nil?) || (!dep.nil? && !lock_source.nil? && !lock_source.can_lock?(dep)) - gemfile_source_name = (dep && dep.source) || "no specified source" - lockfile_source_name = lock_source || "no specified source" - changed << "* #{name} from `#{gemfile_source_name}` to `#{lockfile_source_name}`" - end - - reason = change_reason - msg << "\n\n#{reason.split(", ").map(&:capitalize).join("\n")}" unless reason.strip.empty? - msg << "\n\nYou have added to the Gemfile:\n" << added.join("\n") if added.any? - msg << "\n\nYou have deleted from the Gemfile:\n" << deleted.join("\n") if deleted.any? - msg << "\n\nYou have changed in the Gemfile:\n" << changed.join("\n") if changed.any? - msg << "\n" - - raise ProductionError, msg if added.any? || deleted.any? || changed.any? || !nothing_changed? - end - - def validate_runtime! - validate_ruby! - validate_platforms! - end - - def validate_ruby! - return unless ruby_version - - if diff = ruby_version.diff(Bundler::RubyVersion.system) - problem, expected, actual = diff - - msg = case problem - when :engine - "Your Ruby engine is #{actual}, but your Gemfile specified #{expected}" - when :version - "Your Ruby version is #{actual}, but your Gemfile specified #{expected}" - when :engine_version - "Your #{Bundler::RubyVersion.system.engine} version is #{actual}, but your Gemfile specified #{ruby_version.engine} #{expected}" - when :patchlevel - if !expected.is_a?(String) - "The Ruby patchlevel in your Gemfile must be a string" - else - "Your Ruby patchlevel is #{actual}, but your Gemfile specified #{expected}" - end - end - - raise RubyVersionMismatch, msg - end - end - - def validate_platforms! - return if @platforms.any? do |bundle_platform| - Bundler.rubygems.platforms.any? do |local_platform| - MatchPlatform.platforms_match?(bundle_platform, local_platform) - end - end - - raise ProductionError, "Your bundle only supports platforms #{@platforms.map(&:to_s)} " \ - "but your local platforms are #{Bundler.rubygems.platforms.map(&:to_s)}, and " \ - "there's no compatible match between those two lists." - end - - def add_platform(platform) - @new_platform ||= !@platforms.include?(platform) - @platforms |= [platform] - end - - def remove_platform(platform) - return if @platforms.delete(Gem::Platform.new(platform)) - raise InvalidOption, "Unable to remove the platform `#{platform}` since the only platforms are #{@platforms.join ", "}" - end - - def add_current_platform - current_platform = Bundler.local_platform - add_platform(current_platform) if Bundler.feature_flag.specific_platform? - add_platform(generic(current_platform)) - end - - def find_resolved_spec(current_spec) - specs.find_by_name_and_platform(current_spec.name, current_spec.platform) - end - - def find_indexed_specs(current_spec) - index[current_spec.name].select {|spec| spec.match_platform(current_spec.platform) }.sort_by(&:version) - end - - attr_reader :sources - private :sources - - def nothing_changed? - !@source_changes && !@dependency_changes && !@new_platform && !@path_changes && !@local_changes - end - - def unlocking? - @unlocking - end - - private - - def change_reason - if unlocking? - unlock_reason = @unlock.reject {|_k, v| Array(v).empty? }.map do |k, v| - if v == true - k.to_s - else - v = Array(v) - "#{k}: (#{v.join(", ")})" - end - end.join(", ") - return "bundler is unlocking #{unlock_reason}" - end - [ - [@source_changes, "the list of sources changed"], - [@dependency_changes, "the dependencies in your gemfile changed"], - [@new_platform, "you added a new platform to your gemfile"], - [@path_changes, "the gemspecs for path gems changed"], - [@local_changes, "the gemspecs for git local gems changed"], - ].select(&:first).map(&:last).join(", ") - end - - def pretty_dep(dep, source = false) - SharedHelpers.pretty_dependency(dep, source) - end - - # Check if the specs of the given source changed - # according to the locked source. - def specs_changed?(source) - locked = @locked_sources.find {|s| s == source } - - !locked || dependencies_for_source_changed?(source, locked) || specs_for_source_changed?(source) - end - - def dependencies_for_source_changed?(source, locked_source = source) - deps_for_source = @dependencies.select {|s| s.source == source } - locked_deps_for_source = @locked_deps.values.select {|dep| dep.source == locked_source } - - Set.new(deps_for_source) != Set.new(locked_deps_for_source) - end - - def specs_for_source_changed?(source) - locked_index = Index.new - locked_index.use(@locked_specs.select {|s| source.can_lock?(s) }) - - # order here matters, since Index#== is checking source.specs.include?(locked_index) - locked_index != source.specs - rescue PathError, GitError => e - Bundler.ui.debug "Assuming that #{source} has not changed since fetching its specs errored (#{e})" - false - end - - # Get all locals and override their matching sources. - # Return true if any of the locals changed (for example, - # they point to a new revision) or depend on new specs. - def converge_locals - locals = [] - - Bundler.settings.local_overrides.map do |k, v| - spec = @dependencies.find {|s| s.name == k } - source = spec && spec.source - if source && source.respond_to?(:local_override!) - source.unlock! if @unlock[:gems].include?(spec.name) - locals << [source, source.local_override!(v)] - end - end - - sources_with_changes = locals.select do |source, changed| - changed || specs_changed?(source) - end.map(&:first) - !sources_with_changes.each {|source| @unlock[:sources] << source.name }.empty? - end - - def converge_paths - sources.path_sources.any? do |source| - specs_changed?(source) - end - end - - def converge_path_source_to_gemspec_source(source) - return source unless source.instance_of?(Source::Path) - gemspec_source = sources.path_sources.find {|s| s.is_a?(Source::Gemspec) && s.as_path_source == source } - gemspec_source || source - end - - def converge_path_sources_to_gemspec_sources - @locked_sources.map! do |source| - converge_path_source_to_gemspec_source(source) - end - @locked_specs.each do |spec| - spec.source &&= converge_path_source_to_gemspec_source(spec.source) - end - @locked_deps.each do |_, dep| - dep.source &&= converge_path_source_to_gemspec_source(dep.source) - end - end - - def converge_rubygems_sources - return false if Bundler.feature_flag.lockfile_uses_separate_rubygems_sources? - - changes = false - - # Get the RubyGems sources from the Gemfile.lock - locked_gem_sources = @locked_sources.select {|s| s.is_a?(Source::Rubygems) } - # Get the RubyGems remotes from the Gemfile - actual_remotes = sources.rubygems_remotes - - # If there is a RubyGems source in both - if !locked_gem_sources.empty? && !actual_remotes.empty? - locked_gem_sources.each do |locked_gem| - # Merge the remotes from the Gemfile into the Gemfile.lock - changes |= locked_gem.replace_remotes(actual_remotes, Bundler.settings[:allow_deployment_source_credential_changes]) - end - end - - changes - end - - def converge_sources - changes = false - - changes |= converge_rubygems_sources - - # Replace the sources from the Gemfile with the sources from the Gemfile.lock, - # if they exist in the Gemfile.lock and are `==`. If you can't find an equivalent - # source in the Gemfile.lock, use the one from the Gemfile. - changes |= sources.replace_sources!(@locked_sources) - - sources.all_sources.each do |source| - # If the source is unlockable and the current command allows an unlock of - # the source (for example, you are doing a `bundle update ` of a git-pinned - # gem), unlock it. For git sources, this means to unlock the revision, which - # will cause the `ref` used to be the most recent for the branch (or master) if - # an explicit `ref` is not used. - if source.respond_to?(:unlock!) && @unlock[:sources].include?(source.name) - source.unlock! - changes = true - end - end - - changes - end - - def converge_dependencies - frozen = Bundler.frozen? - (@dependencies + @locked_deps.values).each do |dep| - locked_source = @locked_deps[dep.name] - # This is to make sure that if bundler is installing in deployment mode and - # after locked_source and sources don't match, we still use locked_source. - if frozen && !locked_source.nil? && - locked_source.respond_to?(:source) && locked_source.source.instance_of?(Source::Path) && locked_source.source.path.exist? - dep.source = locked_source.source - elsif dep.source - dep.source = sources.get(dep.source) - end - if dep.source.is_a?(Source::Gemspec) - dep.platforms.concat(@platforms.map {|p| Dependency::REVERSE_PLATFORM_MAP[p] }.flatten(1)).uniq! - end - end - - changes = false - # We want to know if all match, but don't want to check all entries - # This means we need to return false if any dependency doesn't match - # the lock or doesn't exist in the lock. - @dependencies.each do |dependency| - unless locked_dep = @locked_deps[dependency.name] - changes = true - next - end - - # Gem::Dependency#== matches Gem::Dependency#type. As the lockfile - # doesn't carry a notion of the dependency type, if you use - # add_development_dependency in a gemspec that's loaded with the gemspec - # directive, the lockfile dependencies and resolved dependencies end up - # with a mismatch on #type. Work around that by setting the type on the - # dep from the lockfile. - locked_dep.instance_variable_set(:@type, dependency.type) - - # We already know the name matches from the hash lookup - # so we only need to check the requirement now - changes ||= dependency.requirement != locked_dep.requirement - end - - changes - end - - # Remove elements from the locked specs that are expired. This will most - # commonly happen if the Gemfile has changed since the lockfile was last - # generated - def converge_locked_specs - deps = [] - - # Build a list of dependencies that are the same in the Gemfile - # and Gemfile.lock. If the Gemfile modified a dependency, but - # the gem in the Gemfile.lock still satisfies it, this is fine - # too. - @dependencies.each do |dep| - locked_dep = @locked_deps[dep.name] - - # If the locked_dep doesn't match the dependency we're looking for then we ignore the locked_dep - locked_dep = nil unless locked_dep == dep - - if in_locked_deps?(dep, locked_dep) || satisfies_locked_spec?(dep) - deps << dep - elsif dep.source.is_a?(Source::Path) && dep.current_platform? && (!locked_dep || dep.source != locked_dep.source) - @locked_specs.each do |s| - @unlock[:gems] << s.name if s.source == dep.source - end - - dep.source.unlock! if dep.source.respond_to?(:unlock!) - dep.source.specs.each {|s| @unlock[:gems] << s.name } - end - end - - unlock_source_unlocks_spec = Bundler.feature_flag.unlock_source_unlocks_spec? - - converged = [] - @locked_specs.each do |s| - # Replace the locked dependency's source with the equivalent source from the Gemfile - dep = @dependencies.find {|d| s.satisfies?(d) } - s.source = (dep && dep.source) || sources.get(s.source) - - # Don't add a spec to the list if its source is expired. For example, - # if you change a Git gem to RubyGems. - next if s.source.nil? - next if @unlock[:sources].include?(s.source.name) - - # XXX This is a backwards-compatibility fix to preserve the ability to - # unlock a single gem by passing its name via `--source`. See issue #3759 - # TODO: delete in Bundler 2 - next if unlock_source_unlocks_spec && @unlock[:sources].include?(s.name) - - # If the spec is from a path source and it doesn't exist anymore - # then we unlock it. - - # Path sources have special logic - if s.source.instance_of?(Source::Path) || s.source.instance_of?(Source::Gemspec) - other_sources_specs = begin - s.source.specs - rescue PathError, GitError - # if we won't need the source (according to the lockfile), - # don't error if the path/git source isn't available - next if @locked_specs. - for(requested_dependencies, [], false, true, false). - none? {|locked_spec| locked_spec.source == s.source } - - raise - end - - other = other_sources_specs[s].first - - # If the spec is no longer in the path source, unlock it. This - # commonly happens if the version changed in the gemspec - next unless other - - deps2 = other.dependencies.select {|d| d.type != :development } - runtime_dependencies = s.dependencies.select {|d| d.type != :development } - # If the dependencies of the path source have changed, unlock it - next unless runtime_dependencies.sort == deps2.sort - end - - converged << s - end - - resolve = SpecSet.new(converged) - resolve = resolve.for(expand_dependencies(deps, true), @unlock[:gems], false, false, false) - diff = nil - - # Now, we unlock any sources that do not have anymore gems pinned to it - sources.all_sources.each do |source| - next unless source.respond_to?(:unlock!) - - unless resolve.any? {|s| s.source == source } - diff ||= @locked_specs.to_a - resolve.to_a - source.unlock! if diff.any? {|s| s.source == source } - end - end - - resolve - end - - def in_locked_deps?(dep, locked_dep) - # Because the lockfile can't link a dep to a specific remote, we need to - # treat sources as equivalent anytime the locked dep has all the remotes - # that the Gemfile dep does. - locked_dep && locked_dep.source && dep.source && locked_dep.source.include?(dep.source) - end - - def satisfies_locked_spec?(dep) - @locked_specs[dep].any? {|s| s.satisfies?(dep) && (!dep.source || s.source.include?(dep.source)) } - end - - # This list of dependencies is only used in #resolve, so it's OK to add - # the metadata dependencies here - def expanded_dependencies - @expanded_dependencies ||= begin - expand_dependencies(dependencies + metadata_dependencies, @remote) - end - end - - def metadata_dependencies - @metadata_dependencies ||= begin - ruby_versions = concat_ruby_version_requirements(@ruby_version) - if ruby_versions.empty? || !@ruby_version.exact? - concat_ruby_version_requirements(RubyVersion.system) - concat_ruby_version_requirements(locked_ruby_version_object) unless @unlock[:ruby] - end - [ - Dependency.new("ruby\0", ruby_versions), - Dependency.new("rubygems\0", Gem::VERSION), - ] - end - end - - def concat_ruby_version_requirements(ruby_version, ruby_versions = []) - return ruby_versions unless ruby_version - if ruby_version.patchlevel - ruby_versions << ruby_version.to_gem_version_with_patchlevel - else - ruby_versions.concat(ruby_version.versions.map do |version| - requirement = Gem::Requirement.new(version) - if requirement.exact? - "~> #{version}.0" - else - requirement - end - end) - end - end - - def expand_dependencies(dependencies, remote = false) - sorted_platforms = Resolver.sort_platforms(@platforms) - deps = [] - dependencies.each do |dep| - dep = Dependency.new(dep, ">= 0") unless dep.respond_to?(:name) - next if !remote && !dep.current_platform? - platforms = dep.gem_platforms(sorted_platforms) - if platforms.empty? - mapped_platforms = dep.platforms.map {|p| Dependency::PLATFORM_MAP[p] } - Bundler.ui.warn \ - "The dependency #{dep} will be unused by any of the platforms Bundler is installing for. " \ - "Bundler is installing for #{@platforms.join ", "} but the dependency " \ - "is only for #{mapped_platforms.join ", "}. " \ - "To add those platforms to the bundle, " \ - "run `bundle lock --add-platform #{mapped_platforms.join " "}`." - end - platforms.each do |p| - deps << DepProxy.new(dep, p) if remote || p == generic_local_platform - end - end - deps - end - - def requested_dependencies - groups = requested_groups - groups.map!(&:to_sym) - dependencies.reject {|d| !d.should_include? || (d.groups & groups).empty? } - end - - def source_requirements - # Load all specs from remote sources - index - - # Record the specs available in each gem's source, so that those - # specs will be available later when the resolver knows where to - # look for that gemspec (or its dependencies) - default = sources.default_source - source_requirements = { :default => default } - default = nil unless Bundler.feature_flag.lockfile_uses_separate_rubygems_sources? - dependencies.each do |dep| - next unless source = dep.source || default - source_requirements[dep.name] = source - end - metadata_dependencies.each do |dep| - source_requirements[dep.name] = sources.metadata_source - end - source_requirements["bundler"] = sources.metadata_source # needs to come last to override - source_requirements - end - - def pinned_spec_names(skip = nil) - pinned_names = [] - default = Bundler.feature_flag.lockfile_uses_separate_rubygems_sources? && sources.default_source - @dependencies.each do |dep| - next unless dep_source = dep.source || default - next if dep_source == skip - pinned_names << dep.name - end - pinned_names - end - - def requested_groups - groups - Bundler.settings[:without] - @optional_groups + Bundler.settings[:with] - end - - def lockfiles_equal?(current, proposed, preserve_unknown_sections) - if preserve_unknown_sections - sections_to_ignore = LockfileParser.sections_to_ignore(@locked_bundler_version) - sections_to_ignore += LockfileParser.unknown_sections_in_lockfile(current) - sections_to_ignore += LockfileParser::ENVIRONMENT_VERSION_SECTIONS - pattern = /#{Regexp.union(sections_to_ignore)}\n(\s{2,}.*\n)+/ - whitespace_cleanup = /\n{2,}/ - current = current.gsub(pattern, "\n").gsub(whitespace_cleanup, "\n\n").strip - proposed = proposed.gsub(pattern, "\n").gsub(whitespace_cleanup, "\n\n").strip - end - current == proposed - end - - def extract_gem_info(error) - # This method will extract the error message like "Could not find foo-1.2.3 in any of the sources" - # to an array. The first element will be the gem name (e.g. foo), the second will be the version number. - error.message.scan(/Could not find (\w+)-(\d+(?:\.\d+)+)/).flatten - end - - def compute_requires - dependencies.reduce({}) do |requires, dep| - next requires unless dep.should_include? - requires[dep.name] = Array(dep.autorequire || dep.name).map do |file| - # Allow `require: true` as an alias for `require: ` - file == true ? dep.name : file - end - requires - end - end - - def additional_base_requirements_for_resolve - return [] unless @locked_gems && Bundler.feature_flag.only_update_to_newer_versions? - dependencies_by_name = dependencies.group_by(&:name) - @locked_gems.specs.reduce({}) do |requirements, locked_spec| - name = locked_spec.name - next requirements if @locked_deps[name] != dependencies_by_name[name] - dep = Gem::Dependency.new(name, ">= #{locked_spec.version}") - requirements[name] = DepProxy.new(dep, locked_spec.platform) - requirements - end.values - end - - def equivalent_rubygems_remotes?(source) - return false unless source.is_a?(Source::Rubygems) - - Bundler.settings[:allow_deployment_source_credential_changes] && source.equivalent_remotes?(sources.rubygems_remotes) - end - end -end diff --git a/lib/bundler/dep_proxy.rb b/lib/bundler/dep_proxy.rb deleted file mode 100644 index 7a9423b14a..0000000000 --- a/lib/bundler/dep_proxy.rb +++ /dev/null @@ -1,48 +0,0 @@ -# frozen_string_literal: true - -module Bundler - class DepProxy - attr_reader :__platform, :dep - - def initialize(dep, platform) - @dep = dep - @__platform = platform - end - - def hash - @hash ||= dep.hash - end - - def ==(other) - return if other.nil? - dep == other.dep && __platform == other.__platform - end - - alias_method :eql?, :== - - def type - @dep.type - end - - def name - @dep.name - end - - def requirement - @dep.requirement - end - - def to_s - s = name.dup - s << " (#{requirement})" unless requirement == Gem::Requirement.default - s << " #{__platform}" unless __platform == Gem::Platform::RUBY - s - end - - private - - def method_missing(*args, &blk) - @dep.send(*args, &blk) - end - end -end diff --git a/lib/bundler/dependency.rb b/lib/bundler/dependency.rb deleted file mode 100644 index 24257bc113..0000000000 --- a/lib/bundler/dependency.rb +++ /dev/null @@ -1,138 +0,0 @@ -# frozen_string_literal: true - -require "rubygems/dependency" -require "bundler/shared_helpers" -require "bundler/rubygems_ext" - -module Bundler - class Dependency < Gem::Dependency - attr_reader :autorequire - attr_reader :groups - attr_reader :platforms - - PLATFORM_MAP = { - :ruby => Gem::Platform::RUBY, - :ruby_18 => Gem::Platform::RUBY, - :ruby_19 => Gem::Platform::RUBY, - :ruby_20 => Gem::Platform::RUBY, - :ruby_21 => Gem::Platform::RUBY, - :ruby_22 => Gem::Platform::RUBY, - :ruby_23 => Gem::Platform::RUBY, - :ruby_24 => Gem::Platform::RUBY, - :ruby_25 => Gem::Platform::RUBY, - :mri => Gem::Platform::RUBY, - :mri_18 => Gem::Platform::RUBY, - :mri_19 => Gem::Platform::RUBY, - :mri_20 => Gem::Platform::RUBY, - :mri_21 => Gem::Platform::RUBY, - :mri_22 => Gem::Platform::RUBY, - :mri_23 => Gem::Platform::RUBY, - :mri_24 => Gem::Platform::RUBY, - :mri_25 => Gem::Platform::RUBY, - :rbx => Gem::Platform::RUBY, - :jruby => Gem::Platform::JAVA, - :jruby_18 => Gem::Platform::JAVA, - :jruby_19 => Gem::Platform::JAVA, - :mswin => Gem::Platform::MSWIN, - :mswin_18 => Gem::Platform::MSWIN, - :mswin_19 => Gem::Platform::MSWIN, - :mswin_20 => Gem::Platform::MSWIN, - :mswin_21 => Gem::Platform::MSWIN, - :mswin_22 => Gem::Platform::MSWIN, - :mswin_23 => Gem::Platform::MSWIN, - :mswin_24 => Gem::Platform::MSWIN, - :mswin_25 => Gem::Platform::MSWIN, - :mswin64 => Gem::Platform::MSWIN64, - :mswin64_19 => Gem::Platform::MSWIN64, - :mswin64_20 => Gem::Platform::MSWIN64, - :mswin64_21 => Gem::Platform::MSWIN64, - :mswin64_22 => Gem::Platform::MSWIN64, - :mswin64_23 => Gem::Platform::MSWIN64, - :mswin64_24 => Gem::Platform::MSWIN64, - :mswin64_25 => Gem::Platform::MSWIN64, - :mingw => Gem::Platform::MINGW, - :mingw_18 => Gem::Platform::MINGW, - :mingw_19 => Gem::Platform::MINGW, - :mingw_20 => Gem::Platform::MINGW, - :mingw_21 => Gem::Platform::MINGW, - :mingw_22 => Gem::Platform::MINGW, - :mingw_23 => Gem::Platform::MINGW, - :mingw_24 => Gem::Platform::MINGW, - :mingw_25 => Gem::Platform::MINGW, - :x64_mingw => Gem::Platform::X64_MINGW, - :x64_mingw_20 => Gem::Platform::X64_MINGW, - :x64_mingw_21 => Gem::Platform::X64_MINGW, - :x64_mingw_22 => Gem::Platform::X64_MINGW, - :x64_mingw_23 => Gem::Platform::X64_MINGW, - :x64_mingw_24 => Gem::Platform::X64_MINGW, - :x64_mingw_25 => Gem::Platform::X64_MINGW, - }.freeze - - REVERSE_PLATFORM_MAP = {}.tap do |reverse_platform_map| - PLATFORM_MAP.each do |key, value| - reverse_platform_map[value] ||= [] - reverse_platform_map[value] << key - end - - reverse_platform_map.each {|_, platforms| platforms.freeze } - end.freeze - - def initialize(name, version, options = {}, &blk) - type = options["type"] || :runtime - super(name, version, type) - - @autorequire = nil - @groups = Array(options["group"] || :default).map(&:to_sym) - @source = options["source"] - @platforms = Array(options["platforms"]) - @env = options["env"] - @should_include = options.fetch("should_include", true) - - @autorequire = Array(options["require"] || []) if options.key?("require") - end - - # Returns the platforms this dependency is valid for, in the same order as - # passed in the `valid_platforms` parameter - def gem_platforms(valid_platforms) - return valid_platforms if @platforms.empty? - - @gem_platforms ||= @platforms.map {|pl| PLATFORM_MAP[pl] }.compact.uniq - - valid_platforms & @gem_platforms - end - - def should_include? - @should_include && current_env? && current_platform? - end - - def current_env? - return true unless @env - if @env.is_a?(Hash) - @env.all? do |key, val| - ENV[key.to_s] && (val.is_a?(String) ? ENV[key.to_s] == val : ENV[key.to_s] =~ val) - end - else - ENV[@env.to_s] - end - end - - def current_platform? - return true if @platforms.empty? - @platforms.any? do |p| - Bundler.current_ruby.send("#{p}?") - end - end - - def to_lock - out = super - out << "!" if source - out << "\n" - end - - def specific? - super - rescue NoMethodError - requirement != ">= 0" - end - end -end diff --git a/lib/bundler/deployment.rb b/lib/bundler/deployment.rb deleted file mode 100644 index 291e158ca0..0000000000 --- a/lib/bundler/deployment.rb +++ /dev/null @@ -1,69 +0,0 @@ -# frozen_string_literal: true - -require "bundler/shared_helpers" -Bundler::SharedHelpers.major_deprecation 2, "Bundler no longer integrates with " \ - "Capistrano, but Capistrano provides its own integration with " \ - "Bundler via the capistrano-bundler gem. Use it instead." - -module Bundler - class Deployment - def self.define_task(context, task_method = :task, opts = {}) - if defined?(Capistrano) && context.is_a?(Capistrano::Configuration) - context_name = "capistrano" - role_default = "{:except => {:no_release => true}}" - error_type = ::Capistrano::CommandError - else - context_name = "vlad" - role_default = "[:app]" - error_type = ::Rake::CommandFailedError - end - - roles = context.fetch(:bundle_roles, false) - opts[:roles] = roles if roles - - context.send :namespace, :bundle do - send :desc, <<-DESC - Install the current Bundler environment. By default, gems will be \ - installed to the shared/bundle path. Gems in the development and \ - test group will not be installed. The install command is executed \ - with the --deployment and --quiet flags. If the bundle cmd cannot \ - be found then you can override the bundle_cmd variable to specify \ - which one it should use. The base path to the app is fetched from \ - the :latest_release variable. Set it for custom deploy layouts. - - You can override any of these defaults by setting the variables shown below. - - N.B. bundle_roles must be defined before you require 'bundler/#{context_name}' \ - in your deploy.rb file. - - set :bundle_gemfile, "Gemfile" - set :bundle_dir, File.join(fetch(:shared_path), 'bundle') - set :bundle_flags, "--deployment --quiet" - set :bundle_without, [:development, :test] - set :bundle_with, [:mysql] - set :bundle_cmd, "bundle" # e.g. "/opt/ruby/bin/bundle" - set :bundle_roles, #{role_default} # e.g. [:app, :batch] - DESC - send task_method, :install, opts do - bundle_cmd = context.fetch(:bundle_cmd, "bundle") - bundle_flags = context.fetch(:bundle_flags, "--deployment --quiet") - bundle_dir = context.fetch(:bundle_dir, File.join(context.fetch(:shared_path), "bundle")) - bundle_gemfile = context.fetch(:bundle_gemfile, "Gemfile") - bundle_without = [*context.fetch(:bundle_without, [:development, :test])].compact - bundle_with = [*context.fetch(:bundle_with, [])].compact - app_path = context.fetch(:latest_release) - if app_path.to_s.empty? - raise error_type.new("Cannot detect current release path - make sure you have deployed at least once.") - end - args = ["--gemfile #{File.join(app_path, bundle_gemfile)}"] - args << "--path #{bundle_dir}" unless bundle_dir.to_s.empty? - args << bundle_flags.to_s - args << "--without #{bundle_without.join(" ")}" unless bundle_without.empty? - args << "--with #{bundle_with.join(" ")}" unless bundle_with.empty? - - run "cd #{app_path} && #{bundle_cmd} install #{args.join(" ")}" - end - end - end - end -end diff --git a/lib/bundler/deprecate.rb b/lib/bundler/deprecate.rb deleted file mode 100644 index 387f632a39..0000000000 --- a/lib/bundler/deprecate.rb +++ /dev/null @@ -1,43 +0,0 @@ -# frozen_string_literal: true - -begin - require "rubygems/deprecate" -rescue LoadError - # it's fine if it doesn't exist on the current RubyGems... - nil -end - -module Bundler - if defined? Bundler::Deprecate - # nothing to do! - elsif defined? ::Deprecate - Deprecate = ::Deprecate - elsif defined? Gem::Deprecate - Deprecate = Gem::Deprecate - else - class Deprecate - end - end - - unless Deprecate.respond_to?(:skip_during) - def Deprecate.skip_during - original = skip - self.skip = true - yield - ensure - self.skip = original - end - end - - unless Deprecate.respond_to?(:skip) - def Deprecate.skip - @skip ||= false - end - end - - unless Deprecate.respond_to?(:skip=) - def Deprecate.skip=(skip) - @skip = skip - end - end -end diff --git a/lib/bundler/dsl.rb b/lib/bundler/dsl.rb deleted file mode 100644 index 8681163277..0000000000 --- a/lib/bundler/dsl.rb +++ /dev/null @@ -1,599 +0,0 @@ -# frozen_string_literal: true - -require "bundler/dependency" -require "bundler/ruby_dsl" - -module Bundler - class Dsl - include RubyDsl - - def self.evaluate(gemfile, lockfile, unlock) - builder = new - builder.eval_gemfile(gemfile) - builder.to_definition(lockfile, unlock) - end - - VALID_PLATFORMS = Bundler::Dependency::PLATFORM_MAP.keys.freeze - - VALID_KEYS = %w[group groups git path glob name branch ref tag require submodules - platform platforms type source install_if].freeze - - attr_reader :gemspecs - attr_accessor :dependencies - - def initialize - @source = nil - @sources = SourceList.new - @git_sources = {} - @dependencies = [] - @groups = [] - @install_conditionals = [] - @optional_groups = [] - @platforms = [] - @env = nil - @ruby_version = nil - @gemspecs = [] - @gemfile = nil - @gemfiles = [] - add_git_sources - end - - def eval_gemfile(gemfile, contents = nil) - expanded_gemfile_path = Pathname.new(gemfile).expand_path(@gemfile && @gemfile.parent) - original_gemfile = @gemfile - @gemfile = expanded_gemfile_path - @gemfiles << expanded_gemfile_path - contents ||= Bundler.read_file(@gemfile.to_s) - instance_eval(contents.dup.untaint, gemfile.to_s, 1) - rescue Exception => e - message = "There was an error " \ - "#{e.is_a?(GemfileEvalError) ? "evaluating" : "parsing"} " \ - "`#{File.basename gemfile.to_s}`: #{e.message}" - - raise DSLError.new(message, gemfile, e.backtrace, contents) - ensure - @gemfile = original_gemfile - end - - def gemspec(opts = nil) - opts ||= {} - path = opts[:path] || "." - glob = opts[:glob] - name = opts[:name] - development_group = opts[:development_group] || :development - expanded_path = gemfile_root.join(path) - - gemspecs = Dir[File.join(expanded_path, "{,*}.gemspec")].map {|g| Bundler.load_gemspec(g) }.compact - gemspecs.reject! {|s| s.name != name } if name - Index.sort_specs(gemspecs) - specs_by_name_and_version = gemspecs.group_by {|s| [s.name, s.version] } - - case specs_by_name_and_version.size - when 1 - specs = specs_by_name_and_version.values.first - spec = specs.find {|s| s.match_platform(Bundler.local_platform) } || specs.first - - @gemspecs << spec - - gem_platforms = Bundler::Dependency::REVERSE_PLATFORM_MAP[Bundler::GemHelpers.generic_local_platform] - gem spec.name, :name => spec.name, :path => path, :glob => glob, :platforms => gem_platforms - - group(development_group) do - spec.development_dependencies.each do |dep| - gem dep.name, *(dep.requirement.as_list + [:type => :development]) - end - end - when 0 - raise InvalidOption, "There are no gemspecs at #{expanded_path}" - else - raise InvalidOption, "There are multiple gemspecs at #{expanded_path}. " \ - "Please use the :name option to specify which one should be used" - end - end - - def gem(name, *args) - options = args.last.is_a?(Hash) ? args.pop.dup : {} - version = args || [">= 0"] - - normalize_options(name, version, options) - - dep = Dependency.new(name, version, options) - - # if there's already a dependency with this name we try to prefer one - if current = @dependencies.find {|d| d.name == dep.name } - deleted_dep = @dependencies.delete(current) if current.type == :development - - if current.requirement != dep.requirement - unless deleted_dep - return if dep.type == :development - raise GemfileError, "You cannot specify the same gem twice with different version requirements.\n" \ - "You specified: #{current.name} (#{current.requirement}) and #{dep.name} (#{dep.requirement})" - end - - else - Bundler.ui.warn "Your Gemfile lists the gem #{current.name} (#{current.requirement}) more than once.\n" \ - "You should probably keep only one of them.\n" \ - "While it's not a problem now, it could cause errors if you change the version of one of them later." - end - - if current.source != dep.source - unless deleted_dep - return if dep.type == :development - raise GemfileError, "You cannot specify the same gem twice coming from different sources.\n" \ - "You specified that #{dep.name} (#{dep.requirement}) should come from " \ - "#{current.source || "an unspecified source"} and #{dep.source}\n" - end - end - end - - @dependencies << dep - end - - def source(source, *args, &blk) - options = args.last.is_a?(Hash) ? args.pop.dup : {} - options = normalize_hash(options) - source = normalize_source(source) - - if options.key?("type") - options["type"] = options["type"].to_s - unless Plugin.source?(options["type"]) - raise InvalidOption, "No plugin sources available for #{options["type"]}" - end - - unless block_given? - raise InvalidOption, "You need to pass a block to #source with :type option" - end - - source_opts = options.merge("uri" => source) - with_source(@sources.add_plugin_source(options["type"], source_opts), &blk) - elsif block_given? - with_source(@sources.add_rubygems_source("remotes" => source), &blk) - else - check_primary_source_safety(@sources) - @sources.global_rubygems_source = source - end - end - - def git_source(name, &block) - unless block_given? - raise InvalidOption, "You need to pass a block to #git_source" - end - - if valid_keys.include?(name.to_s) - raise InvalidOption, "You cannot use #{name} as a git source. It " \ - "is a reserved key. Reserved keys are: #{valid_keys.join(", ")}" - end - - @git_sources[name.to_s] = block - end - - def path(path, options = {}, &blk) - unless block_given? - msg = "You can no longer specify a path source by itself. Instead, \n" \ - "either use the :path option on a gem, or specify the gems that \n" \ - "bundler should find in the path source by passing a block to \n" \ - "the path method, like: \n\n" \ - " path 'dir/containing/rails' do\n" \ - " gem 'rails'\n" \ - " end\n\n" - - raise DeprecatedError, msg if Bundler.feature_flag.disable_multisource? - SharedHelpers.major_deprecation(2, msg.strip) - end - - source_options = normalize_hash(options).merge( - "path" => Pathname.new(path), - "root_path" => gemfile_root, - "gemspec" => gemspecs.find {|g| g.name == options["name"] } - ) - source = @sources.add_path_source(source_options) - with_source(source, &blk) - end - - def git(uri, options = {}, &blk) - unless block_given? - msg = "You can no longer specify a git source by itself. Instead, \n" \ - "either use the :git option on a gem, or specify the gems that \n" \ - "bundler should find in the git source by passing a block to \n" \ - "the git method, like: \n\n" \ - " git 'git://github.com/rails/rails.git' do\n" \ - " gem 'rails'\n" \ - " end" - raise DeprecatedError, msg - end - - with_source(@sources.add_git_source(normalize_hash(options).merge("uri" => uri)), &blk) - end - - def github(repo, options = {}) - raise ArgumentError, "GitHub sources require a block" unless block_given? - raise DeprecatedError, "The #github method has been removed" if Bundler.feature_flag.skip_default_git_sources? - github_uri = @git_sources["github"].call(repo) - git_options = normalize_hash(options).merge("uri" => github_uri) - git_source = @sources.add_git_source(git_options) - with_source(git_source) { yield } - end - - def to_definition(lockfile, unlock) - Definition.new(lockfile, @dependencies, @sources, unlock, @ruby_version, @optional_groups, @gemfiles) - end - - def group(*args, &blk) - options = args.last.is_a?(Hash) ? args.pop.dup : {} - normalize_group_options(options, args) - - @groups.concat args - - if options["optional"] - optional_groups = args - @optional_groups - @optional_groups.concat optional_groups - end - - yield - ensure - args.each { @groups.pop } - end - - def install_if(*args) - @install_conditionals.concat args - yield - ensure - args.each { @install_conditionals.pop } - end - - def platforms(*platforms) - @platforms.concat platforms - yield - ensure - platforms.each { @platforms.pop } - end - alias_method :platform, :platforms - - def env(name) - old = @env - @env = name - yield - ensure - @env = old - end - - def plugin(*args) - # Pass on - end - - def method_missing(name, *args) - raise GemfileError, "Undefined local variable or method `#{name}' for Gemfile" - end - - private - - def add_git_sources - return if Bundler.feature_flag.skip_default_git_sources? - - git_source(:github) do |repo_name| - warn_deprecated_git_source(:github, <<-'RUBY'.strip, 'Change any "reponame" :github sources to "username/reponame".') -"https://github.com/#{repo_name}.git" - RUBY - # It would be better to use https instead of the git protocol, but this - # can break deployment of existing locked bundles when switching between - # different versions of Bundler. The change will be made in 2.0, which - # does not guarantee compatibility with the 1.x series. - # - # See https://github.com/bundler/bundler/pull/2569 for discussion - # - # This can be overridden by adding this code to your Gemfiles: - # - # git_source(:github) do |repo_name| - # repo_name = "#{repo_name}/#{repo_name}" unless repo_name.include?("/") - # "https://github.com/#{repo_name}.git" - # end - repo_name = "#{repo_name}/#{repo_name}" unless repo_name.include?("/") - # TODO: 2.0 upgrade this setting to the default - if Bundler.settings["github.https"] - Bundler::SharedHelpers.major_deprecation 2, "The `github.https` setting will be removed" - "https://github.com/#{repo_name}.git" - else - "git://github.com/#{repo_name}.git" - end - end - - # TODO: 2.0 remove this deprecated git source - git_source(:gist) do |repo_name| - warn_deprecated_git_source(:gist, '"https://gist.github.com/#{repo_name}.git"') - - "https://gist.github.com/#{repo_name}.git" - end - - # TODO: 2.0 remove this deprecated git source - git_source(:bitbucket) do |repo_name| - warn_deprecated_git_source(:bitbucket, <<-'RUBY'.strip) -user_name, repo_name = repo_name.split("/") -repo_name ||= user_name -"https://#{user_name}@bitbucket.org/#{user_name}/#{repo_name}.git" - RUBY - - user_name, repo_name = repo_name.split("/") - repo_name ||= user_name - "https://#{user_name}@bitbucket.org/#{user_name}/#{repo_name}.git" - end - end - - def with_source(source) - old_source = @source - if block_given? - @source = source - yield - end - source - ensure - @source = old_source - end - - def normalize_hash(opts) - opts.keys.each do |k| - opts[k.to_s] = opts.delete(k) unless k.is_a?(String) - end - opts - end - - def valid_keys - @valid_keys ||= VALID_KEYS - end - - def normalize_options(name, version, opts) - if name.is_a?(Symbol) - raise GemfileError, %(You need to specify gem names as Strings. Use 'gem "#{name}"' instead) - end - if name =~ /\s/ - raise GemfileError, %('#{name}' is not a valid gem name because it contains whitespace) - end - if name.empty? - raise GemfileError, %(an empty gem name is not valid) - end - - normalize_hash(opts) - - git_names = @git_sources.keys.map(&:to_s) - validate_keys("gem '#{name}'", opts, valid_keys + git_names) - - groups = @groups.dup - opts["group"] = opts.delete("groups") || opts["group"] - groups.concat Array(opts.delete("group")) - groups = [:default] if groups.empty? - - install_if = @install_conditionals.dup - install_if.concat Array(opts.delete("install_if")) - install_if = install_if.reduce(true) do |memo, val| - memo && (val.respond_to?(:call) ? val.call : val) - end - - platforms = @platforms.dup - opts["platforms"] = opts["platform"] || opts["platforms"] - platforms.concat Array(opts.delete("platforms")) - platforms.map!(&:to_sym) - platforms.each do |p| - next if VALID_PLATFORMS.include?(p) - raise GemfileError, "`#{p}` is not a valid platform. The available options are: #{VALID_PLATFORMS.inspect}" - end - - # Save sources passed in a key - if opts.key?("source") - source = normalize_source(opts["source"]) - opts["source"] = @sources.add_rubygems_source("remotes" => source) - end - - git_name = (git_names & opts.keys).last - if @git_sources[git_name] - opts["git"] = @git_sources[git_name].call(opts[git_name]) - end - - %w[git path].each do |type| - next unless param = opts[type] - if version.first && version.first =~ /^\s*=?\s*(\d[^\s]*)\s*$/ - options = opts.merge("name" => name, "version" => $1) - else - options = opts.dup - end - source = send(type, param, options) {} - opts["source"] = source - end - - opts["source"] ||= @source - opts["env"] ||= @env - opts["platforms"] = platforms.dup - opts["group"] = groups - opts["should_include"] = install_if - end - - def normalize_group_options(opts, groups) - normalize_hash(opts) - - groups = groups.map {|group| ":#{group}" }.join(", ") - validate_keys("group #{groups}", opts, %w[optional]) - - opts["optional"] ||= false - end - - def validate_keys(command, opts, valid_keys) - invalid_keys = opts.keys - valid_keys - - git_source = opts.keys & @git_sources.keys.map(&:to_s) - if opts["branch"] && !(opts["git"] || opts["github"] || git_source.any?) - raise GemfileError, %(The `branch` option for `#{command}` is not allowed. Only gems with a git source can specify a branch) - end - - return true unless invalid_keys.any? - - message = String.new - message << "You passed #{invalid_keys.map {|k| ":" + k }.join(", ")} " - message << if invalid_keys.size > 1 - "as options for #{command}, but they are invalid." - else - "as an option for #{command}, but it is invalid." - end - - message << " Valid options are: #{valid_keys.join(", ")}." - message << " You may be able to resolve this by upgrading Bundler to the newest version." - raise InvalidOption, message - end - - def normalize_source(source) - case source - when :gemcutter, :rubygems, :rubyforge - Bundler::SharedHelpers.major_deprecation 2, "The source :#{source} is deprecated because HTTP " \ - "requests are insecure.\nPlease change your source to 'https://" \ - "rubygems.org' if possible, or 'http://rubygems.org' if not." - "http://rubygems.org" - when String - source - else - raise GemfileError, "Unknown source '#{source}'" - end - end - - def check_primary_source_safety(source_list) - return if source_list.rubygems_primary_remotes.empty? && source_list.global_rubygems_source.nil? - - if Bundler.feature_flag.disable_multisource? - msg = "This Gemfile contains multiple primary sources. " \ - "Each source after the first must include a block to indicate which gems " \ - "should come from that source" - unless Bundler.feature_flag.bundler_2_mode? - msg += ". To downgrade this error to a warning, run " \ - "`bundle config --delete disable_multisource`" - end - raise GemfileEvalError, msg - else - Bundler::SharedHelpers.major_deprecation 2, "Your Gemfile contains multiple primary sources. " \ - "Using `source` more than once without a block is a security risk, and " \ - "may result in installing unexpected gems. To resolve this warning, use " \ - "a block to indicate which gems should come from the secondary source. " \ - "To upgrade this warning to an error, run `bundle config " \ - "disable_multisource true`." - end - end - - def warn_deprecated_git_source(name, replacement, additional_message = nil) - # TODO: 2.0 remove deprecation - additional_message &&= " #{additional_message}" - replacement = if replacement.count("\n").zero? - "{|repo_name| #{replacement} }" - else - "do |repo_name|\n#{replacement.to_s.gsub(/^/, " ")}\n end" - end - - Bundler::SharedHelpers.major_deprecation 2, <<-EOS -The :#{name} git source is deprecated, and will be removed in Bundler 2.0.#{additional_message} Add this code to the top of your Gemfile to ensure it continues to work: - - git_source(:#{name}) #{replacement} - - EOS - end - - class DSLError < GemfileError - # @return [String] the description that should be presented to the user. - # - attr_reader :description - - # @return [String] the path of the dsl file that raised the exception. - # - attr_reader :dsl_path - - # @return [Exception] the backtrace of the exception raised by the - # evaluation of the dsl file. - # - attr_reader :backtrace - - # @param [Exception] backtrace @see backtrace - # @param [String] dsl_path @see dsl_path - # - def initialize(description, dsl_path, backtrace, contents = nil) - @status_code = $!.respond_to?(:status_code) && $!.status_code - - @description = description - @dsl_path = dsl_path - @backtrace = backtrace - @contents = contents - end - - def status_code - @status_code || super - end - - # @return [String] the contents of the DSL that cause the exception to - # be raised. - # - def contents - @contents ||= begin - dsl_path && File.exist?(dsl_path) && File.read(dsl_path) - end - end - - # The message of the exception reports the content of podspec for the - # line that generated the original exception. - # - # @example Output - # - # Invalid podspec at `RestKit.podspec` - undefined method - # `exclude_header_search_paths=' for # - # - # from spec-repos/master/RestKit/0.9.3/RestKit.podspec:36 - # ------------------------------------------- - # # because it would break: #import - # > ns.exclude_header_search_paths = 'Code/RestKit.h' - # end - # ------------------------------------------- - # - # @return [String] the message of the exception. - # - def to_s - @to_s ||= begin - trace_line, description = parse_line_number_from_description - - m = String.new("\n[!] ") - m << description - m << ". Bundler cannot continue.\n" - - return m unless backtrace && dsl_path && contents - - trace_line = backtrace.find {|l| l.include?(dsl_path.to_s) } || trace_line - return m unless trace_line - line_numer = trace_line.split(":")[1].to_i - 1 - return m unless line_numer - - lines = contents.lines.to_a - indent = " # " - indicator = indent.tr("#", ">") - first_line = line_numer.zero? - last_line = (line_numer == (lines.count - 1)) - - m << "\n" - m << "#{indent}from #{trace_line.gsub(/:in.*$/, "")}\n" - m << "#{indent}-------------------------------------------\n" - m << "#{indent}#{lines[line_numer - 1]}" unless first_line - m << "#{indicator}#{lines[line_numer]}" - m << "#{indent}#{lines[line_numer + 1]}" unless last_line - m << "\n" unless m.end_with?("\n") - m << "#{indent}-------------------------------------------\n" - end - end - - private - - def parse_line_number_from_description - description = self.description - if dsl_path && description =~ /((#{Regexp.quote File.expand_path(dsl_path)}|#{Regexp.quote dsl_path.to_s}):\d+)/ - trace_line = Regexp.last_match[1] - description = description.sub(/#{Regexp.quote trace_line}:\s*/, "").sub("\n", " - ") - end - [trace_line, description] - end - end - - def gemfile_root - @gemfile ||= Bundler.default_gemfile - @gemfile.dirname - end - end -end diff --git a/lib/bundler/endpoint_specification.rb b/lib/bundler/endpoint_specification.rb deleted file mode 100644 index 8668c4ea7f..0000000000 --- a/lib/bundler/endpoint_specification.rb +++ /dev/null @@ -1,141 +0,0 @@ -# frozen_string_literal: true - -module Bundler - # used for Creating Specifications from the Gemcutter Endpoint - class EndpointSpecification < Gem::Specification - ILLFORMED_MESSAGE = 'Ill-formed requirement ["# e - raise GemspecError, "There was an error parsing the metadata for the gem #{name} (#{version}): #{e.class}\n#{e}\nThe metadata was #{data.inspect}" - end - - def build_dependency(name, requirements) - Gem::Dependency.new(name, requirements) - rescue ArgumentError => e - raise unless e.message.include?(ILLFORMED_MESSAGE) - puts # we shouldn't print the error message on the "fetching info" status line - raise GemspecError, - "Unfortunately, the gem #{name} (#{version}) has an invalid " \ - "gemspec.\nPlease ask the gem author to yank the bad version to fix " \ - "this issue. For more information, see http://bit.ly/syck-defaultkey." - end - end -end diff --git a/lib/bundler/env.rb b/lib/bundler/env.rb deleted file mode 100644 index 58fe20dbe7..0000000000 --- a/lib/bundler/env.rb +++ /dev/null @@ -1,153 +0,0 @@ -# frozen_string_literal: true - -require "bundler/rubygems_integration" -require "bundler/source/git/git_proxy" - -module Bundler - class Env - def self.write(io) - io.write report - end - - def self.report(options = {}) - print_gemfile = options.delete(:print_gemfile) { true } - print_gemspecs = options.delete(:print_gemspecs) { true } - - out = String.new - append_formatted_table("Environment", environment, out) - append_formatted_table("Bundler Build Metadata", BuildMetadata.to_h, out) - - unless Bundler.settings.all.empty? - out << "\n## Bundler settings\n\n```\n" - Bundler.settings.all.each do |setting| - out << setting << "\n" - Bundler.settings.pretty_values_for(setting).each do |line| - out << " " << line << "\n" - end - end - out << "```\n" - end - - return out unless SharedHelpers.in_bundle? - - if print_gemfile - gemfiles = [Bundler.default_gemfile] - begin - gemfiles = Bundler.definition.gemfiles - rescue GemfileNotFound - nil - end - - out << "\n## Gemfile\n" - gemfiles.each do |gemfile| - out << "\n### #{Pathname.new(gemfile).relative_path_from(SharedHelpers.pwd)}\n\n" - out << "```ruby\n" << read_file(gemfile).chomp << "\n```\n" - end - - out << "\n### #{Bundler.default_lockfile.relative_path_from(SharedHelpers.pwd)}\n\n" - out << "```\n" << read_file(Bundler.default_lockfile).chomp << "\n```\n" - end - - if print_gemspecs - dsl = Dsl.new.tap {|d| d.eval_gemfile(Bundler.default_gemfile) } - out << "\n## Gemspecs\n" unless dsl.gemspecs.empty? - dsl.gemspecs.each do |gs| - out << "\n### #{File.basename(gs.loaded_from)}" - out << "\n\n```ruby\n" << read_file(gs.loaded_from).chomp << "\n```\n" - end - end - - out - end - - def self.read_file(filename) - File.read(filename.to_s).strip - rescue Errno::ENOENT - "" - rescue => e - "#{e.class}: #{e.message}" - end - - def self.ruby_version - str = String.new("#{RUBY_VERSION}") - if RUBY_VERSION < "1.9" - str << " (#{RUBY_RELEASE_DATE}" - str << " patchlevel #{RUBY_PATCHLEVEL}" if defined? RUBY_PATCHLEVEL - str << ") [#{RUBY_PLATFORM}]" - else - str << "p#{RUBY_PATCHLEVEL}" if defined? RUBY_PATCHLEVEL - str << " (#{RUBY_RELEASE_DATE} revision #{RUBY_REVISION}) [#{RUBY_PLATFORM}]" - end - end - - def self.git_version - Bundler::Source::Git::GitProxy.new(nil, nil, nil).full_version - rescue Bundler::Source::Git::GitNotInstalledError - "not installed" - end - - def self.version_of(script) - return "not installed" unless Bundler.which(script) - `#{script} --version` - end - - def self.chruby_version - return "not installed" unless Bundler.which("chruby-exec") - `chruby-exec -- chruby --version`. - sub(/.*^chruby: (#{Gem::Version::VERSION_PATTERN}).*/m, '\1') - end - - def self.environment - out = [] - - out << ["Bundler", Bundler::VERSION] - out << [" Platforms", Gem.platforms.join(", ")] - out << ["Ruby", ruby_version] - out << [" Full Path", Gem.ruby] - out << [" Config Dir", Pathname.new(Gem::ConfigFile::SYSTEM_WIDE_CONFIG_FILE).dirname] - out << ["RubyGems", Gem::VERSION] - out << [" Gem Home", ENV.fetch("GEM_HOME") { Gem.dir }] - out << [" Gem Path", ENV.fetch("GEM_PATH") { Gem.path.join(File::PATH_SEPARATOR) }] - out << [" User Path", Gem.user_dir] - out << [" Bin Dir", Gem.bindir] - out << ["OpenSSL"] if defined?(OpenSSL) - out << [" Compiled", OpenSSL::OPENSSL_VERSION] if defined?(OpenSSL::OPENSSL_VERSION) - out << [" Loaded", OpenSSL::OPENSSL_LIBRARY_VERSION] if defined?(OpenSSL::OPENSSL_LIBRARY_VERSION) - out << [" Cert File", OpenSSL::X509::DEFAULT_CERT_FILE] if defined?(OpenSSL::X509::DEFAULT_CERT_FILE) - out << [" Cert Dir", OpenSSL::X509::DEFAULT_CERT_DIR] if defined?(OpenSSL::X509::DEFAULT_CERT_DIR) - out << ["Tools"] - out << [" Git", git_version] - out << [" RVM", ENV.fetch("rvm_version") { version_of("rvm") }] - out << [" rbenv", version_of("rbenv")] - out << [" chruby", chruby_version] - - %w[rubygems-bundler open_gem].each do |name| - specs = Bundler.rubygems.find_name(name) - out << [" #{name}", "(#{specs.map(&:version).join(",")})"] unless specs.empty? - end - if (exe = caller.last.split(":").first) && exe =~ %r{(exe|bin)/bundler?\z} - shebang = File.read(exe).lines.first - shebang.sub!(/^#!\s*/, "") - unless shebang.start_with?(Gem.ruby, "/usr/bin/env ruby") - out << ["Gem.ruby", Gem.ruby] - out << ["bundle #!", shebang] - end - end - - out - end - - def self.append_formatted_table(title, pairs, out) - return if pairs.empty? - out << "\n" unless out.empty? - out << "## #{title}\n\n```\n" - ljust = pairs.map {|k, _v| k.to_s.length }.max - pairs.each do |k, v| - out << "#{k.to_s.ljust(ljust)} #{v}\n" - end - out << "```\n" - end - - private_class_method :read_file, :ruby_version, :git_version, :append_formatted_table, :version_of, :chruby_version - end -end diff --git a/lib/bundler/environment_preserver.rb b/lib/bundler/environment_preserver.rb deleted file mode 100644 index af7c1ef0a4..0000000000 --- a/lib/bundler/environment_preserver.rb +++ /dev/null @@ -1,59 +0,0 @@ -# frozen_string_literal: true - -module Bundler - class EnvironmentPreserver - INTENTIONALLY_NIL = "BUNDLER_ENVIRONMENT_PRESERVER_INTENTIONALLY_NIL".freeze - BUNDLER_KEYS = %w[ - BUNDLE_BIN_PATH - BUNDLE_GEMFILE - BUNDLER_ORIG_MANPATH - BUNDLER_VERSION - GEM_HOME - GEM_PATH - MANPATH - PATH - RB_USER_INSTALL - RUBYLIB - RUBYOPT - ].map(&:freeze).freeze - BUNDLER_PREFIX = "BUNDLER_ORIG_".freeze - - # @param env [ENV] - # @param keys [Array] - def initialize(env, keys) - @original = env.to_hash - @keys = keys - @prefix = BUNDLER_PREFIX - end - - # @return [Hash] - def backup - env = @original.clone - @keys.each do |key| - value = env[key] - if !value.nil? && !value.empty? - env[@prefix + key] ||= value - elsif value.nil? - env[@prefix + key] ||= INTENTIONALLY_NIL - end - end - env - end - - # @return [Hash] - def restore - env = @original.clone - @keys.each do |key| - value_original = env[@prefix + key] - next if value_original.nil? || value_original.empty? - if value_original == INTENTIONALLY_NIL - env.delete(key) - else - env[key] = value_original - end - env.delete(@prefix + key) - end - env - end - end -end diff --git a/lib/bundler/errors.rb b/lib/bundler/errors.rb deleted file mode 100644 index e471bce0b6..0000000000 --- a/lib/bundler/errors.rb +++ /dev/null @@ -1,158 +0,0 @@ -# frozen_string_literal: true - -module Bundler - class BundlerError < StandardError - def self.status_code(code) - define_method(:status_code) { code } - if match = BundlerError.all_errors.find {|_k, v| v == code } - error, _ = match - raise ArgumentError, - "Trying to register #{self} for status code #{code} but #{error} is already registered" - end - BundlerError.all_errors[self] = code - end - - def self.all_errors - @all_errors ||= {} - end - end - - class GemfileError < BundlerError; status_code(4); end - class InstallError < BundlerError; status_code(5); end - - # Internal error, should be rescued - class VersionConflict < BundlerError - attr_reader :conflicts - - def initialize(conflicts, msg = nil) - super(msg) - @conflicts = conflicts - end - - status_code(6) - end - - class GemNotFound < BundlerError; status_code(7); end - class InstallHookError < BundlerError; status_code(8); end - class GemfileNotFound < BundlerError; status_code(10); end - class GitError < BundlerError; status_code(11); end - class DeprecatedError < BundlerError; status_code(12); end - class PathError < BundlerError; status_code(13); end - class GemspecError < BundlerError; status_code(14); end - class InvalidOption < BundlerError; status_code(15); end - class ProductionError < BundlerError; status_code(16); end - class HTTPError < BundlerError - status_code(17) - def filter_uri(uri) - URICredentialsFilter.credential_filtered_uri(uri) - end - end - class RubyVersionMismatch < BundlerError; status_code(18); end - class SecurityError < BundlerError; status_code(19); end - class LockfileError < BundlerError; status_code(20); end - class CyclicDependencyError < BundlerError; status_code(21); end - class GemfileLockNotFound < BundlerError; status_code(22); end - class PluginError < BundlerError; status_code(29); end - class SudoNotPermittedError < BundlerError; status_code(30); end - class ThreadCreationError < BundlerError; status_code(33); end - class APIResponseMismatchError < BundlerError; status_code(34); end - class GemfileEvalError < GemfileError; end - class MarshalError < StandardError; end - - class PermissionError < BundlerError - def initialize(path, permission_type = :write) - @path = path - @permission_type = permission_type - end - - def action - case @permission_type - when :read then "read from" - when :write then "write to" - when :executable, :exec then "execute" - else @permission_type.to_s - end - end - - def message - "There was an error while trying to #{action} `#{@path}`. " \ - "It is likely that you need to grant #{@permission_type} permissions " \ - "for that path." - end - - status_code(23) - end - - class GemRequireError < BundlerError - attr_reader :orig_exception - - def initialize(orig_exception, msg) - full_message = msg + "\nGem Load Error is: #{orig_exception.message}\n"\ - "Backtrace for gem load error is:\n"\ - "#{orig_exception.backtrace.join("\n")}\n"\ - "Bundler Error Backtrace:\n" - super(full_message) - @orig_exception = orig_exception - end - - status_code(24) - end - - class YamlSyntaxError < BundlerError - attr_reader :orig_exception - - def initialize(orig_exception, msg) - super(msg) - @orig_exception = orig_exception - end - - status_code(25) - end - - class TemporaryResourceError < PermissionError - def message - "There was an error while trying to #{action} `#{@path}`. " \ - "Some resource was temporarily unavailable. It's suggested that you try" \ - "the operation again." - end - - status_code(26) - end - - class VirtualProtocolError < BundlerError - def message - "There was an error relating to virtualization and file access." \ - "It is likely that you need to grant access to or mount some file system correctly." - end - - status_code(27) - end - - class OperationNotSupportedError < PermissionError - def message - "Attempting to #{action} `#{@path}` is unsupported by your OS." - end - - status_code(28) - end - - class NoSpaceOnDeviceError < PermissionError - def message - "There was an error while trying to #{action} `#{@path}`. " \ - "There was insufficient space remaining on the device." - end - - status_code(31) - end - - class GenericSystemCallError < BundlerError - attr_reader :underlying_error - - def initialize(underlying_error, message) - @underlying_error = underlying_error - super("#{message}\nThe underlying system error is #{@underlying_error.class}: #{@underlying_error}") - end - - status_code(32) - end -end diff --git a/lib/bundler/feature_flag.rb b/lib/bundler/feature_flag.rb deleted file mode 100644 index 6a1809cd40..0000000000 --- a/lib/bundler/feature_flag.rb +++ /dev/null @@ -1,67 +0,0 @@ -# frozen_string_literal: true - -module Bundler - class FeatureFlag - def self.settings_flag(flag, &default) - unless Bundler::Settings::BOOL_KEYS.include?(flag.to_s) - raise "Cannot use `#{flag}` as a settings feature flag since it isn't a bool key" - end - - settings_method("#{flag}?", flag, &default) - end - private_class_method :settings_flag - - def self.settings_option(key, &default) - settings_method(key, key, &default) - end - private_class_method :settings_option - - def self.settings_method(name, key, &default) - define_method(name) do - value = Bundler.settings[key] - value = instance_eval(&default) if value.nil? && !default.nil? - value - end - end - private_class_method :settings_method - - (1..10).each {|v| define_method("bundler_#{v}_mode?") { major_version >= v } } - - settings_flag(:allow_bundler_dependency_conflicts) { bundler_2_mode? } - settings_flag(:allow_offline_install) { bundler_2_mode? } - settings_flag(:auto_clean_without_path) { bundler_2_mode? } - settings_flag(:cache_all) { bundler_2_mode? } - settings_flag(:cache_command_is_package) { bundler_2_mode? } - settings_flag(:console_command) { !bundler_2_mode? } - settings_flag(:default_install_uses_path) { bundler_2_mode? } - settings_flag(:deployment_means_frozen) { bundler_2_mode? } - settings_flag(:disable_multisource) { bundler_2_mode? } - settings_flag(:error_on_stderr) { bundler_2_mode? } - settings_flag(:forget_cli_options) { bundler_2_mode? } - settings_flag(:global_gem_cache) { bundler_2_mode? } - settings_flag(:init_gems_rb) { bundler_2_mode? } - settings_flag(:list_command) { bundler_2_mode? } - settings_flag(:lockfile_uses_separate_rubygems_sources) { bundler_2_mode? } - settings_flag(:only_update_to_newer_versions) { bundler_2_mode? } - settings_flag(:plugins) { @bundler_version >= Gem::Version.new("1.14") } - settings_flag(:prefer_gems_rb) { bundler_2_mode? } - settings_flag(:print_only_version_number) { bundler_2_mode? } - settings_flag(:setup_makes_kernel_gem_public) { !bundler_2_mode? } - settings_flag(:skip_default_git_sources) { bundler_2_mode? } - settings_flag(:specific_platform) { bundler_2_mode? } - settings_flag(:suppress_install_using_messages) { bundler_2_mode? } - settings_flag(:unlock_source_unlocks_spec) { !bundler_2_mode? } - settings_flag(:update_requires_all_flag) { bundler_2_mode? } - - settings_option(:default_cli_command) { bundler_2_mode? ? :cli_help : :install } - - def initialize(bundler_version) - @bundler_version = Gem::Version.create(bundler_version) - end - - def major_version - @bundler_version.segments.first - end - private :major_version - end -end diff --git a/lib/bundler/fetcher.rb b/lib/bundler/fetcher.rb deleted file mode 100644 index 03ff528826..0000000000 --- a/lib/bundler/fetcher.rb +++ /dev/null @@ -1,312 +0,0 @@ -# frozen_string_literal: true - -require "bundler/vendored_persistent" -require "cgi" -require "securerandom" -require "zlib" - -module Bundler - # Handles all the fetching with the rubygems server - class Fetcher - autoload :CompactIndex, "bundler/fetcher/compact_index" - autoload :Downloader, "bundler/fetcher/downloader" - autoload :Dependency, "bundler/fetcher/dependency" - autoload :Index, "bundler/fetcher/index" - - # This error is raised when it looks like the network is down - class NetworkDownError < HTTPError; end - # This error is raised if the API returns a 413 (only printed in verbose) - class FallbackError < HTTPError; end - # This is the error raised if OpenSSL fails the cert verification - class CertificateFailureError < HTTPError - def initialize(remote_uri) - remote_uri = filter_uri(remote_uri) - super "Could not verify the SSL certificate for #{remote_uri}.\nThere" \ - " is a chance you are experiencing a man-in-the-middle attack, but" \ - " most likely your system doesn't have the CA certificates needed" \ - " for verification. For information about OpenSSL certificates, see" \ - " http://bit.ly/ruby-ssl. To connect without using SSL, edit your Gemfile" \ - " sources and change 'https' to 'http'." - end - end - # This is the error raised when a source is HTTPS and OpenSSL didn't load - class SSLError < HTTPError - def initialize(msg = nil) - super msg || "Could not load OpenSSL.\n" \ - "You must recompile Ruby with OpenSSL support or change the sources in your " \ - "Gemfile from 'https' to 'http'. Instructions for compiling with OpenSSL " \ - "using RVM are available at rvm.io/packages/openssl." - end - end - # This error is raised if HTTP authentication is required, but not provided. - class AuthenticationRequiredError < HTTPError - def initialize(remote_uri) - remote_uri = filter_uri(remote_uri) - super "Authentication is required for #{remote_uri}.\n" \ - "Please supply credentials for this source. You can do this by running:\n" \ - " bundle config #{remote_uri} username:password" - end - end - # This error is raised if HTTP authentication is provided, but incorrect. - class BadAuthenticationError < HTTPError - def initialize(remote_uri) - remote_uri = filter_uri(remote_uri) - super "Bad username or password for #{remote_uri}.\n" \ - "Please double-check your credentials and correct them." - end - end - - # Exceptions classes that should bypass retry attempts. If your password didn't work the - # first time, it's not going to the third time. - NET_ERRORS = [:HTTPBadGateway, :HTTPBadRequest, :HTTPFailedDependency, - :HTTPForbidden, :HTTPInsufficientStorage, :HTTPMethodNotAllowed, - :HTTPMovedPermanently, :HTTPNoContent, :HTTPNotFound, - :HTTPNotImplemented, :HTTPPreconditionFailed, :HTTPRequestEntityTooLarge, - :HTTPRequestURITooLong, :HTTPUnauthorized, :HTTPUnprocessableEntity, - :HTTPUnsupportedMediaType, :HTTPVersionNotSupported].freeze - FAIL_ERRORS = begin - fail_errors = [AuthenticationRequiredError, BadAuthenticationError, FallbackError] - fail_errors << Gem::Requirement::BadRequirementError if defined?(Gem::Requirement::BadRequirementError) - fail_errors.concat(NET_ERRORS.map {|e| SharedHelpers.const_get_safely(e, Net) }.compact) - end.freeze - - class << self - attr_accessor :disable_endpoint, :api_timeout, :redirect_limit, :max_retries - end - - self.redirect_limit = Bundler.settings[:redirect] # How many redirects to allow in one request - self.api_timeout = Bundler.settings[:timeout] # How long to wait for each API call - self.max_retries = Bundler.settings[:retry] # How many retries for the API call - - def initialize(remote) - @remote = remote - - Socket.do_not_reverse_lookup = true - connection # create persistent connection - end - - def uri - @remote.anonymized_uri - end - - # fetch a gem specification - def fetch_spec(spec) - spec -= [nil, "ruby", ""] - spec_file_name = "#{spec.join "-"}.gemspec" - - uri = URI.parse("#{remote_uri}#{Gem::MARSHAL_SPEC_DIR}#{spec_file_name}.rz") - if uri.scheme == "file" - Bundler.load_marshal Gem.inflate(Gem.read_binary(uri.path)) - elsif cached_spec_path = gemspec_cached_path(spec_file_name) - Bundler.load_gemspec(cached_spec_path) - else - Bundler.load_marshal Gem.inflate(downloader.fetch(uri).body) - end - rescue MarshalError - raise HTTPError, "Gemspec #{spec} contained invalid data.\n" \ - "Your network or your gem server is probably having issues right now." - end - - # return the specs in the bundler format as an index with retries - def specs_with_retry(gem_names, source) - Bundler::Retry.new("fetcher", FAIL_ERRORS).attempts do - specs(gem_names, source) - end - end - - # return the specs in the bundler format as an index - def specs(gem_names, source) - old = Bundler.rubygems.sources - index = Bundler::Index.new - - if Bundler::Fetcher.disable_endpoint - @use_api = false - specs = fetchers.last.specs(gem_names) - else - specs = [] - fetchers.shift until fetchers.first.available? || fetchers.empty? - fetchers.dup.each do |f| - break unless f.api_fetcher? && !gem_names || !specs = f.specs(gem_names) - fetchers.delete(f) - end - @use_api = false if fetchers.none?(&:api_fetcher?) - end - - specs.each do |name, version, platform, dependencies, metadata| - next if name == "bundler" - spec = if dependencies - EndpointSpecification.new(name, version, platform, dependencies, metadata) - else - RemoteSpecification.new(name, version, platform, self) - end - spec.source = source - spec.remote = @remote - index << spec - end - - index - rescue CertificateFailureError - Bundler.ui.info "" if gem_names && use_api # newline after dots - raise - ensure - Bundler.rubygems.sources = old - end - - def use_api - return @use_api if defined?(@use_api) - - fetchers.shift until fetchers.first.available? - - @use_api = if remote_uri.scheme == "file" || Bundler::Fetcher.disable_endpoint - false - else - fetchers.first.api_fetcher? - end - end - - def user_agent - @user_agent ||= begin - ruby = Bundler::RubyVersion.system - - agent = String.new("bundler/#{Bundler::VERSION}") - agent << " rubygems/#{Gem::VERSION}" - agent << " ruby/#{ruby.versions_string(ruby.versions)}" - agent << " (#{ruby.host})" - agent << " command/#{ARGV.first}" - - if ruby.engine != "ruby" - # engine_version raises on unknown engines - engine_version = begin - ruby.engine_versions - rescue - "???" - end - agent << " #{ruby.engine}/#{ruby.versions_string(engine_version)}" - end - - agent << " options/#{Bundler.settings.all.join(",")}" - - agent << " ci/#{cis.join(",")}" if cis.any? - - # add a random ID so we can consolidate runs server-side - agent << " " << SecureRandom.hex(8) - - # add any user agent strings set in the config - extra_ua = Bundler.settings[:user_agent] - agent << " " << extra_ua if extra_ua - - agent - end - end - - def fetchers - @fetchers ||= FETCHERS.map {|f| f.new(downloader, @remote, uri) } - end - - def http_proxy - return unless uri = connection.proxy_uri - uri.to_s - end - - def inspect - "#<#{self.class}:0x#{object_id} uri=#{uri}>" - end - - private - - FETCHERS = [CompactIndex, Dependency, Index].freeze - - def cis - env_cis = { - "TRAVIS" => "travis", - "CIRCLECI" => "circle", - "SEMAPHORE" => "semaphore", - "JENKINS_URL" => "jenkins", - "BUILDBOX" => "buildbox", - "GO_SERVER_URL" => "go", - "SNAP_CI" => "snap", - "CI_NAME" => ENV["CI_NAME"], - "CI" => "ci" - } - env_cis.find_all {|env, _| ENV[env] }.map {|_, ci| ci } - end - - def connection - @connection ||= begin - needs_ssl = remote_uri.scheme == "https" || - Bundler.settings[:ssl_verify_mode] || - Bundler.settings[:ssl_client_cert] - raise SSLError if needs_ssl && !defined?(OpenSSL::SSL) - - con = PersistentHTTP.new "bundler", :ENV - if gem_proxy = Bundler.rubygems.configuration[:http_proxy] - con.proxy = URI.parse(gem_proxy) if gem_proxy != :no_proxy - end - - if remote_uri.scheme == "https" - con.verify_mode = (Bundler.settings[:ssl_verify_mode] || - OpenSSL::SSL::VERIFY_PEER) - con.cert_store = bundler_cert_store - end - - ssl_client_cert = Bundler.settings[:ssl_client_cert] || - (Bundler.rubygems.configuration.ssl_client_cert if - Bundler.rubygems.configuration.respond_to?(:ssl_client_cert)) - if ssl_client_cert - pem = File.read(ssl_client_cert) - con.cert = OpenSSL::X509::Certificate.new(pem) - con.key = OpenSSL::PKey::RSA.new(pem) - end - - con.read_timeout = Fetcher.api_timeout - con.open_timeout = Fetcher.api_timeout - con.override_headers["User-Agent"] = user_agent - con.override_headers["X-Gemfile-Source"] = @remote.original_uri.to_s if @remote.original_uri - con - end - end - - # cached gem specification path, if one exists - def gemspec_cached_path(spec_file_name) - paths = Bundler.rubygems.spec_cache_dirs.map {|dir| File.join(dir, spec_file_name) } - paths = paths.select {|path| File.file? path } - paths.first - end - - HTTP_ERRORS = [ - Timeout::Error, EOFError, SocketError, Errno::ENETDOWN, Errno::ENETUNREACH, - Errno::EINVAL, Errno::ECONNRESET, Errno::ETIMEDOUT, Errno::EAGAIN, - Net::HTTPBadResponse, Net::HTTPHeaderSyntaxError, Net::ProtocolError, - PersistentHTTP::Error, Zlib::BufError, Errno::EHOSTUNREACH - ].freeze - - def bundler_cert_store - store = OpenSSL::X509::Store.new - ssl_ca_cert = Bundler.settings[:ssl_ca_cert] || - (Bundler.rubygems.configuration.ssl_ca_cert if - Bundler.rubygems.configuration.respond_to?(:ssl_ca_cert)) - if ssl_ca_cert - if File.directory? ssl_ca_cert - store.add_path ssl_ca_cert - else - store.add_file ssl_ca_cert - end - else - store.set_default_paths - certs = File.expand_path("../ssl_certs/*/*.pem", __FILE__) - Dir.glob(certs).each {|c| store.add_file c } - end - store - end - - private - - def remote_uri - @remote.uri - end - - def downloader - @downloader ||= Downloader.new(connection, self.class.redirect_limit) - end - end -end diff --git a/lib/bundler/fetcher/base.rb b/lib/bundler/fetcher/base.rb deleted file mode 100644 index 27987f670a..0000000000 --- a/lib/bundler/fetcher/base.rb +++ /dev/null @@ -1,52 +0,0 @@ -# frozen_string_literal: true - -module Bundler - class Fetcher - class Base - attr_reader :downloader - attr_reader :display_uri - attr_reader :remote - - def initialize(downloader, remote, display_uri) - raise "Abstract class" if self.class == Base - @downloader = downloader - @remote = remote - @display_uri = display_uri - end - - def remote_uri - @remote.uri - end - - def fetch_uri - @fetch_uri ||= begin - if remote_uri.host == "rubygems.org" - uri = remote_uri.dup - uri.host = "index.rubygems.org" - uri - else - remote_uri - end - end - end - - def available? - true - end - - def api_fetcher? - false - end - - private - - def log_specs(debug_msg) - if Bundler.ui.debug? - Bundler.ui.debug debug_msg - else - Bundler.ui.info ".", false - end - end - end - end -end diff --git a/lib/bundler/fetcher/compact_index.rb b/lib/bundler/fetcher/compact_index.rb deleted file mode 100644 index cfc74d642c..0000000000 --- a/lib/bundler/fetcher/compact_index.rb +++ /dev/null @@ -1,126 +0,0 @@ -# frozen_string_literal: true - -require "bundler/fetcher/base" -require "bundler/worker" - -module Bundler - autoload :CompactIndexClient, "bundler/compact_index_client" - - class Fetcher - class CompactIndex < Base - def self.compact_index_request(method_name) - method = instance_method(method_name) - undef_method(method_name) - define_method(method_name) do |*args, &blk| - begin - method.bind(self).call(*args, &blk) - rescue NetworkDownError, CompactIndexClient::Updater::MisMatchedChecksumError => e - raise HTTPError, e.message - rescue AuthenticationRequiredError - # Fail since we got a 401 from the server. - raise - rescue HTTPError => e - Bundler.ui.trace(e) - nil - end - end - end - - def specs(gem_names) - specs_for_names(gem_names) - end - compact_index_request :specs - - def specs_for_names(gem_names) - gem_info = [] - complete_gems = [] - remaining_gems = gem_names.dup - - until remaining_gems.empty? - log_specs "Looking up gems #{remaining_gems.inspect}" - - deps = compact_index_client.dependencies(remaining_gems) - next_gems = deps.map {|d| d[3].map(&:first).flatten(1) }.flatten(1).uniq - deps.each {|dep| gem_info << dep } - complete_gems.concat(deps.map(&:first)).uniq! - remaining_gems = next_gems - complete_gems - end - @bundle_worker.stop if @bundle_worker - @bundle_worker = nil # reset it. Not sure if necessary - - gem_info - end - - def fetch_spec(spec) - spec -= [nil, "ruby", ""] - contents = compact_index_client.spec(*spec) - return nil if contents.nil? - contents.unshift(spec.first) - contents[3].map! {|d| Gem::Dependency.new(*d) } - EndpointSpecification.new(*contents) - end - compact_index_request :fetch_spec - - def available? - return nil unless SharedHelpers.md5_available? - user_home = Bundler.user_home - return nil unless user_home.directory? && user_home.writable? - # Read info file checksums out of /versions, so we can know if gems are up to date - fetch_uri.scheme != "file" && compact_index_client.update_and_parse_checksums! - rescue CompactIndexClient::Updater::MisMatchedChecksumError => e - Bundler.ui.debug(e.message) - nil - end - compact_index_request :available? - - def api_fetcher? - true - end - - private - - def compact_index_client - @compact_index_client ||= begin - SharedHelpers.filesystem_access(cache_path) do - CompactIndexClient.new(cache_path, client_fetcher) - end.tap do |client| - client.in_parallel = lambda do |inputs, &blk| - func = lambda {|object, _index| blk.call(object) } - worker = bundle_worker(func) - inputs.each {|input| worker.enq(input) } - inputs.map { worker.deq } - end - end - end - end - - def bundle_worker(func = nil) - @bundle_worker ||= begin - worker_name = "Compact Index (#{display_uri.host})" - Bundler::Worker.new(Bundler.current_ruby.rbx? ? 1 : 25, worker_name, func) - end - @bundle_worker.tap do |worker| - worker.instance_variable_set(:@func, func) if func - end - end - - def cache_path - Bundler.user_cache.join("compact_index", remote.cache_slug) - end - - def client_fetcher - ClientFetcher.new(self, Bundler.ui) - end - - ClientFetcher = Struct.new(:fetcher, :ui) do - def call(path, headers) - fetcher.downloader.fetch(fetcher.fetch_uri + path, headers) - rescue NetworkDownError => e - raise unless Bundler.feature_flag.allow_offline_install? && headers["If-None-Match"] - ui.warn "Using the cached data for the new index because of a network error: #{e}" - Net::HTTPNotModified.new(nil, nil, nil) - end - end - end - end -end diff --git a/lib/bundler/fetcher/dependency.rb b/lib/bundler/fetcher/dependency.rb deleted file mode 100644 index 1430d1ebeb..0000000000 --- a/lib/bundler/fetcher/dependency.rb +++ /dev/null @@ -1,82 +0,0 @@ -# frozen_string_literal: true - -require "bundler/fetcher/base" -require "cgi" - -module Bundler - class Fetcher - class Dependency < Base - def available? - @available ||= fetch_uri.scheme != "file" && downloader.fetch(dependency_api_uri) - rescue NetworkDownError => e - raise HTTPError, e.message - rescue AuthenticationRequiredError - # Fail since we got a 401 from the server. - raise - rescue HTTPError - false - end - - def api_fetcher? - true - end - - def specs(gem_names, full_dependency_list = [], last_spec_list = []) - query_list = gem_names.uniq - full_dependency_list - - log_specs "Query List: #{query_list.inspect}" - - return last_spec_list if query_list.empty? - - spec_list, deps_list = Bundler::Retry.new("dependency api", FAIL_ERRORS).attempts do - dependency_specs(query_list) - end - - returned_gems = spec_list.map(&:first).uniq - specs(deps_list, full_dependency_list + returned_gems, spec_list + last_spec_list) - rescue MarshalError - Bundler.ui.info "" unless Bundler.ui.debug? # new line now that the dots are over - Bundler.ui.debug "could not fetch from the dependency API, trying the full index" - nil - rescue HTTPError, GemspecError - Bundler.ui.info "" unless Bundler.ui.debug? # new line now that the dots are over - Bundler.ui.debug "could not fetch from the dependency API\nit's suggested to retry using the full index via `bundle install --full-index`" - nil - end - - def dependency_specs(gem_names) - Bundler.ui.debug "Query Gemcutter Dependency Endpoint API: #{gem_names.join(",")}" - - gem_list = unmarshalled_dep_gems(gem_names) - get_formatted_specs_and_deps(gem_list) - end - - def unmarshalled_dep_gems(gem_names) - gem_list = [] - gem_names.each_slice(Source::Rubygems::API_REQUEST_SIZE) do |names| - marshalled_deps = downloader.fetch(dependency_api_uri(names)).body - gem_list.concat(Bundler.load_marshal(marshalled_deps)) - end - gem_list - end - - def get_formatted_specs_and_deps(gem_list) - deps_list = [] - spec_list = [] - - gem_list.each do |s| - deps_list.concat(s[:dependencies].map(&:first)) - deps = s[:dependencies].map {|n, d| [n, d.split(", ")] } - spec_list.push([s[:name], s[:number], s[:platform], deps]) - end - [spec_list, deps_list] - end - - def dependency_api_uri(gem_names = []) - uri = fetch_uri + "api/v1/dependencies" - uri.query = "gems=#{CGI.escape(gem_names.sort.join(","))}" if gem_names.any? - uri - end - end - end -end diff --git a/lib/bundler/fetcher/downloader.rb b/lib/bundler/fetcher/downloader.rb deleted file mode 100644 index cbc5e220bd..0000000000 --- a/lib/bundler/fetcher/downloader.rb +++ /dev/null @@ -1,79 +0,0 @@ -# frozen_string_literal: true - -module Bundler - class Fetcher - class Downloader - attr_reader :connection - attr_reader :redirect_limit - - def initialize(connection, redirect_limit) - @connection = connection - @redirect_limit = redirect_limit - end - - def fetch(uri, options = {}, counter = 0) - raise HTTPError, "Too many redirects" if counter >= redirect_limit - - response = request(uri, options) - Bundler.ui.debug("HTTP #{response.code} #{response.message} #{uri}") - - case response - when Net::HTTPSuccess, Net::HTTPNotModified - response - when Net::HTTPRedirection - new_uri = URI.parse(response["location"]) - if new_uri.host == uri.host - new_uri.user = uri.user - new_uri.password = uri.password - end - fetch(new_uri, options, counter + 1) - when Net::HTTPRequestEntityTooLarge - raise FallbackError, response.body - when Net::HTTPUnauthorized - raise AuthenticationRequiredError, uri.host - when Net::HTTPNotFound - raise FallbackError, "Net::HTTPNotFound" - else - raise HTTPError, "#{response.class}#{": #{response.body}" unless response.body.empty?}" - end - end - - def request(uri, options) - validate_uri_scheme!(uri) - - Bundler.ui.debug "HTTP GET #{uri}" - req = Net::HTTP::Get.new uri.request_uri, options - if uri.user - user = CGI.unescape(uri.user) - password = uri.password ? CGI.unescape(uri.password) : nil - req.basic_auth(user, password) - end - connection.request(uri, req) - rescue NoMethodError => e - raise unless ["undefined method", "use_ssl="].all? {|snippet| e.message.include? snippet } - raise LoadError.new("cannot load such file -- openssl") - rescue OpenSSL::SSL::SSLError - raise CertificateFailureError.new(uri) - rescue *HTTP_ERRORS => e - Bundler.ui.trace e - case e.message - when /host down:/, /getaddrinfo: nodename nor servname provided/ - raise NetworkDownError, "Could not reach host #{uri.host}. Check your network " \ - "connection and try again." - else - raise HTTPError, "Network error while fetching #{URICredentialsFilter.credential_filtered_uri(uri)}" \ - " (#{e})" - end - end - - private - - def validate_uri_scheme!(uri) - return if uri.scheme =~ /\Ahttps?\z/ - raise InvalidOption, - "The request uri `#{uri}` has an invalid scheme (`#{uri.scheme}`). " \ - "Did you mean `http` or `https`?" - end - end - end -end diff --git a/lib/bundler/fetcher/index.rb b/lib/bundler/fetcher/index.rb deleted file mode 100644 index 9529944391..0000000000 --- a/lib/bundler/fetcher/index.rb +++ /dev/null @@ -1,52 +0,0 @@ -# frozen_string_literal: true - -require "bundler/fetcher/base" -require "rubygems/remote_fetcher" - -module Bundler - class Fetcher - class Index < Base - def specs(_gem_names) - Bundler.rubygems.fetch_all_remote_specs(remote) - rescue Gem::RemoteFetcher::FetchError, OpenSSL::SSL::SSLError, Net::HTTPFatalError => e - case e.message - when /certificate verify failed/ - raise CertificateFailureError.new(display_uri) - when /401/ - raise AuthenticationRequiredError, remote_uri - when /403/ - raise BadAuthenticationError, remote_uri if remote_uri.userinfo - raise AuthenticationRequiredError, remote_uri - else - Bundler.ui.trace e - raise HTTPError, "Could not fetch specs from #{display_uri}" - end - end - - def fetch_spec(spec) - spec -= [nil, "ruby", ""] - spec_file_name = "#{spec.join "-"}.gemspec" - - uri = URI.parse("#{remote_uri}#{Gem::MARSHAL_SPEC_DIR}#{spec_file_name}.rz") - if uri.scheme == "file" - Bundler.load_marshal Gem.inflate(Gem.read_binary(uri.path)) - elsif cached_spec_path = gemspec_cached_path(spec_file_name) - Bundler.load_gemspec(cached_spec_path) - else - Bundler.load_marshal Gem.inflate(downloader.fetch(uri).body) - end - rescue MarshalError - raise HTTPError, "Gemspec #{spec} contained invalid data.\n" \ - "Your network or your gem server is probably having issues right now." - end - - private - - # cached gem specification path, if one exists - def gemspec_cached_path(spec_file_name) - paths = Bundler.rubygems.spec_cache_dirs.map {|dir| File.join(dir, spec_file_name) } - paths.find {|path| File.file? path } - end - end - end -end diff --git a/lib/bundler/friendly_errors.rb b/lib/bundler/friendly_errors.rb deleted file mode 100644 index f624185773..0000000000 --- a/lib/bundler/friendly_errors.rb +++ /dev/null @@ -1,129 +0,0 @@ -# encoding: utf-8 -# frozen_string_literal: true - -require "cgi" -require "bundler/vendored_thor" - -module Bundler - module FriendlyErrors - module_function - - def log_error(error) - case error - when YamlSyntaxError - Bundler.ui.error error.message - Bundler.ui.trace error.orig_exception - when Dsl::DSLError, GemspecError - Bundler.ui.error error.message - when GemRequireError - Bundler.ui.error error.message - Bundler.ui.trace error.orig_exception, nil, true - when BundlerError - Bundler.ui.error error.message, :wrap => true - Bundler.ui.trace error - when Thor::Error - Bundler.ui.error error.message - when LoadError - raise error unless error.message =~ /cannot load such file -- openssl|openssl.so|libcrypto.so/ - Bundler.ui.error "\nCould not load OpenSSL." - Bundler.ui.warn <<-WARN, :wrap => true - You must recompile Ruby with OpenSSL support or change the sources in your \ - Gemfile from 'https' to 'http'. Instructions for compiling with OpenSSL \ - using RVM are available at http://rvm.io/packages/openssl. - WARN - Bundler.ui.trace error - when Interrupt - Bundler.ui.error "\nQuitting..." - Bundler.ui.trace error - when Gem::InvalidSpecificationException - Bundler.ui.error error.message, :wrap => true - when SystemExit - when *[defined?(Java::JavaLang::OutOfMemoryError) && Java::JavaLang::OutOfMemoryError].compact - Bundler.ui.error "\nYour JVM has run out of memory, and Bundler cannot continue. " \ - "You can decrease the amount of memory Bundler needs by removing gems from your Gemfile, " \ - "especially large gems. (Gems can be as large as hundreds of megabytes, and Bundler has to read those files!). " \ - "Alternatively, you can increase the amount of memory the JVM is able to use by running Bundler with jruby -J-Xmx1024m -S bundle (JRuby defaults to 500MB)." - else request_issue_report_for(error) - end - end - - def exit_status(error) - case error - when BundlerError then error.status_code - when Thor::Error then 15 - when SystemExit then error.status - else 1 - end - end - - def request_issue_report_for(e) - Bundler.ui.info <<-EOS.gsub(/^ {8}/, "") - --- ERROR REPORT TEMPLATE ------------------------------------------------------- - # Error Report - - ## Questions - - Please fill out answers to these questions, it'll help us figure out - why things are going wrong. - - - **What did you do?** - - I ran the command `#{$PROGRAM_NAME} #{ARGV.join(" ")}` - - - **What did you expect to happen?** - - I expected Bundler to... - - - **What happened instead?** - - Instead, what happened was... - - - **Have you tried any solutions posted on similar issues in our issue tracker, stack overflow, or google?** - - I tried... - - - **Have you read our issues document, https://github.com/bundler/bundler/blob/master/doc/contributing/ISSUES.md?** - - ... - - ## Backtrace - - ``` - #{e.class}: #{e.message} - #{e.backtrace && e.backtrace.join("\n ").chomp} - ``` - - #{Bundler::Env.report} - --- TEMPLATE END ---------------------------------------------------------------- - - EOS - - Bundler.ui.error "Unfortunately, an unexpected error occurred, and Bundler cannot continue." - - Bundler.ui.warn <<-EOS.gsub(/^ {8}/, "") - - First, try this link to see if there are any existing issue reports for this error: - #{issues_url(e)} - - If there aren't any reports for this error yet, please create copy and paste the report template above into a new issue. Don't forget to anonymize any private data! The new issue form is located at: - https://github.com/bundler/bundler/issues/new - EOS - end - - def issues_url(exception) - message = exception.message.lines.first.tr(":", " ").chomp - message = message.split("-").first if exception.is_a?(Errno) - "https://github.com/bundler/bundler/search?q=" \ - "#{CGI.escape(message)}&type=Issues" - end - end - - def self.with_friendly_errors - yield - rescue SignalException - raise - rescue Exception => e - FriendlyErrors.log_error(e) - exit FriendlyErrors.exit_status(e) - end -end diff --git a/lib/bundler/gem_helper.rb b/lib/bundler/gem_helper.rb deleted file mode 100644 index 1d7fc508d5..0000000000 --- a/lib/bundler/gem_helper.rb +++ /dev/null @@ -1,202 +0,0 @@ -# frozen_string_literal: true - -require "bundler/vendored_thor" unless defined?(Thor) -require "bundler" - -module Bundler - class GemHelper - include Rake::DSL if defined? Rake::DSL - - class << self - # set when install'd. - attr_accessor :instance - - def install_tasks(opts = {}) - new(opts[:dir], opts[:name]).install - end - - def gemspec(&block) - gemspec = instance.gemspec - block.call(gemspec) if block - gemspec - end - end - - attr_reader :spec_path, :base, :gemspec - - def initialize(base = nil, name = nil) - Bundler.ui = UI::Shell.new - @base = (base ||= SharedHelpers.pwd) - gemspecs = name ? [File.join(base, "#{name}.gemspec")] : Dir[File.join(base, "{,*}.gemspec")] - raise "Unable to determine name from existing gemspec. Use :name => 'gemname' in #install_tasks to manually set it." unless gemspecs.size == 1 - @spec_path = gemspecs.first - @gemspec = Bundler.load_gemspec(@spec_path) - end - - def install - built_gem_path = nil - - desc "Build #{name}-#{version}.gem into the pkg directory." - task "build" do - built_gem_path = build_gem - end - - desc "Build and install #{name}-#{version}.gem into system gems." - task "install" => "build" do - install_gem(built_gem_path) - end - - desc "Build and install #{name}-#{version}.gem into system gems without network access." - task "install:local" => "build" do - install_gem(built_gem_path, :local) - end - - desc "Create tag #{version_tag} and build and push #{name}-#{version}.gem to #{gem_push_host}\n" \ - "To prevent publishing in RubyGems use `gem_push=no rake release`" - task "release", [:remote] => ["build", "release:guard_clean", - "release:source_control_push", "release:rubygem_push"] do - end - - task "release:guard_clean" do - guard_clean - end - - task "release:source_control_push", [:remote] do |_, args| - tag_version { git_push(args[:remote]) } unless already_tagged? - end - - task "release:rubygem_push" do - rubygem_push(built_gem_path) if gem_push? - end - - GemHelper.instance = self - end - - def build_gem - file_name = nil - sh("gem build -V '#{spec_path}'") do - file_name = File.basename(built_gem_path) - SharedHelpers.filesystem_access(File.join(base, "pkg")) {|p| FileUtils.mkdir_p(p) } - FileUtils.mv(built_gem_path, "pkg") - Bundler.ui.confirm "#{name} #{version} built to pkg/#{file_name}." - end - File.join(base, "pkg", file_name) - end - - def install_gem(built_gem_path = nil, local = false) - built_gem_path ||= build_gem - out, _ = sh_with_code("gem install '#{built_gem_path}'#{" --local" if local}") - raise "Couldn't install gem, run `gem install #{built_gem_path}' for more detailed output" unless out[/Successfully installed/] - Bundler.ui.confirm "#{name} (#{version}) installed." - end - - protected - - def rubygem_push(path) - gem_command = "gem push '#{path}'" - gem_command += " --key #{gem_key}" if gem_key - gem_command += " --host #{allowed_push_host}" if allowed_push_host - unless allowed_push_host || Bundler.user_home.join(".gem/credentials").file? - raise "Your rubygems.org credentials aren't set. Run `gem push` to set them." - end - sh(gem_command) - Bundler.ui.confirm "Pushed #{name} #{version} to #{gem_push_host}" - end - - def built_gem_path - Dir[File.join(base, "#{name}-*.gem")].sort_by {|f| File.mtime(f) }.last - end - - def git_push(remote = "") - perform_git_push remote - perform_git_push "#{remote} --tags" - Bundler.ui.confirm "Pushed git commits and tags." - end - - def allowed_push_host - @gemspec.metadata["allowed_push_host"] if @gemspec.respond_to?(:metadata) - end - - def gem_push_host - env_rubygems_host = ENV["RUBYGEMS_HOST"] - env_rubygems_host = nil if - env_rubygems_host && env_rubygems_host.empty? - - allowed_push_host || env_rubygems_host || "rubygems.org" - end - - def perform_git_push(options = "") - cmd = "git push #{options}" - out, code = sh_with_code(cmd) - raise "Couldn't git push. `#{cmd}' failed with the following output:\n\n#{out}\n" unless code == 0 - end - - def already_tagged? - return false unless sh("git tag").split(/\n/).include?(version_tag) - Bundler.ui.confirm "Tag #{version_tag} has already been created." - true - end - - def guard_clean - clean? && committed? || raise("There are files that need to be committed first.") - end - - def clean? - sh_with_code("git diff --exit-code")[1] == 0 - end - - def committed? - sh_with_code("git diff-index --quiet --cached HEAD")[1] == 0 - end - - def tag_version - sh "git tag -m \"Version #{version}\" #{version_tag}" - Bundler.ui.confirm "Tagged #{version_tag}." - yield if block_given? - rescue - Bundler.ui.error "Untagging #{version_tag} due to error." - sh_with_code "git tag -d #{version_tag}" - raise - end - - def version - gemspec.version - end - - def version_tag - "v#{version}" - end - - def name - gemspec.name - end - - def sh(cmd, &block) - out, code = sh_with_code(cmd, &block) - unless code.zero? - raise(out.empty? ? "Running `#{cmd}` failed. Run this command directly for more detailed output." : out) - end - out - end - - def sh_with_code(cmd, &block) - cmd += " 2>&1" - outbuf = String.new - Bundler.ui.debug(cmd) - SharedHelpers.chdir(base) do - outbuf = `#{cmd}` - status = $?.exitstatus - block.call(outbuf) if status.zero? && block - [outbuf, status] - end - end - - def gem_key - Bundler.settings["gem.push_key"].to_s.downcase if Bundler.settings["gem.push_key"] - end - - def gem_push? - !%w[n no nil false off 0].include?(ENV["gem_push"].to_s.downcase) - end - end -end diff --git a/lib/bundler/gem_helpers.rb b/lib/bundler/gem_helpers.rb deleted file mode 100644 index 019ae10c66..0000000000 --- a/lib/bundler/gem_helpers.rb +++ /dev/null @@ -1,101 +0,0 @@ -# frozen_string_literal: true - -module Bundler - module GemHelpers - GENERIC_CACHE = {} # rubocop:disable MutableConstant - GENERICS = [ - [Gem::Platform.new("java"), Gem::Platform.new("java")], - [Gem::Platform.new("mswin32"), Gem::Platform.new("mswin32")], - [Gem::Platform.new("mswin64"), Gem::Platform.new("mswin64")], - [Gem::Platform.new("universal-mingw32"), Gem::Platform.new("universal-mingw32")], - [Gem::Platform.new("x64-mingw32"), Gem::Platform.new("x64-mingw32")], - [Gem::Platform.new("x86_64-mingw32"), Gem::Platform.new("x64-mingw32")], - [Gem::Platform.new("mingw32"), Gem::Platform.new("x86-mingw32")] - ].freeze - - def generic(p) - return p if p == Gem::Platform::RUBY - - GENERIC_CACHE[p] ||= begin - _, found = GENERICS.find do |match, _generic| - p.os == match.os && (!match.cpu || p.cpu == match.cpu) - end - found || Gem::Platform::RUBY - end - end - module_function :generic - - def generic_local_platform - generic(Bundler.local_platform) - end - module_function :generic_local_platform - - def platform_specificity_match(spec_platform, user_platform) - spec_platform = Gem::Platform.new(spec_platform) - return PlatformMatch::EXACT_MATCH if spec_platform == user_platform - return PlatformMatch::WORST_MATCH if spec_platform.nil? || spec_platform == Gem::Platform::RUBY || user_platform == Gem::Platform::RUBY - - PlatformMatch.new( - PlatformMatch.os_match(spec_platform, user_platform), - PlatformMatch.cpu_match(spec_platform, user_platform), - PlatformMatch.platform_version_match(spec_platform, user_platform) - ) - end - module_function :platform_specificity_match - - def select_best_platform_match(specs, platform) - specs.select {|spec| spec.match_platform(platform) }. - min_by {|spec| platform_specificity_match(spec.platform, platform) } - end - module_function :select_best_platform_match - - PlatformMatch = Struct.new(:os_match, :cpu_match, :platform_version_match) - class PlatformMatch - def <=>(other) - return nil unless other.is_a?(PlatformMatch) - - m = os_match <=> other.os_match - return m unless m.zero? - - m = cpu_match <=> other.cpu_match - return m unless m.zero? - - m = platform_version_match <=> other.platform_version_match - m - end - - EXACT_MATCH = new(-1, -1, -1).freeze - WORST_MATCH = new(1_000_000, 1_000_000, 1_000_000).freeze - - def self.os_match(spec_platform, user_platform) - if spec_platform.os == user_platform.os - 0 - else - 1 - end - end - - def self.cpu_match(spec_platform, user_platform) - if spec_platform.cpu == user_platform.cpu - 0 - elsif spec_platform.cpu == "arm" && user_platform.cpu.to_s.start_with?("arm") - 0 - elsif spec_platform.cpu.nil? || spec_platform.cpu == "universal" - 1 - else - 2 - end - end - - def self.platform_version_match(spec_platform, user_platform) - if spec_platform.version == user_platform.version - 0 - elsif spec_platform.version.nil? - 1 - else - 2 - end - end - end - end -end diff --git a/lib/bundler/gem_remote_fetcher.rb b/lib/bundler/gem_remote_fetcher.rb deleted file mode 100644 index 9577535d63..0000000000 --- a/lib/bundler/gem_remote_fetcher.rb +++ /dev/null @@ -1,43 +0,0 @@ -# frozen_string_literal: true - -require "rubygems/remote_fetcher" - -module Bundler - # Adds support for setting custom HTTP headers when fetching gems from the - # server. - # - # TODO: Get rid of this when and if gemstash only supports RubyGems versions - # that contain https://github.com/rubygems/rubygems/commit/3db265cc20b2f813. - class GemRemoteFetcher < Gem::RemoteFetcher - attr_accessor :headers - - # Extracted from RubyGems 2.4. - def fetch_http(uri, last_modified = nil, head = false, depth = 0) - fetch_type = head ? Net::HTTP::Head : Net::HTTP::Get - # beginning of change - response = request uri, fetch_type, last_modified do |req| - headers.each {|k, v| req.add_field(k, v) } if headers - end - # end of change - - case response - when Net::HTTPOK, Net::HTTPNotModified then - response.uri = uri if response.respond_to? :uri - head ? response : response.body - when Net::HTTPMovedPermanently, Net::HTTPFound, Net::HTTPSeeOther, - Net::HTTPTemporaryRedirect then - raise FetchError.new("too many redirects", uri) if depth > 10 - - location = URI.parse response["Location"] - - if https?(uri) && !https?(location) - raise FetchError.new("redirecting to non-https resource: #{location}", uri) - end - - fetch_http(location, last_modified, head, depth + 1) - else - raise FetchError.new("bad response #{response.message} #{response.code}", uri) - end - end - end -end diff --git a/lib/bundler/gem_tasks.rb b/lib/bundler/gem_tasks.rb deleted file mode 100644 index f736517bd7..0000000000 --- a/lib/bundler/gem_tasks.rb +++ /dev/null @@ -1,7 +0,0 @@ -# frozen_string_literal: true - -require "rake/clean" -CLOBBER.include "pkg" - -require "bundler/gem_helper" -Bundler::GemHelper.install_tasks diff --git a/lib/bundler/gem_version_promoter.rb b/lib/bundler/gem_version_promoter.rb deleted file mode 100644 index 52b5386045..0000000000 --- a/lib/bundler/gem_version_promoter.rb +++ /dev/null @@ -1,176 +0,0 @@ -# frozen_string_literal: true - -module Bundler - # This class contains all of the logic for determining the next version of a - # Gem to update to based on the requested level (patch, minor, major). - # Primarily designed to work with Resolver which will provide it the list of - # available dependency versions as found in its index, before returning it to - # to the resolution engine to select the best version. - class GemVersionPromoter - attr_reader :level, :locked_specs, :unlock_gems - - # By default, strict is false, meaning every available version of a gem - # is returned from sort_versions. The order gives preference to the - # requested level (:patch, :minor, :major) but in complicated requirement - # cases some gems will by necessity by promoted past the requested level, - # or even reverted to older versions. - # - # If strict is set to true, the results from sort_versions will be - # truncated, eliminating any version outside the current level scope. - # This can lead to unexpected outcomes or even VersionConflict exceptions - # that report a version of a gem not existing for versions that indeed do - # existing in the referenced source. - attr_accessor :strict - - # Given a list of locked_specs and a list of gems to unlock creates a - # GemVersionPromoter instance. - # - # @param locked_specs [SpecSet] All current locked specs. Unlike Definition - # where this list is empty if all gems are being updated, this should - # always be populated for all gems so this class can properly function. - # @param unlock_gems [String] List of gem names being unlocked. If empty, - # all gems will be considered unlocked. - # @return [GemVersionPromoter] - def initialize(locked_specs = SpecSet.new([]), unlock_gems = []) - @level = :major - @strict = false - @locked_specs = locked_specs - @unlock_gems = unlock_gems - @sort_versions = {} - end - - # @param value [Symbol] One of three Symbols: :major, :minor or :patch. - def level=(value) - v = case value - when String, Symbol - value.to_sym - end - - raise ArgumentError, "Unexpected level #{v}. Must be :major, :minor or :patch" unless [:major, :minor, :patch].include?(v) - @level = v - end - - # Given a Dependency and an Array of SpecGroups of available versions for a - # gem, this method will return the Array of SpecGroups sorted (and possibly - # truncated if strict is true) in an order to give preference to the current - # level (:major, :minor or :patch) when resolution is deciding what versions - # best resolve all dependencies in the bundle. - # @param dep [Dependency] The Dependency of the gem. - # @param spec_groups [SpecGroup] An array of SpecGroups for the same gem - # named in the @dep param. - # @return [SpecGroup] A new instance of the SpecGroup Array sorted and - # possibly filtered. - def sort_versions(dep, spec_groups) - before_result = "before sort_versions: #{debug_format_result(dep, spec_groups).inspect}" if ENV["DEBUG_RESOLVER"] - - @sort_versions[dep] ||= begin - gem_name = dep.name - - # An Array per version returned, different entries for different platforms. - # We only need the version here so it's ok to hard code this to the first instance. - locked_spec = locked_specs[gem_name].first - - if strict - filter_dep_specs(spec_groups, locked_spec) - else - sort_dep_specs(spec_groups, locked_spec) - end.tap do |specs| - if ENV["DEBUG_RESOLVER"] - STDERR.puts before_result - STDERR.puts " after sort_versions: #{debug_format_result(dep, specs).inspect}" - end - end - end - end - - # @return [bool] Convenience method for testing value of level variable. - def major? - level == :major - end - - # @return [bool] Convenience method for testing value of level variable. - def minor? - level == :minor - end - - private - - def filter_dep_specs(spec_groups, locked_spec) - res = spec_groups.select do |spec_group| - if locked_spec && !major? - gsv = spec_group.version - lsv = locked_spec.version - - must_match = minor? ? [0] : [0, 1] - - matches = must_match.map {|idx| gsv.segments[idx] == lsv.segments[idx] } - (matches.uniq == [true]) ? (gsv >= lsv) : false - else - true - end - end - - sort_dep_specs(res, locked_spec) - end - - def sort_dep_specs(spec_groups, locked_spec) - return spec_groups unless locked_spec - @gem_name = locked_spec.name - @locked_version = locked_spec.version - - result = spec_groups.sort do |a, b| - @a_ver = a.version - @b_ver = b.version - if major? - @a_ver <=> @b_ver - elsif either_version_older_than_locked - @a_ver <=> @b_ver - elsif segments_do_not_match(:major) - @b_ver <=> @a_ver - elsif !minor? && segments_do_not_match(:minor) - @b_ver <=> @a_ver - else - @a_ver <=> @b_ver - end - end - post_sort(result) - end - - def either_version_older_than_locked - @a_ver < @locked_version || @b_ver < @locked_version - end - - def segments_do_not_match(level) - index = [:major, :minor].index(level) - @a_ver.segments[index] != @b_ver.segments[index] - end - - def unlocking_gem? - unlock_gems.empty? || unlock_gems.include?(@gem_name) - end - - # Specific version moves can't always reliably be done during sorting - # as not all elements are compared against each other. - def post_sort(result) - # default :major behavior in Bundler does not do this - return result if major? - if unlocking_gem? - result - else - move_version_to_end(result, @locked_version) - end - end - - def move_version_to_end(result, version) - move, keep = result.partition {|s| s.version.to_s == version.to_s } - keep.concat(move) - end - - def debug_format_result(dep, spec_groups) - a = [dep.to_s, - spec_groups.map {|sg| [sg.version, sg.dependencies_for_activated_platforms.map {|dp| [dp.name, dp.requirement.to_s] }] }] - last_map = a.last.map {|sg_data| [sg_data.first.version, sg_data.last.map {|aa| aa.join(" ") }] } - [a.first, last_map, level, strict ? :strict : :not_strict] - end - end -end diff --git a/lib/bundler/gemdeps.rb b/lib/bundler/gemdeps.rb deleted file mode 100644 index cd4b25d0e6..0000000000 --- a/lib/bundler/gemdeps.rb +++ /dev/null @@ -1,29 +0,0 @@ -# frozen_string_literal: true - -module Bundler - class Gemdeps - def initialize(runtime) - @runtime = runtime - end - - def requested_specs - @runtime.requested_specs - end - - def specs - @runtime.specs - end - - def dependencies - @runtime.dependencies - end - - def current_dependencies - @runtime.current_dependencies - end - - def requires - @runtime.requires - end - end -end diff --git a/lib/bundler/graph.rb b/lib/bundler/graph.rb deleted file mode 100644 index de6bba0214..0000000000 --- a/lib/bundler/graph.rb +++ /dev/null @@ -1,152 +0,0 @@ -# frozen_string_literal: true - -require "set" -module Bundler - class Graph - GRAPH_NAME = :Gemfile - - def initialize(env, output_file, show_version = false, show_requirements = false, output_format = "png", without = []) - @env = env - @output_file = output_file - @show_version = show_version - @show_requirements = show_requirements - @output_format = output_format - @without_groups = without.map(&:to_sym) - - @groups = [] - @relations = Hash.new {|h, k| h[k] = Set.new } - @node_options = {} - @edge_options = {} - - _populate_relations - end - - attr_reader :groups, :relations, :node_options, :edge_options, :output_file, :output_format - - def viz - GraphVizClient.new(self).run - end - - private - - def _populate_relations - parent_dependencies = _groups.values.to_set.flatten - loop do - break if parent_dependencies.empty? - - tmp = Set.new - parent_dependencies.each do |dependency| - child_dependencies = spec_for_dependency(dependency).runtime_dependencies.to_set - @relations[dependency.name] += child_dependencies.map(&:name).to_set - tmp += child_dependencies - - @node_options[dependency.name] = _make_label(dependency, :node) - child_dependencies.each do |c_dependency| - @edge_options["#{dependency.name}_#{c_dependency.name}"] = _make_label(c_dependency, :edge) - end - end - parent_dependencies = tmp - end - end - - def _groups - relations = Hash.new {|h, k| h[k] = Set.new } - @env.current_dependencies.each do |dependency| - dependency.groups.each do |group| - next if @without_groups.include?(group) - - relations[group.to_s].add(dependency) - @relations[group.to_s].add(dependency.name) - - @node_options[group.to_s] ||= _make_label(group, :node) - @edge_options["#{group}_#{dependency.name}"] = _make_label(dependency, :edge) - end - end - @groups = relations.keys - relations - end - - def _make_label(symbol_or_string_or_dependency, element_type) - case element_type.to_sym - when :node - if symbol_or_string_or_dependency.is_a?(Gem::Dependency) - label = symbol_or_string_or_dependency.name.dup - label << "\n#{spec_for_dependency(symbol_or_string_or_dependency).version}" if @show_version - else - label = symbol_or_string_or_dependency.to_s - end - when :edge - label = nil - if symbol_or_string_or_dependency.respond_to?(:requirements_list) && @show_requirements - tmp = symbol_or_string_or_dependency.requirements_list.join(", ") - label = tmp if tmp != ">= 0" - end - else - raise ArgumentError, "2nd argument is invalid" - end - label.nil? ? {} : { :label => label } - end - - def spec_for_dependency(dependency) - @env.requested_specs.find {|s| s.name == dependency.name } - end - - class GraphVizClient - def initialize(graph_instance) - @graph_name = graph_instance.class::GRAPH_NAME - @groups = graph_instance.groups - @relations = graph_instance.relations - @node_options = graph_instance.node_options - @edge_options = graph_instance.edge_options - @output_file = graph_instance.output_file - @output_format = graph_instance.output_format - end - - def g - @g ||= ::GraphViz.digraph(@graph_name, :concentrate => true, :normalize => true, :nodesep => 0.55) do |g| - g.edge[:weight] = 2 - g.edge[:fontname] = g.node[:fontname] = "Arial, Helvetica, SansSerif" - g.edge[:fontsize] = 12 - end - end - - def run - @groups.each do |group| - g.add_nodes( - group, { - :style => "filled", - :fillcolor => "#B9B9D5", - :shape => "box3d", - :fontsize => 16 - }.merge(@node_options[group]) - ) - end - - @relations.each do |parent, children| - children.each do |child| - if @groups.include?(parent) - g.add_nodes(child, { :style => "filled", :fillcolor => "#B9B9D5" }.merge(@node_options[child])) - g.add_edges(parent, child, { :constraint => false }.merge(@edge_options["#{parent}_#{child}"])) - else - g.add_nodes(child, @node_options[child]) - g.add_edges(parent, child, @edge_options["#{parent}_#{child}"]) - end - end - end - - if @output_format.to_s == "debug" - $stdout.puts g.output :none => String - Bundler.ui.info "debugging bundle viz..." - else - begin - g.output @output_format.to_sym => "#{@output_file}.#{@output_format}" - Bundler.ui.info "#{@output_file}.#{@output_format}" - rescue ArgumentError => e - $stderr.puts "Unsupported output format. See Ruby-Graphviz/lib/graphviz/constants.rb" - raise e - end - end - end - end - end -end diff --git a/lib/bundler/index.rb b/lib/bundler/index.rb deleted file mode 100644 index 9166a92738..0000000000 --- a/lib/bundler/index.rb +++ /dev/null @@ -1,213 +0,0 @@ -# frozen_string_literal: true - -require "set" - -module Bundler - class Index - include Enumerable - - def self.build - i = new - yield i - i - end - - attr_reader :specs, :all_specs, :sources - protected :specs, :all_specs - - RUBY = "ruby".freeze - NULL = "\0".freeze - - def initialize - @sources = [] - @cache = {} - @specs = Hash.new {|h, k| h[k] = {} } - @all_specs = Hash.new {|h, k| h[k] = EMPTY_SEARCH } - end - - def initialize_copy(o) - @sources = o.sources.dup - @cache = {} - @specs = Hash.new {|h, k| h[k] = {} } - @all_specs = Hash.new {|h, k| h[k] = EMPTY_SEARCH } - - o.specs.each do |name, hash| - @specs[name] = hash.dup - end - o.all_specs.each do |name, array| - @all_specs[name] = array.dup - end - end - - def inspect - "#<#{self.class}:0x#{object_id} sources=#{sources.map(&:inspect)} specs.size=#{specs.size}>" - end - - def empty? - each { return false } - true - end - - def search_all(name) - all_matches = local_search(name) + @all_specs[name] - @sources.each do |source| - all_matches.concat(source.search_all(name)) - end - all_matches - end - - # Search this index's specs, and any source indexes that this index knows - # about, returning all of the results. - def search(query, base = nil) - sort_specs(unsorted_search(query, base)) - end - - def unsorted_search(query, base) - results = local_search(query, base) - - seen = results.map(&:full_name).to_set unless @sources.empty? - - @sources.each do |source| - source.unsorted_search(query, base).each do |spec| - results << spec if seen.add?(spec.full_name) - end - end - - results - end - protected :unsorted_search - - def self.sort_specs(specs) - specs.sort_by do |s| - platform_string = s.platform.to_s - [s.version, platform_string == RUBY ? NULL : platform_string] - end - end - - def sort_specs(specs) - self.class.sort_specs(specs) - end - - def local_search(query, base = nil) - case query - when Gem::Specification, RemoteSpecification, LazySpecification, EndpointSpecification then search_by_spec(query) - when String then specs_by_name(query) - when Gem::Dependency then search_by_dependency(query, base) - when DepProxy then search_by_dependency(query.dep, base) - else - raise "You can't search for a #{query.inspect}." - end - end - - alias_method :[], :search - - def <<(spec) - @specs[spec.name][spec.full_name] = spec - spec - end - - def each(&blk) - return enum_for(:each) unless blk - specs.values.each do |spec_sets| - spec_sets.values.each(&blk) - end - sources.each {|s| s.each(&blk) } - self - end - - def spec_names - names = specs.keys + sources.map(&:spec_names) - names.uniq! - names - end - - # returns a list of the dependencies - def unmet_dependency_names - dependency_names.select do |name| - name != "bundler" && search(name).empty? - end - end - - def dependency_names - names = [] - each do |spec| - spec.dependencies.each do |dep| - next if dep.type == :development - names << dep.name - end - end - names.uniq - end - - def use(other, override_dupes = false) - return unless other - other.each do |s| - if (dupes = search_by_spec(s)) && !dupes.empty? - # safe to << since it's a new array when it has contents - @all_specs[s.name] = dupes << s - next unless override_dupes - end - self << s - end - self - end - - def size - @sources.inject(@specs.size) do |size, source| - size += source.size - end - end - - # Whether all the specs in self are in other - # TODO: rename to #include? - def ==(other) - all? do |spec| - other_spec = other[spec].first - other_spec && dependencies_eql?(spec, other_spec) && spec.source == other_spec.source - end - end - - def dependencies_eql?(spec, other_spec) - deps = spec.dependencies.select {|d| d.type != :development } - other_deps = other_spec.dependencies.select {|d| d.type != :development } - Set.new(deps) == Set.new(other_deps) - end - - def add_source(index) - raise ArgumentError, "Source must be an index, not #{index.class}" unless index.is_a?(Index) - @sources << index - @sources.uniq! # need to use uniq! here instead of checking for the item before adding - end - - private - - def specs_by_name(name) - @specs[name].values - end - - def search_by_dependency(dependency, base = nil) - @cache[base || false] ||= {} - @cache[base || false][dependency] ||= begin - specs = specs_by_name(dependency.name) - specs += base if base - found = specs.select do |spec| - next true if spec.source.is_a?(Source::Gemspec) - if base # allow all platforms when searching from a lockfile - dependency.matches_spec?(spec) - else - dependency.matches_spec?(spec) && Gem::Platform.match(spec.platform) - end - end - - found - end - end - - EMPTY_SEARCH = [].freeze - - def search_by_spec(spec) - spec = @specs[spec.name][spec.full_name] - spec ? [spec] : EMPTY_SEARCH - end - end -end diff --git a/lib/bundler/injector.rb b/lib/bundler/injector.rb deleted file mode 100644 index 7fe6a91ddd..0000000000 --- a/lib/bundler/injector.rb +++ /dev/null @@ -1,94 +0,0 @@ -# frozen_string_literal: true - -module Bundler - class Injector - def self.inject(new_deps, options = {}) - injector = new(new_deps, options) - injector.inject(Bundler.default_gemfile, Bundler.default_lockfile) - end - - def initialize(new_deps, options = {}) - @new_deps = new_deps - @options = options - end - - def inject(gemfile_path, lockfile_path) - if Bundler.frozen? - # ensure the lock and Gemfile are synced - Bundler.definition.ensure_equivalent_gemfile_and_lockfile(true) - end - - # temporarily unfreeze - Bundler.settings.temporary(:deployment => false, :frozen => false) do - # evaluate the Gemfile we have now - builder = Dsl.new - builder.eval_gemfile(gemfile_path) - - # don't inject any gems that are already in the Gemfile - @new_deps -= builder.dependencies - - # add new deps to the end of the in-memory Gemfile - # Set conservative versioning to false because we want to let the resolver resolve the version first - builder.eval_gemfile("injected gems", build_gem_lines(false)) if @new_deps.any? - - # resolve to see if the new deps broke anything - @definition = builder.to_definition(lockfile_path, {}) - @definition.resolve_remotely! - - # since nothing broke, we can add those gems to the gemfile - append_to(gemfile_path, build_gem_lines(@options[:conservative_versioning])) if @new_deps.any? - - # since we resolved successfully, write out the lockfile - @definition.lock(Bundler.default_lockfile) - - # invalidate the cached Bundler.definition - Bundler.reset_paths! - - # return an array of the deps that we added - @new_deps - end - end - - private - - def conservative_version(spec) - version = spec.version - return ">= 0" if version.nil? - segments = version.segments - seg_end_index = version >= Gem::Version.new("1.0") ? 1 : 2 - - prerelease_suffix = version.to_s.gsub(version.release.to_s, "") if version.prerelease? - "~> #{segments[0..seg_end_index].join(".")}#{prerelease_suffix}" - end - - def build_gem_lines(conservative_versioning) - @new_deps.map do |d| - name = d.name.dump - - requirement = if conservative_versioning - ", \"#{conservative_version(@definition.specs[d.name][0])}\"" - else - ", #{d.requirement.as_list.map(&:dump).join(", ")}" - end - - if d.groups != Array(:default) - group = d.groups.size == 1 ? ", :group => #{d.groups.inspect}" : ", :groups => #{d.groups.inspect}" - end - - source = ", :source => \"#{d.source}\"" unless d.source.nil? - - %(gem #{name}#{requirement}#{group}#{source}) - end.join("\n") - end - - def append_to(gemfile_path, new_gem_lines) - gemfile_path.open("a") do |f| - f.puts - if @options["timestamp"] || @options["timestamp"].nil? - f.puts "# Added at #{Time.now} by #{`whoami`.chomp}:" - end - f.puts new_gem_lines - end - end - end -end diff --git a/lib/bundler/inline.rb b/lib/bundler/inline.rb deleted file mode 100644 index 9d25f3261a..0000000000 --- a/lib/bundler/inline.rb +++ /dev/null @@ -1,74 +0,0 @@ -# frozen_string_literal: true - -require "bundler/compatibility_guard" - -# Allows for declaring a Gemfile inline in a ruby script, optionally installing -# any gems that aren't already installed on the user's system. -# -# @note Every gem that is specified in this 'Gemfile' will be `require`d, as if -# the user had manually called `Bundler.require`. To avoid a requested gem -# being automatically required, add the `:require => false` option to the -# `gem` dependency declaration. -# -# @param install [Boolean] whether gems that aren't already installed on the -# user's system should be installed. -# Defaults to `false`. -# -# @param gemfile [Proc] a block that is evaluated as a `Gemfile`. -# -# @example Using an inline Gemfile -# -# #!/usr/bin/env ruby -# -# require 'bundler/inline' -# -# gemfile do -# source 'https://rubygems.org' -# gem 'json', require: false -# gem 'nap', require: 'rest' -# gem 'cocoapods', '~> 0.34.1' -# end -# -# puts Pod::VERSION # => "0.34.4" -# -def gemfile(install = false, options = {}, &gemfile) - require "bundler" - - opts = options.dup - ui = opts.delete(:ui) { Bundler::UI::Shell.new } - raise ArgumentError, "Unknown options: #{opts.keys.join(", ")}" unless opts.empty? - - old_root = Bundler.method(:root) - def Bundler.root - Bundler::SharedHelpers.pwd.expand_path - end - Bundler::SharedHelpers.set_env "BUNDLE_GEMFILE", "Gemfile" - - Bundler::Plugin.gemfile_install(&gemfile) if Bundler.feature_flag.plugins? - builder = Bundler::Dsl.new - builder.instance_eval(&gemfile) - - definition = builder.to_definition(nil, true) - def definition.lock(*); end - definition.validate_runtime! - - missing_specs = proc do - definition.missing_specs? - end - - Bundler.ui = ui if install - if install || missing_specs.call - Bundler.settings.temporary(:inline => true) do - installer = Bundler::Installer.install(Bundler.root, definition, :system => true) - installer.post_install_messages.each do |name, message| - Bundler.ui.info "Post-install message from #{name}:\n#{message}" - end - end - end - - runtime = Bundler::Runtime.new(nil, definition) - runtime.setup.require -ensure - bundler_module = class << Bundler; self; end - bundler_module.send(:define_method, :root, old_root) if old_root -end diff --git a/lib/bundler/installer.rb b/lib/bundler/installer.rb deleted file mode 100644 index d1066c9c19..0000000000 --- a/lib/bundler/installer.rb +++ /dev/null @@ -1,287 +0,0 @@ -# frozen_string_literal: true - -require "erb" -require "rubygems/dependency_installer" -require "bundler/worker" -require "bundler/installer/parallel_installer" -require "bundler/installer/standalone" -require "bundler/installer/gem_installer" - -module Bundler - class Installer - class << self - attr_accessor :ambiguous_gems - - Installer.ambiguous_gems = [] - end - - attr_reader :post_install_messages - - # Begins the installation process for Bundler. - # For more information see the #run method on this class. - def self.install(root, definition, options = {}) - installer = new(root, definition) - Plugin.hook("before-install-all", definition.dependencies) - installer.run(options) - installer - end - - def initialize(root, definition) - @root = root - @definition = definition - @post_install_messages = {} - end - - # Runs the install procedures for a specific Gemfile. - # - # Firstly, this method will check to see if `Bundler.bundle_path` exists - # and if not then Bundler will create the directory. This is usually the same - # location as RubyGems which typically is the `~/.gem` directory - # unless other specified. - # - # Secondly, it checks if Bundler has been configured to be "frozen". - # Frozen ensures that the Gemfile and the Gemfile.lock file are matching. - # This stops a situation where a developer may update the Gemfile but may not run - # `bundle install`, which leads to the Gemfile.lock file not being correctly updated. - # If this file is not correctly updated then any other developer running - # `bundle install` will potentially not install the correct gems. - # - # Thirdly, Bundler checks if there are any dependencies specified in the Gemfile. - # If there are no dependencies specified then Bundler returns a warning message stating - # so and this method returns. - # - # Fourthly, Bundler checks if the Gemfile.lock exists, and if so - # then proceeds to set up a definition based on the Gemfile and the Gemfile.lock. - # During this step Bundler will also download information about any new gems - # that are not in the Gemfile.lock and resolve any dependencies if needed. - # - # Fifthly, Bundler resolves the dependencies either through a cache of gems or by remote. - # This then leads into the gems being installed, along with stubs for their executables, - # but only if the --binstubs option has been passed or Bundler.options[:bin] has been set - # earlier. - # - # Sixthly, a new Gemfile.lock is created from the installed gems to ensure that the next time - # that a user runs `bundle install` they will receive any updates from this process. - # - # Finally, if the user has specified the standalone flag, Bundler will generate the needed - # require paths and save them in a `setup.rb` file. See `bundle standalone --help` for more - # information. - def run(options) - create_bundle_path - - ProcessLock.lock do - if Bundler.frozen? - @definition.ensure_equivalent_gemfile_and_lockfile(options[:deployment]) - end - - if @definition.dependencies.empty? - Bundler.ui.warn "The Gemfile specifies no dependencies" - lock - return - end - - if resolve_if_needed(options) - ensure_specs_are_compatible! - warn_on_incompatible_bundler_deps - load_plugins - options.delete(:jobs) - else - options[:jobs] = 1 # to avoid the overhead of Bundler::Worker - end - install(options) - - lock unless Bundler.frozen? - Standalone.new(options[:standalone], @definition).generate if options[:standalone] - end - end - - def generate_bundler_executable_stubs(spec, options = {}) - if options[:binstubs_cmd] && spec.executables.empty? - options = {} - spec.runtime_dependencies.each do |dep| - bins = @definition.specs[dep].first.executables - options[dep.name] = bins unless bins.empty? - end - if options.any? - Bundler.ui.warn "#{spec.name} has no executables, but you may want " \ - "one from a gem it depends on." - options.each {|name, bins| Bundler.ui.warn " #{name} has: #{bins.join(", ")}" } - else - Bundler.ui.warn "There are no executables for the gem #{spec.name}." - end - return - end - - # double-assignment to avoid warnings about variables that will be used by ERB - bin_path = Bundler.bin_path - bin_path = bin_path - relative_gemfile_path = Bundler.default_gemfile.relative_path_from(bin_path) - relative_gemfile_path = relative_gemfile_path - ruby_command = Thor::Util.ruby_command - ruby_command = ruby_command - template_path = File.expand_path("../templates/Executable", __FILE__) - if spec.name == "bundler" - template_path += ".bundler" - spec.executables = %(bundle) - end - template = File.read(template_path) - - exists = [] - spec.executables.each do |executable| - binstub_path = "#{bin_path}/#{executable}" - if File.exist?(binstub_path) && !options[:force] - exists << executable - next - end - - File.open(binstub_path, "w", 0o777 & ~File.umask) do |f| - f.puts ERB.new(template, nil, "-").result(binding) - end - end - - if options[:binstubs_cmd] && exists.any? - case exists.size - when 1 - Bundler.ui.warn "Skipped #{exists[0]} since it already exists." - when 2 - Bundler.ui.warn "Skipped #{exists.join(" and ")} since they already exist." - else - items = exists[0...-1].empty? ? nil : exists[0...-1].join(", ") - skipped = [items, exists[-1]].compact.join(" and ") - Bundler.ui.warn "Skipped #{skipped} since they already exist." - end - Bundler.ui.warn "If you want to overwrite skipped stubs, use --force." - end - end - - def generate_standalone_bundler_executable_stubs(spec) - # double-assignment to avoid warnings about variables that will be used by ERB - bin_path = Bundler.bin_path - unless path = Bundler.settings[:path] - raise "Can't standalone without an explicit path set" - end - standalone_path = Bundler.root.join(path).relative_path_from(bin_path) - standalone_path = standalone_path - template = File.read(File.expand_path("../templates/Executable.standalone", __FILE__)) - ruby_command = Thor::Util.ruby_command - ruby_command = ruby_command - - spec.executables.each do |executable| - next if executable == "bundle" - executable_path = Pathname(spec.full_gem_path).join(spec.bindir, executable).relative_path_from(bin_path) - executable_path = executable_path - File.open "#{bin_path}/#{executable}", "w", 0o755 do |f| - f.puts ERB.new(template, nil, "-").result(binding) - end - end - end - - private - - # the order that the resolver provides is significant, since - # dependencies might affect the installation of a gem. - # that said, it's a rare situation (other than rake), and parallel - # installation is SO MUCH FASTER. so we let people opt in. - def install(options) - force = options["force"] - jobs = options.delete(:jobs) do - if can_install_in_parallel? - [Bundler.settings[:jobs].to_i - 1, 1].max - else - 1 - end - end - install_in_parallel jobs, options[:standalone], force - end - - def load_plugins - Bundler.rubygems.load_plugins - - requested_path_gems = @definition.requested_specs.select {|s| s.source.is_a?(Source::Path) } - path_plugin_files = requested_path_gems.map do |spec| - begin - Bundler.rubygems.spec_matches_for_glob(spec, "rubygems_plugin#{Bundler.rubygems.suffix_pattern}") - rescue TypeError - error_message = "#{spec.name} #{spec.version} has an invalid gemspec" - raise Gem::InvalidSpecificationException, error_message - end - end.flatten - Bundler.rubygems.load_plugin_files(path_plugin_files) - end - - def ensure_specs_are_compatible! - system_ruby = Bundler::RubyVersion.system - rubygems_version = Gem::Version.create(Gem::VERSION) - @definition.specs.each do |spec| - if required_ruby_version = spec.required_ruby_version - unless required_ruby_version.satisfied_by?(system_ruby.gem_version) - raise InstallError, "#{spec.full_name} requires ruby version #{required_ruby_version}, " \ - "which is incompatible with the current version, #{system_ruby}" - end - end - next unless required_rubygems_version = spec.required_rubygems_version - unless required_rubygems_version.satisfied_by?(rubygems_version) - raise InstallError, "#{spec.full_name} requires rubygems version #{required_rubygems_version}, " \ - "which is incompatible with the current version, #{rubygems_version}" - end - end - end - - def warn_on_incompatible_bundler_deps - bundler_version = Gem::Version.create(Bundler::VERSION) - @definition.specs.each do |spec| - spec.dependencies.each do |dep| - next if dep.type == :development - next unless dep.name == "bundler".freeze - next if dep.requirement.satisfied_by?(bundler_version) - - Bundler.ui.warn "#{spec.name} (#{spec.version}) has dependency" \ - " #{SharedHelpers.pretty_dependency(dep)}" \ - ", which is unsatisfied by the current bundler version #{VERSION}" \ - ", so the dependency is being ignored" - end - end - end - - def can_install_in_parallel? - if Bundler.rubygems.provides?(">= 2.1.0") - true - else - Bundler.ui.warn "RubyGems #{Gem::VERSION} is not threadsafe, so your "\ - "gems will be installed one at a time. Upgrade to RubyGems 2.1.0 " \ - "or higher to enable parallel gem installation." - false - end - end - - def install_in_parallel(size, standalone, force = false) - spec_installations = ParallelInstaller.call(self, @definition.specs, size, standalone, force) - spec_installations.each do |installation| - post_install_messages[installation.name] = installation.post_install_message if installation.has_post_install_message? - end - end - - def create_bundle_path - SharedHelpers.filesystem_access(Bundler.bundle_path.to_s) do |p| - Bundler.mkdir_p(p) - end unless Bundler.bundle_path.exist? - rescue Errno::EEXIST - raise PathError, "Could not install to path `#{Bundler.bundle_path}` " \ - "because a file already exists at that path. Either remove or rename the file so the directory can be created." - end - - # returns whether or not a re-resolve was needed - def resolve_if_needed(options) - if !@definition.unlocking? && !options["force"] && !Bundler.settings[:inline] && Bundler.default_lockfile.file? - return false if @definition.nothing_changed? && !@definition.missing_specs? - end - - options["local"] ? @definition.resolve_with_cache! : @definition.resolve_remotely! - true - end - - def lock(opts = {}) - @definition.lock(Bundler.default_lockfile, opts[:preserve_unknown_sections]) - end - end -end diff --git a/lib/bundler/installer/gem_installer.rb b/lib/bundler/installer/gem_installer.rb deleted file mode 100644 index 086b763d20..0000000000 --- a/lib/bundler/installer/gem_installer.rb +++ /dev/null @@ -1,78 +0,0 @@ -# frozen_string_literal: true - -module Bundler - class GemInstaller - attr_reader :spec, :standalone, :worker, :force, :installer - - def initialize(spec, installer, standalone = false, worker = 0, force = false) - @spec = spec - @installer = installer - @standalone = standalone - @worker = worker - @force = force - end - - def install_from_spec - post_install_message = spec_settings ? install_with_settings : install - Bundler.ui.debug "#{worker}: #{spec.name} (#{spec.version}) from #{spec.loaded_from}" - generate_executable_stubs - return true, post_install_message - rescue Bundler::InstallHookError, Bundler::SecurityError, APIResponseMismatchError - raise - rescue Errno::ENOSPC - return false, out_of_space_message - rescue => e - return false, specific_failure_message(e) - end - - private - - def specific_failure_message(e) - message = "#{e.class}: #{e.message}\n" - message += " " + e.backtrace.join("\n ") + "\n\n" if Bundler.ui.debug? - message = message.lines.first + Bundler.ui.add_color(message.lines.drop(1).join, :clear) - message + Bundler.ui.add_color(failure_message, :red) - end - - def failure_message - return install_error_message if spec.source.options["git"] - "#{install_error_message}\n#{gem_install_message}" - end - - def install_error_message - "An error occurred while installing #{spec.name} (#{spec.version}), and Bundler cannot continue." - end - - def gem_install_message - "Make sure that `gem install #{spec.name} -v '#{spec.version}'` succeeds before bundling." - end - - def spec_settings - # Fetch the build settings, if there are any - Bundler.settings["build.#{spec.name}"] - end - - def install - spec.source.install(spec, :force => force, :ensure_builtin_gems_cached => standalone, :build_args => Array(spec_settings)) - end - - def install_with_settings - # Build arguments are global, so this is mutexed - Bundler.rubygems.install_with_build_args([spec_settings]) { install } - end - - def out_of_space_message - "#{install_error_message}\nYour disk is out of space. Free some space to be able to install your bundle." - end - - def generate_executable_stubs - return if Bundler.feature_flag.forget_cli_options? - return if Bundler.settings[:inline] - if Bundler.settings[:bin] && standalone - installer.generate_standalone_bundler_executable_stubs(spec) - elsif Bundler.settings[:bin] - installer.generate_bundler_executable_stubs(spec, :force => true) - end - end - end -end diff --git a/lib/bundler/installer/parallel_installer.rb b/lib/bundler/installer/parallel_installer.rb deleted file mode 100644 index 95d9575c44..0000000000 --- a/lib/bundler/installer/parallel_installer.rb +++ /dev/null @@ -1,228 +0,0 @@ -# frozen_string_literal: true - -require "bundler/worker" -require "bundler/installer/gem_installer" - -module Bundler - class ParallelInstaller - class SpecInstallation - attr_accessor :spec, :name, :post_install_message, :state, :error - def initialize(spec) - @spec = spec - @name = spec.name - @state = :none - @post_install_message = "" - @error = nil - end - - def installed? - state == :installed - end - - def enqueued? - state == :enqueued - end - - def failed? - state == :failed - end - - def installation_attempted? - installed? || failed? - end - - # Only true when spec in neither installed nor already enqueued - def ready_to_enqueue? - !enqueued? && !installation_attempted? - end - - def has_post_install_message? - !post_install_message.empty? - end - - def ignorable_dependency?(dep) - dep.type == :development || dep.name == @name - end - - # Checks installed dependencies against spec's dependencies to make - # sure needed dependencies have been installed. - def dependencies_installed?(all_specs) - installed_specs = all_specs.select(&:installed?).map(&:name) - dependencies.all? {|d| installed_specs.include? d.name } - end - - # Represents only the non-development dependencies, the ones that are - # itself and are in the total list. - def dependencies - @dependencies ||= begin - all_dependencies.reject {|dep| ignorable_dependency? dep } - end - end - - def missing_lockfile_dependencies(all_spec_names) - deps = all_dependencies.reject {|dep| ignorable_dependency? dep } - deps.reject {|dep| all_spec_names.include? dep.name } - end - - # Represents all dependencies - def all_dependencies - @spec.dependencies - end - - def to_s - "#<#{self.class} #{@spec.full_name} (#{state})>" - end - end - - def self.call(*args) - new(*args).call - end - - attr_reader :size - - def initialize(installer, all_specs, size, standalone, force) - @installer = installer - @size = size - @standalone = standalone - @force = force - @specs = all_specs.map {|s| SpecInstallation.new(s) } - @spec_set = all_specs - end - - def call - # Since `autoload` has the potential for threading issues on 1.8.7 - # TODO: remove in bundler 2.0 - require "bundler/gem_remote_fetcher" if RUBY_VERSION < "1.9" - - check_for_corrupt_lockfile - - if @size > 1 - install_with_worker - else - install_serially - end - - handle_error if @specs.any?(&:failed?) - @specs - ensure - worker_pool && worker_pool.stop - end - - def check_for_corrupt_lockfile - missing_dependencies = @specs.map do |s| - [ - s, - s.missing_lockfile_dependencies(@specs.map(&:name)), - ] - end.reject { |a| a.last.empty? } - return if missing_dependencies.empty? - - warning = [] - warning << "Your lockfile was created by an old Bundler that left some things out." - if @size != 1 - warning << "Because of the missing DEPENDENCIES, we can only install gems one at a time, instead of installing #{@size} at a time." - @size = 1 - end - warning << "You can fix this by adding the missing gems to your Gemfile, running bundle install, and then removing the gems from your Gemfile." - warning << "The missing gems are:" - - missing_dependencies.each do |spec, missing| - warning << "* #{missing.map(&:name).join(", ")} depended upon by #{spec.name}" - end - - Bundler.ui.warn(warning.join("\n")) - end - - private - - def install_with_worker - enqueue_specs - process_specs until finished_installing? - end - - def install_serially - until finished_installing? - raise "failed to find a spec to enqueue while installing serially" unless spec_install = @specs.find(&:ready_to_enqueue?) - spec_install.state = :enqueued - do_install(spec_install, 0) - end - end - - def worker_pool - @worker_pool ||= Bundler::Worker.new @size, "Parallel Installer", lambda { |spec_install, worker_num| - do_install(spec_install, worker_num) - } - end - - def do_install(spec_install, worker_num) - gem_installer = Bundler::GemInstaller.new( - spec_install.spec, @installer, @standalone, worker_num, @force - ) - success, message = begin - gem_installer.install_from_spec - rescue => e - raise e, "#{e}\n\n#{require_tree_for_spec(spec_install.spec)}" - end - if success - spec_install.state = :installed - spec_install.post_install_message = message unless message.nil? - else - spec_install.state = :failed - spec_install.error = "#{message}\n\n#{require_tree_for_spec(spec_install.spec)}" - end - spec_install - end - - # Dequeue a spec and save its post-install message and then enqueue the - # remaining specs. - # Some specs might've had to wait til this spec was installed to be - # processed so the call to `enqueue_specs` is important after every - # dequeue. - def process_specs - worker_pool.deq - enqueue_specs - end - - def finished_installing? - @specs.all? do |spec| - return true if spec.failed? - spec.installed? - end - end - - def handle_error - errors = @specs.select(&:failed?).map(&:error) - if exception = errors.find {|e| e.is_a?(Bundler::BundlerError) } - raise exception - end - raise Bundler::InstallError, errors.map(&:to_s).join("\n\n") - end - - def require_tree_for_spec(spec) - tree = @spec_set.what_required(spec) - t = String.new("In #{File.basename(SharedHelpers.default_gemfile)}:\n") - tree.each_with_index do |s, depth| - t << " " * depth.succ << s.name - unless tree.last == s - t << %( was resolved to #{s.version}, which depends on) - end - t << %(\n) - end - t - end - - # Keys in the remains hash represent uninstalled gems specs. - # We enqueue all gem specs that do not have any dependencies. - # Later we call this lambda again to install specs that depended on - # previously installed specifications. We continue until all specs - # are installed. - def enqueue_specs - @specs.select(&:ready_to_enqueue?).each do |spec| - if spec.dependencies_installed? @specs - spec.state = :enqueued - worker_pool.enq spec - end - end - end - end -end diff --git a/lib/bundler/installer/standalone.rb b/lib/bundler/installer/standalone.rb deleted file mode 100644 index ce0c9df1eb..0000000000 --- a/lib/bundler/installer/standalone.rb +++ /dev/null @@ -1,53 +0,0 @@ -# frozen_string_literal: true - -module Bundler - class Standalone - def initialize(groups, definition) - @specs = groups.empty? ? definition.requested_specs : definition.specs_for(groups.map(&:to_sym)) - end - - def generate - SharedHelpers.filesystem_access(bundler_path) do |p| - FileUtils.mkdir_p(p) - end - File.open File.join(bundler_path, "setup.rb"), "w" do |file| - file.puts "require 'rbconfig'" - file.puts "# ruby 1.8.7 doesn't define RUBY_ENGINE" - file.puts "ruby_engine = defined?(RUBY_ENGINE) ? RUBY_ENGINE : 'ruby'" - file.puts "ruby_version = RbConfig::CONFIG[\"ruby_version\"]" - file.puts "path = File.expand_path('..', __FILE__)" - paths.each do |path| - file.puts %($:.unshift "\#{path}/#{path}") - end - end - end - - private - - def paths - @specs.map do |spec| - next if spec.name == "bundler" - Array(spec.require_paths).map do |path| - gem_path(path, spec).sub(version_dir, '#{ruby_engine}/#{ruby_version}') - # This is a static string intentionally. It's interpolated at a later time. - end - end.flatten - end - - def version_dir - "#{Bundler::RubyVersion.system.engine}/#{RbConfig::CONFIG["ruby_version"]}" - end - - def bundler_path - Bundler.root.join(Bundler.settings[:path], "bundler") - end - - def gem_path(path, spec) - full_path = Pathname.new(path).absolute? ? path : File.join(spec.full_gem_path, path) - Pathname.new(full_path).relative_path_from(Bundler.root.join(bundler_path)).to_s - rescue TypeError - error_message = "#{spec.name} #{spec.version} has an invalid gemspec" - raise Gem::InvalidSpecificationException.new(error_message) - end - end -end diff --git a/lib/bundler/lazy_specification.rb b/lib/bundler/lazy_specification.rb deleted file mode 100644 index 993952c23b..0000000000 --- a/lib/bundler/lazy_specification.rb +++ /dev/null @@ -1,123 +0,0 @@ -# frozen_string_literal: true - -require "uri" -require "bundler/match_platform" - -module Bundler - class LazySpecification - Identifier = Struct.new(:name, :version, :source, :platform, :dependencies) - class Identifier - include Comparable - def <=>(other) - return unless other.is_a?(Identifier) - [name, version, platform_string] <=> [other.name, other.version, other.platform_string] - end - - protected - - def platform_string - platform_string = platform.to_s - platform_string == Index::RUBY ? Index::NULL : platform_string - end - end - - include MatchPlatform - - attr_reader :name, :version, :dependencies, :platform - attr_accessor :source, :remote - - def initialize(name, version, platform, source = nil) - @name = name - @version = version - @dependencies = [] - @platform = platform || Gem::Platform::RUBY - @source = source - @specification = nil - end - - def full_name - if platform == Gem::Platform::RUBY || platform.nil? - "#{@name}-#{@version}" - else - "#{@name}-#{@version}-#{platform}" - end - end - - def ==(other) - identifier == other.identifier - end - - def satisfies?(dependency) - @name == dependency.name && dependency.requirement.satisfied_by?(Gem::Version.new(@version)) - end - - def to_lock - out = String.new - - if platform == Gem::Platform::RUBY || platform.nil? - out << " #{name} (#{version})\n" - else - out << " #{name} (#{version}-#{platform})\n" - end - - dependencies.sort_by(&:to_s).uniq.each do |dep| - next if dep.type == :development - out << " #{dep.to_lock}\n" - end - - out - end - - def __materialize__ - search_object = Bundler.feature_flag.specific_platform? || Bundler.settings[:force_ruby_platform] ? self : Dependency.new(name, version) - @specification = if source.is_a?(Source::Gemspec) && source.gemspec.name == name - source.gemspec.tap {|s| s.source = source } - else - search = source.specs.search(search_object).last - if search && Gem::Platform.new(search.platform) != Gem::Platform.new(platform) && !search.runtime_dependencies.-(dependencies.reject {|d| d.type == :development }).empty? - Bundler.ui.warn "Unable to use the platform-specific (#{search.platform}) version of #{name} (#{version}) " \ - "because it has different dependencies from the #{platform} version. " \ - "To use the platform-specific version of the gem, run `bundle config specific_platform true` and install again." - search = source.specs.search(self).last - end - search.dependencies = dependencies if search.is_a?(RemoteSpecification) || search.is_a?(EndpointSpecification) - search - end - end - - def respond_to?(*args) - super || @specification ? @specification.respond_to?(*args) : nil - end - - def to_s - @__to_s ||= if platform == Gem::Platform::RUBY || platform.nil? - "#{name} (#{version})" - else - "#{name} (#{version}-#{platform})" - end - end - - def identifier - @__identifier ||= Identifier.new(name, version, source, platform, dependencies) - end - - def git_version - return unless source.is_a?(Bundler::Source::Git) - " #{source.revision[0..6]}" - end - - private - - def to_ary - nil - end - - def method_missing(method, *args, &blk) - raise "LazySpecification has not been materialized yet (calling :#{method} #{args.inspect})" unless @specification - - return super unless respond_to?(method) - - @specification.send(method, *args, &blk) - end - end -end diff --git a/lib/bundler/lockfile_generator.rb b/lib/bundler/lockfile_generator.rb deleted file mode 100644 index 585077d18d..0000000000 --- a/lib/bundler/lockfile_generator.rb +++ /dev/null @@ -1,95 +0,0 @@ -# frozen_string_literal: true - -module Bundler - class LockfileGenerator - attr_reader :definition - attr_reader :out - - # @private - def initialize(definition) - @definition = definition - @out = String.new - end - - def self.generate(definition) - new(definition).generate! - end - - def generate! - add_sources - add_platforms - add_dependencies - add_locked_ruby_version - add_bundled_with - - out - end - - private - - def add_sources - definition.send(:sources).lock_sources.each_with_index do |source, idx| - out << "\n" unless idx.zero? - - # Add the source header - out << source.to_lock - - # Find all specs for this source - specs = definition.resolve.select {|s| source.can_lock?(s) } - add_specs(specs) - end - end - - def add_specs(specs) - # This needs to be sorted by full name so that - # gems with the same name, but different platform - # are ordered consistently - specs.sort_by(&:full_name).each do |spec| - next if spec.name == "bundler".freeze - out << spec.to_lock - end - end - - def add_platforms - add_section("PLATFORMS", definition.platforms) - end - - def add_dependencies - out << "\nDEPENDENCIES\n" - - handled = [] - definition.dependencies.sort_by(&:to_s).each do |dep| - next if handled.include?(dep.name) - out << dep.to_lock - handled << dep.name - end - end - - def add_locked_ruby_version - return unless locked_ruby_version = definition.locked_ruby_version - add_section("RUBY VERSION", locked_ruby_version.to_s) - end - - def add_bundled_with - add_section("BUNDLED WITH", definition.locked_bundler_version.to_s) - end - - def add_section(name, value) - out << "\n#{name}\n" - case value - when Array - value.map(&:to_s).sort.each do |val| - out << " #{val}\n" - end - when Hash - value.to_a.sort_by {|k, _| k.to_s }.each do |key, val| - out << " #{key}: #{val}\n" - end - when String - out << " #{value}\n" - else - raise ArgumentError, "#{value.inspect} can't be serialized in a lockfile" - end - end - end -end diff --git a/lib/bundler/lockfile_parser.rb b/lib/bundler/lockfile_parser.rb deleted file mode 100644 index ff706fca1d..0000000000 --- a/lib/bundler/lockfile_parser.rb +++ /dev/null @@ -1,256 +0,0 @@ -# frozen_string_literal: true - -# Some versions of the Bundler 1.1 RC series introduced corrupted -# lockfiles. There were two major problems: -# -# * multiple copies of the same GIT section appeared in the lockfile -# * when this happened, those sections got multiple copies of gems -# in those sections. -# -# As a result, Bundler 1.1 contains code that fixes the earlier -# corruption. We will remove this fix-up code in Bundler 1.2. - -module Bundler - class LockfileParser - attr_reader :sources, :dependencies, :specs, :platforms, :bundler_version, :ruby_version - - BUNDLED = "BUNDLED WITH".freeze - DEPENDENCIES = "DEPENDENCIES".freeze - PLATFORMS = "PLATFORMS".freeze - RUBY = "RUBY VERSION".freeze - GIT = "GIT".freeze - GEM = "GEM".freeze - PATH = "PATH".freeze - PLUGIN = "PLUGIN SOURCE".freeze - SPECS = " specs:".freeze - OPTIONS = /^ ([a-z]+): (.*)$/i - SOURCE = [GIT, GEM, PATH, PLUGIN].freeze - - SECTIONS_BY_VERSION_INTRODUCED = { - # The strings have to be dup'ed for old RG on Ruby 2.3+ - # TODO: remove dup in Bundler 2.0 - Gem::Version.create("1.0".dup) => [DEPENDENCIES, PLATFORMS, GIT, GEM, PATH].freeze, - Gem::Version.create("1.10".dup) => [BUNDLED].freeze, - Gem::Version.create("1.12".dup) => [RUBY].freeze, - Gem::Version.create("1.13".dup) => [PLUGIN].freeze, - }.freeze - - KNOWN_SECTIONS = SECTIONS_BY_VERSION_INTRODUCED.values.flatten.freeze - - ENVIRONMENT_VERSION_SECTIONS = [BUNDLED, RUBY].freeze - - def self.sections_in_lockfile(lockfile_contents) - lockfile_contents.scan(/^\w[\w ]*$/).uniq - end - - def self.unknown_sections_in_lockfile(lockfile_contents) - sections_in_lockfile(lockfile_contents) - KNOWN_SECTIONS - end - - def self.sections_to_ignore(base_version = nil) - base_version &&= base_version.release - base_version ||= Gem::Version.create("1.0".dup) - attributes = [] - SECTIONS_BY_VERSION_INTRODUCED.each do |version, introduced| - next if version <= base_version - attributes += introduced - end - attributes - end - - def initialize(lockfile) - @platforms = [] - @sources = [] - @dependencies = {} - @state = nil - @specs = {} - - @rubygems_aggregate = Source::Rubygems.new - - if lockfile.match(/<<<<<<<|=======|>>>>>>>|\|\|\|\|\|\|\|/) - raise LockfileError, "Your #{Bundler.default_lockfile.relative_path_from(SharedHelpers.pwd)} contains merge conflicts.\n" \ - "Run `git checkout HEAD -- #{Bundler.default_lockfile.relative_path_from(SharedHelpers.pwd)}` first to get a clean lock." - end - - lockfile.split(/(?:\r?\n)+/).each do |line| - if SOURCE.include?(line) - @state = :source - parse_source(line) - elsif line == DEPENDENCIES - @state = :dependency - elsif line == PLATFORMS - @state = :platform - elsif line == RUBY - @state = :ruby - elsif line == BUNDLED - @state = :bundled_with - elsif line =~ /^[^\s]/ - @state = nil - elsif @state - send("parse_#{@state}", line) - end - end - @sources << @rubygems_aggregate unless Bundler.feature_flag.lockfile_uses_separate_rubygems_sources? - @specs = @specs.values.sort_by(&:identifier) - warn_for_outdated_bundler_version - rescue ArgumentError => e - Bundler.ui.debug(e) - raise LockfileError, "Your lockfile is unreadable. Run `rm #{Bundler.default_lockfile.relative_path_from(SharedHelpers.pwd)}` " \ - "and then `bundle install` to generate a new lockfile." - end - - def warn_for_outdated_bundler_version - return unless bundler_version - prerelease_text = bundler_version.prerelease? ? " --pre" : "" - current_version = Gem::Version.create(Bundler::VERSION) - case current_version.segments.first <=> bundler_version.segments.first - when -1 - raise LockfileError, "You must use Bundler #{bundler_version.segments.first} or greater with this lockfile." - when 0 - if current_version < bundler_version - Bundler.ui.warn "Warning: the running version of Bundler (#{current_version}) is older " \ - "than the version that created the lockfile (#{bundler_version}). We suggest you " \ - "upgrade to the latest version of Bundler by running `gem " \ - "install bundler#{prerelease_text}`.\n" - end - end - end - - private - - TYPES = { - GIT => Bundler::Source::Git, - GEM => Bundler::Source::Rubygems, - PATH => Bundler::Source::Path, - PLUGIN => Bundler::Plugin, - }.freeze - - def parse_source(line) - case line - when SPECS - case @type - when PATH - @current_source = TYPES[@type].from_lock(@opts) - @sources << @current_source - when GIT - @current_source = TYPES[@type].from_lock(@opts) - # Strip out duplicate GIT sections - if @sources.include?(@current_source) - @current_source = @sources.find {|s| s == @current_source } - else - @sources << @current_source - end - when GEM - if Bundler.feature_flag.lockfile_uses_separate_rubygems_sources? - @opts["remotes"] = @opts.delete("remote") - @current_source = TYPES[@type].from_lock(@opts) - @sources << @current_source - else - Array(@opts["remote"]).each do |url| - @rubygems_aggregate.add_remote(url) - end - @current_source = @rubygems_aggregate - end - when PLUGIN - @current_source = Plugin.source_from_lock(@opts) - @sources << @current_source - end - when OPTIONS - value = $2 - value = true if value == "true" - value = false if value == "false" - - key = $1 - - if @opts[key] - @opts[key] = Array(@opts[key]) - @opts[key] << value - else - @opts[key] = value - end - when *SOURCE - @current_source = nil - @opts = {} - @type = line - else - parse_spec(line) - end - end - - space = / / - NAME_VERSION = / - ^(#{space}{2}|#{space}{4}|#{space}{6})(?!#{space}) # Exactly 2, 4, or 6 spaces at the start of the line - (.*?) # Name - (?:#{space}\(([^-]*) # Space, followed by version - (?:-(.*))?\))? # Optional platform - (!)? # Optional pinned marker - $ # Line end - /xo - - def parse_dependency(line) - return unless line =~ NAME_VERSION - spaces = $1 - return unless spaces.size == 2 - name = $2 - version = $3 - pinned = $5 - - version = version.split(",").map(&:strip) if version - - dep = Bundler::Dependency.new(name, version) - - if pinned && dep.name != "bundler" - spec = @specs.find {|_, v| v.name == dep.name } - dep.source = spec.last.source if spec - - # Path sources need to know what the default name / version - # to use in the case that there are no gemspecs present. A fake - # gemspec is created based on the version set on the dependency - # TODO: Use the version from the spec instead of from the dependency - if version && version.size == 1 && version.first =~ /^\s*= (.+)\s*$/ && dep.source.is_a?(Bundler::Source::Path) - dep.source.name = name - dep.source.version = $1 - end - end - - @dependencies[dep.name] = dep - end - - def parse_spec(line) - return unless line =~ NAME_VERSION - spaces = $1 - name = $2 - version = $3 - platform = $4 - - if spaces.size == 4 - version = Gem::Version.new(version) - platform = platform ? Gem::Platform.new(platform) : Gem::Platform::RUBY - @current_spec = LazySpecification.new(name, version, platform) - @current_spec.source = @current_source - - # Avoid introducing multiple copies of the same spec (caused by - # duplicate GIT sections) - @specs[@current_spec.identifier] ||= @current_spec - elsif spaces.size == 6 - version = version.split(",").map(&:strip) if version - dep = Gem::Dependency.new(name, version) - @current_spec.dependencies << dep - end - end - - def parse_platform(line) - @platforms << Gem::Platform.new($1) if line =~ /^ (.*)$/ - end - - def parse_bundled_with(line) - line = line.strip - return unless Gem::Version.correct?(line) - @bundler_version = Gem::Version.create(line) - end - - def parse_ruby(line) - @ruby_version = line.strip - end - end -end diff --git a/lib/bundler/match_platform.rb b/lib/bundler/match_platform.rb deleted file mode 100644 index 56cbbfb95d..0000000000 --- a/lib/bundler/match_platform.rb +++ /dev/null @@ -1,24 +0,0 @@ -# frozen_string_literal: true - -require "bundler/gem_helpers" - -module Bundler - module MatchPlatform - include GemHelpers - - def match_platform(p) - MatchPlatform.platforms_match?(platform, p) - end - - def self.platforms_match?(gemspec_platform, local_platform) - return true if gemspec_platform.nil? - return true if Gem::Platform::RUBY == gemspec_platform - return true if local_platform == gemspec_platform - gemspec_platform = Gem::Platform.new(gemspec_platform) - return true if GemHelpers.generic(gemspec_platform) === local_platform - return true if gemspec_platform === local_platform - - false - end - end -end diff --git a/lib/bundler/mirror.rb b/lib/bundler/mirror.rb deleted file mode 100644 index a6fa070eb8..0000000000 --- a/lib/bundler/mirror.rb +++ /dev/null @@ -1,223 +0,0 @@ -# frozen_string_literal: true - -require "socket" - -module Bundler - class Settings - # Class used to build the mirror set and then find a mirror for a given URI - # - # @param prober [Prober object, nil] by default a TCPSocketProbe, this object - # will be used to probe the mirror address to validate that the mirror replies. - class Mirrors - def initialize(prober = nil) - @all = Mirror.new - @prober = prober || TCPSocketProbe.new - @mirrors = {} - end - - # Returns a mirror for the given uri. - # - # Depending on the uri having a valid mirror or not, it may be a - # mirror that points to the provided uri - def for(uri) - if @all.validate!(@prober).valid? - @all - else - fetch_valid_mirror_for(Settings.normalize_uri(uri)) - end - end - - def each - @mirrors.each do |k, v| - yield k, v.uri.to_s - end - end - - def parse(key, value) - config = MirrorConfig.new(key, value) - mirror = if config.all? - @all - else - @mirrors[config.uri] ||= Mirror.new - end - config.update_mirror(mirror) - end - - private - - def fetch_valid_mirror_for(uri) - downcased = uri.to_s.downcase - mirror = @mirrors[downcased] || @mirrors[URI(downcased).host] || Mirror.new(uri) - mirror.validate!(@prober) - mirror = Mirror.new(uri) unless mirror.valid? - mirror - end - end - - # A mirror - # - # Contains both the uri that should be used as a mirror and the - # fallback timeout which will be used for probing if the mirror - # replies on time or not. - class Mirror - DEFAULT_FALLBACK_TIMEOUT = 0.1 - - attr_reader :uri, :fallback_timeout - - def initialize(uri = nil, fallback_timeout = 0) - self.uri = uri - self.fallback_timeout = fallback_timeout - @valid = nil - end - - def uri=(uri) - @uri = if uri.nil? - nil - else - URI(uri.to_s) - end - @valid = nil - end - - def fallback_timeout=(timeout) - case timeout - when true, "true" - @fallback_timeout = DEFAULT_FALLBACK_TIMEOUT - when false, "false" - @fallback_timeout = 0 - else - @fallback_timeout = timeout.to_i - end - @valid = nil - end - - def ==(other) - !other.nil? && uri == other.uri && fallback_timeout == other.fallback_timeout - end - - def valid? - return false if @uri.nil? - return @valid unless @valid.nil? - false - end - - def validate!(probe = nil) - @valid = false if uri.nil? - if @valid.nil? - @valid = fallback_timeout == 0 || (probe || TCPSocketProbe.new).replies?(self) - end - self - end - end - - # Class used to parse one configuration line - # - # Gets the configuration line and the value. - # This object provides a `update_mirror` method - # used to setup the given mirror value. - class MirrorConfig - attr_accessor :uri, :value - - def initialize(config_line, value) - uri, fallback = - config_line.match(%r{\Amirror\.(all|.+?)(\.fallback_timeout)?\/?\z}).captures - @fallback = !fallback.nil? - @all = false - if uri == "all" - @all = true - else - @uri = URI(uri).absolute? ? Settings.normalize_uri(uri) : uri - end - @value = value - end - - def all? - @all - end - - def update_mirror(mirror) - if @fallback - mirror.fallback_timeout = @value - else - mirror.uri = Settings.normalize_uri(@value) - end - end - end - - # Class used for probing TCP availability for a given mirror. - class TCPSocketProbe - def replies?(mirror) - MirrorSockets.new(mirror).any? do |socket, address, timeout| - begin - socket.connect_nonblock(address) - rescue Errno::EINPROGRESS - wait_for_writtable_socket(socket, address, timeout) - rescue # Connection failed somehow, again - false - end - end - end - - private - - def wait_for_writtable_socket(socket, address, timeout) - if IO.select(nil, [socket], nil, timeout) - probe_writtable_socket(socket, address) - else # TCP Handshake timed out, or there is something dropping packets - false - end - end - - def probe_writtable_socket(socket, address) - socket.connect_nonblock(address) - rescue Errno::EISCONN - true - rescue # Connection failed - false - end - end - end - - # Class used to build the list of sockets that correspond to - # a given mirror. - # - # One mirror may correspond to many different addresses, both - # because of it having many dns entries or because - # the network interface is both ipv4 and ipv5 - class MirrorSockets - def initialize(mirror) - @timeout = mirror.fallback_timeout - @addresses = Socket.getaddrinfo(mirror.uri.host, mirror.uri.port).map do |address| - SocketAddress.new(address[0], address[3], address[1]) - end - end - - def any? - @addresses.any? do |address| - socket = Socket.new(Socket.const_get(address.type), Socket::SOCK_STREAM, 0) - socket.setsockopt(Socket::IPPROTO_TCP, Socket::TCP_NODELAY, 1) - value = yield socket, address.to_socket_address, @timeout - socket.close unless socket.closed? - value - end - end - end - - # Socket address builder. - # - # Given a socket type, a host and a port, - # provides a method to build sockaddr string - class SocketAddress - attr_reader :type, :host, :port - - def initialize(type, host, port) - @type = type - @host = host - @port = port - end - - def to_socket_address - Socket.pack_sockaddr_in(@port, @host) - end - end -end diff --git a/lib/bundler/plugin.rb b/lib/bundler/plugin.rb deleted file mode 100644 index 99c9a867b0..0000000000 --- a/lib/bundler/plugin.rb +++ /dev/null @@ -1,285 +0,0 @@ -# frozen_string_literal: true - -require "bundler/plugin/api" - -module Bundler - module Plugin - autoload :DSL, "bundler/plugin/dsl" - autoload :Index, "bundler/plugin/index" - autoload :Installer, "bundler/plugin/installer" - autoload :SourceList, "bundler/plugin/source_list" - - class MalformattedPlugin < PluginError; end - class UndefinedCommandError < PluginError; end - class UnknownSourceError < PluginError; end - - PLUGIN_FILE_NAME = "plugins.rb".freeze - - module_function - - def reset! - instance_variables.each {|i| remove_instance_variable(i) } - - @sources = {} - @commands = {} - @hooks_by_event = Hash.new {|h, k| h[k] = [] } - @loaded_plugin_names = [] - end - - reset! - - # Installs a new plugin by the given name - # - # @param [Array] names the name of plugin to be installed - # @param [Hash] options various parameters as described in description. - # Refer to cli/plugin for available options - def install(names, options) - specs = Installer.new.install(names, options) - - save_plugins names, specs - rescue PluginError => e - if specs - specs_to_delete = Hash[specs.select {|k, _v| names.include?(k) && !index.commands.values.include?(k) }] - specs_to_delete.values.each {|spec| Bundler.rm_rf(spec.full_gem_path) } - end - - Bundler.ui.error "Failed to install plugin #{name}: #{e.message}\n #{e.backtrace.join("\n ")}" - end - - # Evaluates the Gemfile with a limited DSL and installs the plugins - # specified by plugin method - # - # @param [Pathname] gemfile path - # @param [Proc] block that can be evaluated for (inline) Gemfile - def gemfile_install(gemfile = nil, &inline) - builder = DSL.new - if block_given? - builder.instance_eval(&inline) - else - builder.eval_gemfile(gemfile) - end - definition = builder.to_definition(nil, true) - - return if definition.dependencies.empty? - - plugins = definition.dependencies.map(&:name).reject {|p| index.installed? p } - installed_specs = Installer.new.install_definition(definition) - - save_plugins plugins, installed_specs, builder.inferred_plugins - rescue => e - unless e.is_a?(GemfileError) - Bundler.ui.error "Failed to install plugin: #{e.message}\n #{e.backtrace[0]}" - end - raise - end - - # The index object used to store the details about the plugin - def index - @index ||= Index.new - end - - # The directory root for all plugin related data - # - # Points to root in app_config_path if ran in an app else points to the one - # in user_bundle_path - def root - @root ||= if SharedHelpers.in_bundle? - local_root - else - global_root - end - end - - def local_root - Bundler.app_config_path.join("plugin") - end - - # The global directory root for all plugin related data - def global_root - Bundler.user_bundle_path.join("plugin") - end - - # The cache directory for plugin stuffs - def cache - @cache ||= root.join("cache") - end - - # To be called via the API to register to handle a command - def add_command(command, cls) - @commands[command] = cls - end - - # Checks if any plugin handles the command - def command?(command) - !index.command_plugin(command).nil? - end - - # To be called from Cli class to pass the command and argument to - # approriate plugin class - def exec_command(command, args) - raise UndefinedCommandError, "Command `#{command}` not found" unless command? command - - load_plugin index.command_plugin(command) unless @commands.key? command - - @commands[command].new.exec(command, args) - end - - # To be called via the API to register to handle a source plugin - def add_source(source, cls) - @sources[source] = cls - end - - # Checks if any plugin declares the source - def source?(name) - !index.source_plugin(name.to_s).nil? - end - - # @return [Class] that handles the source. The calss includes API::Source - def source(name) - raise UnknownSourceError, "Source #{name} not found" unless source? name - - load_plugin(index.source_plugin(name)) unless @sources.key? name - - @sources[name] - end - - # @param [Hash] The options that are present in the lock file - # @return [API::Source] the instance of the class that handles the source - # type passed in locked_opts - def source_from_lock(locked_opts) - src = source(locked_opts["type"]) - - src.new(locked_opts.merge("uri" => locked_opts["remote"])) - end - - # To be called via the API to register a hooks and corresponding block that - # will be called to handle the hook - def add_hook(event, &block) - @hooks_by_event[event.to_s] << block - end - - # Runs all the hooks that are registered for the passed event - # - # It passes the passed arguments and block to the block registered with - # the api. - # - # @param [String] event - def hook(event, *args, &arg_blk) - return unless Bundler.feature_flag.plugins? - - plugins = index.hook_plugins(event) - return unless plugins.any? - - (plugins - @loaded_plugin_names).each {|name| load_plugin(name) } - - @hooks_by_event[event].each {|blk| blk.call(*args, &arg_blk) } - end - - # currently only intended for specs - # - # @return [String, nil] installed path - def installed?(plugin) - Index.new.installed?(plugin) - end - - # Post installation processing and registering with index - # - # @param [Array] plugins list to be installed - # @param [Hash] specs of plugins mapped to installation path (currently they - # contain all the installed specs, including plugins) - # @param [Array] names of inferred source plugins that can be ignored - def save_plugins(plugins, specs, optional_plugins = []) - plugins.each do |name| - spec = specs[name] - validate_plugin! Pathname.new(spec.full_gem_path) - installed = register_plugin(name, spec, optional_plugins.include?(name)) - Bundler.ui.info "Installed plugin #{name}" if installed - end - end - - # Checks if the gem is good to be a plugin - # - # At present it only checks whether it contains plugins.rb file - # - # @param [Pathname] plugin_path the path plugin is installed at - # @raise [MalformattedPlugin] if plugins.rb file is not found - def validate_plugin!(plugin_path) - plugin_file = plugin_path.join(PLUGIN_FILE_NAME) - raise MalformattedPlugin, "#{PLUGIN_FILE_NAME} was not found in the plugin." unless plugin_file.file? - end - - # Runs the plugins.rb file in an isolated namespace, records the plugin - # actions it registers for and then passes the data to index to be stored. - # - # @param [String] name the name of the plugin - # @param [Specification] spec of installed plugin - # @param [Boolean] optional_plugin, removed if there is conflict with any - # other plugin (used for default source plugins) - # - # @raise [MalformattedPlugin] if plugins.rb raises any error - def register_plugin(name, spec, optional_plugin = false) - commands = @commands - sources = @sources - hooks = @hooks_by_event - - @commands = {} - @sources = {} - @hooks_by_event = Hash.new {|h, k| h[k] = [] } - - load_paths = spec.load_paths - add_to_load_path(load_paths) - path = Pathname.new spec.full_gem_path - - begin - load path.join(PLUGIN_FILE_NAME), true - rescue StandardError => e - raise MalformattedPlugin, "#{e.class}: #{e.message}" - end - - if optional_plugin && @sources.keys.any? {|s| source? s } - Bundler.rm_rf(path) - false - else - index.register_plugin(name, path.to_s, load_paths, @commands.keys, - @sources.keys, @hooks_by_event.keys) - true - end - ensure - @commands = commands - @sources = sources - @hooks_by_event = hooks - end - - # Executes the plugins.rb file - # - # @param [String] name of the plugin - def load_plugin(name) - # Need to ensure before this that plugin root where the rest of gems - # are installed to be on load path to support plugin deps. Currently not - # done to avoid conflicts - path = index.plugin_path(name) - - add_to_load_path(index.load_paths(name)) - - load path.join(PLUGIN_FILE_NAME) - - @loaded_plugin_names << name - rescue => e - Bundler.ui.error "Failed loading plugin #{name}: #{e.message}" - raise - end - - def add_to_load_path(load_paths) - if insert_index = Bundler.rubygems.load_path_insert_index - $LOAD_PATH.insert(insert_index, *load_paths) - else - $LOAD_PATH.unshift(*load_paths) - end - end - - class << self - private :load_plugin, :register_plugin, :save_plugins, :validate_plugin!, - :add_to_load_path - end - end -end diff --git a/lib/bundler/plugin/api.rb b/lib/bundler/plugin/api.rb deleted file mode 100644 index a2d5cbb4ac..0000000000 --- a/lib/bundler/plugin/api.rb +++ /dev/null @@ -1,81 +0,0 @@ -# frozen_string_literal: true - -module Bundler - # This is the interfacing class represents the API that we intend to provide - # the plugins to use. - # - # For plugins to be independent of the Bundler internals they shall limit their - # interactions to methods of this class only. This will save them from breaking - # when some internal change. - # - # Currently we are delegating the methods defined in Bundler class to - # itself. So, this class acts as a buffer. - # - # If there is some change in the Bundler class that is incompatible to its - # previous behavior or if otherwise desired, we can reimplement(or implement) - # the method to preserve compatibility. - # - # To use this, either the class can inherit this class or use it directly. - # For example of both types of use, refer the file `spec/plugins/command.rb` - # - # To use it without inheriting, you will have to create an object of this - # to use the functions (except for declaration functions like command, source, - # and hooks). - module Plugin - class API - autoload :Source, "bundler/plugin/api/source" - - # The plugins should declare that they handle a command through this helper. - # - # @param [String] command being handled by them - # @param [Class] (optional) class that handles the command. If not - # provided, the `self` class will be used. - def self.command(command, cls = self) - Plugin.add_command command, cls - end - - # The plugins should declare that they provide a installation source - # through this helper. - # - # @param [String] the source type they provide - # @param [Class] (optional) class that handles the source. If not - # provided, the `self` class will be used. - def self.source(source, cls = self) - cls.send :include, Bundler::Plugin::API::Source - Plugin.add_source source, cls - end - - def self.hook(event, &block) - Plugin.add_hook(event, &block) - end - - # The cache dir to be used by the plugins for storage - # - # @return [Pathname] path of the cache dir - def cache_dir - Plugin.cache.join("plugins") - end - - # A tmp dir to be used by plugins - # Accepts names that get concatenated as suffix - # - # @return [Pathname] object for the new directory created - def tmp(*names) - Bundler.tmp(["plugin", *names].join("-")) - end - - def method_missing(name, *args, &blk) - return Bundler.send(name, *args, &blk) if Bundler.respond_to?(name) - - return SharedHelpers.send(name, *args, &blk) if SharedHelpers.respond_to?(name) - - super - end - - def respond_to_missing?(name, include_private = false) - SharedHelpers.respond_to?(name, include_private) || - Bundler.respond_to?(name, include_private) || super - end - end - end -end diff --git a/lib/bundler/plugin/api/source.rb b/lib/bundler/plugin/api/source.rb deleted file mode 100644 index 586477efb5..0000000000 --- a/lib/bundler/plugin/api/source.rb +++ /dev/null @@ -1,306 +0,0 @@ -# frozen_string_literal: true - -require "uri" - -module Bundler - module Plugin - class API - # This class provides the base to build source plugins - # All the method here are required to build a source plugin (except - # `uri_hash`, `gem_install_dir`; they are helpers). - # - # Defaults for methods, where ever possible are provided which is - # expected to work. But, all source plugins have to override - # `fetch_gemspec_files` and `install`. Defaults are also not provided for - # `remote!`, `cache!` and `unlock!`. - # - # The defaults shall work for most situations but nevertheless they can - # be (preferably should be) overridden as per the plugins' needs safely - # (as long as they behave as expected). - # On overriding `initialize` you should call super first. - # - # If required plugin should override `hash`, `==` and `eql?` methods to be - # able to match objects representing same sources, but may be created in - # different situation (like form gemfile and lockfile). The default ones - # checks only for class and uri, but elaborate source plugins may need - # more comparisons (e.g. git checking on branch or tag). - # - # @!attribute [r] uri - # @return [String] the remote specified with `source` block in Gemfile - # - # @!attribute [r] options - # @return [String] options passed during initialization (either from - # lockfile or Gemfile) - # - # @!attribute [r] name - # @return [String] name that can be used to uniquely identify a source - # - # @!attribute [rw] dependency_names - # @return [Array] Names of dependencies that the source should - # try to resolve. It is not necessary to use this list intenally. This - # is present to be compatible with `Definition` and is used by - # rubygems source. - module Source - attr_reader :uri, :options, :name - attr_accessor :dependency_names - - def initialize(opts) - @options = opts - @dependency_names = [] - @uri = opts["uri"] - @type = opts["type"] - @name = opts["name"] || "#{@type} at #{@uri}" - end - - # This is used by the default `spec` method to constructs the - # Specification objects for the gems and versions that can be installed - # by this source plugin. - # - # Note: If the spec method is overridden, this function is not necessary - # - # @return [Array] paths of the gemspec files for gems that can - # be installed - def fetch_gemspec_files - [] - end - - # Options to be saved in the lockfile so that the source plugin is able - # to check out same version of gem later. - # - # There options are passed when the source plugin is created from the - # lock file. - # - # @return [Hash] - def options_to_lock - {} - end - - # Install the gem specified by the spec at appropriate path. - # `install_path` provides a sufficient default, if the source can only - # satisfy one gem, but is not binding. - # - # @return [String] post installation message (if any) - def install(spec, opts) - raise MalformattedPlugin, "Source plugins need to override the install method." - end - - # It builds extensions, generates bins and installs them for the spec - # provided. - # - # It depends on `spec.loaded_from` to get full_gem_path. The source - # plugins should set that. - # - # It should be called in `install` after the plugin is done placing the - # gem at correct install location. - # - # It also runs Gem hooks `pre_install`, `post_build` and `post_install` - # - # Note: Do not override if you don't know what you are doing. - def post_install(spec, disable_exts = false) - opts = { :env_shebang => false, :disable_extensions => disable_exts } - installer = Bundler::Source::Path::Installer.new(spec, opts) - installer.post_install - end - - # A default installation path to install a single gem. If the source - # servers multiple gems, it's not of much use and the source should one - # of its own. - def install_path - @install_path ||= - begin - base_name = File.basename(URI.parse(uri).normalize.path) - - gem_install_dir.join("#{base_name}-#{uri_hash[0..11]}") - end - end - - # Parses the gemspec files to find the specs for the gems that can be - # satisfied by the source. - # - # Few important points to keep in mind: - # - If the gems are not installed then it shall return specs for all - # the gems it can satisfy - # - If gem is installed (that is to be detected by the plugin itself) - # then it shall return at least the specs that are installed. - # - The `loaded_from` for each of the specs shall be correct (it is - # used to find the load path) - # - # @return [Bundler::Index] index containing the specs - def specs - files = fetch_gemspec_files - - Bundler::Index.build do |index| - files.each do |file| - next unless spec = Bundler.load_gemspec(file) - Bundler.rubygems.set_installed_by_version(spec) - - spec.source = self - Bundler.rubygems.validate(spec) - - index << spec - end - end - end - - # Set internal representation to fetch the gems/specs from remote. - # - # When this is called, the source should try to fetch the specs and - # install from remote path. - def remote! - end - - # Set internal representation to fetch the gems/specs from app cache. - # - # When this is called, the source should try to fetch the specs and - # install from the path provided by `app_cache_path`. - def cached! - end - - # This is called to update the spec and installation. - # - # If the source plugin is loaded from lockfile or otherwise, it shall - # refresh the cache/specs (e.g. git sources can make a fresh clone). - def unlock! - end - - # Name of directory where plugin the is expected to cache the gems when - # #cache is called. - # - # Also this name is matched against the directories in cache for pruning - # - # This is used by `app_cache_path` - def app_cache_dirname - base_name = File.basename(URI.parse(uri).normalize.path) - "#{base_name}-#{uri_hash}" - end - - # This method is called while caching to save copy of the gems that the - # source can resolve to path provided by `app_cache_app`so that they can - # be reinstalled from the cache without querying the remote (i.e. an - # alternative to remote) - # - # This is stored with the app and source plugins should try to provide - # specs and install only from this cache when `cached!` is called. - # - # This cache is different from the internal caching that can be done - # at sub paths of `cache_path` (from API). This can be though as caching - # by bundler. - def cache(spec, custom_path = nil) - new_cache_path = app_cache_path(custom_path) - - FileUtils.rm_rf(new_cache_path) - FileUtils.cp_r(install_path, new_cache_path) - FileUtils.touch(app_cache_path.join(".bundlecache")) - end - - # This shall check if two source object represent the same source. - # - # The comparison shall take place only on the attribute that can be - # inferred from the options passed from Gemfile and not on attibutes - # that are used to pin down the gem to specific version (e.g. Git - # sources should compare on branch and tag but not on commit hash) - # - # The sources objects are constructed from Gemfile as well as from - # lockfile. To converge the sources, it is necessary that they match. - # - # The same applies for `eql?` and `hash` - def ==(other) - other.is_a?(self.class) && uri == other.uri - end - - # When overriding `eql?` please preserve the behaviour as mentioned in - # docstring for `==` method. - alias_method :eql?, :== - - # When overriding `hash` please preserve the behaviour as mentioned in - # docstring for `==` method, i.e. two methods equal by above comparison - # should have same hash. - def hash - [self.class, uri].hash - end - - # A helper method, not necessary if not used internally. - def installed? - File.directory?(install_path) - end - - # The full path where the plugin should cache the gem so that it can be - # installed latter. - # - # Note: Do not override if you don't know what you are doing. - def app_cache_path(custom_path = nil) - @app_cache_path ||= Bundler.app_cache(custom_path).join(app_cache_dirname) - end - - # Used by definition. - # - # Note: Do not override if you don't know what you are doing. - def unmet_deps - specs.unmet_dependency_names - end - - # Note: Do not override if you don't know what you are doing. - def can_lock?(spec) - spec.source == self - end - - # Generates the content to be entered into the lockfile. - # Saves type and remote and also calls to `options_to_lock`. - # - # Plugin should use `options_to_lock` to save information in lockfile - # and not override this. - # - # Note: Do not override if you don't know what you are doing. - def to_lock - out = String.new("#{LockfileParser::PLUGIN}\n") - out << " remote: #{@uri}\n" - out << " type: #{@type}\n" - options_to_lock.each do |opt, value| - out << " #{opt}: #{value}\n" - end - out << " specs:\n" - end - - def to_s - "plugin source for #{options[:type]} with uri #{uri}" - end - - # Note: Do not override if you don't know what you are doing. - def include?(other) - other == self - end - - def uri_hash - SharedHelpers.digest(:SHA1).hexdigest(uri) - end - - # Note: Do not override if you don't know what you are doing. - def gem_install_dir - Bundler.install_path - end - - # It is used to obtain the full_gem_path. - # - # spec's loaded_from path is expanded against this to get full_gem_path - # - # Note: Do not override if you don't know what you are doing. - def root - Bundler.root - end - - # @private - # Returns true - def bundler_plugin_api_source? - true - end - - # @private - # This API on source might not be stable, and for now we expect plugins - # to download all specs in `#specs`, so we implement the method for - # compatibility purposes and leave it undocumented (and don't support) - # overriding it) - def double_check_for(*); end - end - end - end -end diff --git a/lib/bundler/plugin/dsl.rb b/lib/bundler/plugin/dsl.rb deleted file mode 100644 index 4bfc8437e0..0000000000 --- a/lib/bundler/plugin/dsl.rb +++ /dev/null @@ -1,53 +0,0 @@ -# frozen_string_literal: true - -module Bundler - module Plugin - # Dsl to parse the Gemfile looking for plugins to install - class DSL < Bundler::Dsl - class PluginGemfileError < PluginError; end - alias_method :_gem, :gem # To use for plugin installation as gem - - # So that we don't have to override all there methods to dummy ones - # explicitly. - # They will be handled by method_missing - [:gemspec, :gem, :path, :install_if, :platforms, :env].each {|m| undef_method m } - - # This lists the plugins that was added automatically and not specified by - # the user. - # - # When we encounter :type attribute with a source block, we add a plugin - # by name bundler-source- to list of plugins to be installed. - # - # These plugins are optional and are not installed when there is conflict - # with any other plugin. - attr_reader :inferred_plugins - - def initialize - super - @sources = Plugin::SourceList.new - @inferred_plugins = [] # The source plugins inferred from :type - end - - def plugin(name, *args) - _gem(name, *args) - end - - def method_missing(name, *args) - raise PluginGemfileError, "Undefined local variable or method `#{name}' for Gemfile" unless Bundler::Dsl.method_defined? name - end - - def source(source, *args, &blk) - options = args.last.is_a?(Hash) ? args.pop.dup : {} - options = normalize_hash(options) - return super unless options.key?("type") - - plugin_name = "bundler-source-#{options["type"]}" - - return if @dependencies.any? {|d| d.name == plugin_name } - - plugin(plugin_name) - @inferred_plugins << plugin_name - end - end - end -end diff --git a/lib/bundler/plugin/index.rb b/lib/bundler/plugin/index.rb deleted file mode 100644 index 8dde072f16..0000000000 --- a/lib/bundler/plugin/index.rb +++ /dev/null @@ -1,157 +0,0 @@ -# frozen_string_literal: true - -module Bundler - # Manages which plugins are installed and their sources. This also is supposed to map - # which plugin does what (currently the features are not implemented so this class is - # now a stub class). - module Plugin - class Index - class CommandConflict < PluginError - def initialize(plugin, commands) - msg = "Command(s) `#{commands.join("`, `")}` declared by #{plugin} are already registered." - super msg - end - end - - class SourceConflict < PluginError - def initialize(plugin, sources) - msg = "Source(s) `#{sources.join("`, `")}` declared by #{plugin} are already registered." - super msg - end - end - - attr_reader :commands - - def initialize - @plugin_paths = {} - @commands = {} - @sources = {} - @hooks = {} - @load_paths = {} - - load_index(global_index_file, true) - load_index(local_index_file) if SharedHelpers.in_bundle? - end - - # This function is to be called when a new plugin is installed. This - # function shall add the functions of the plugin to existing maps and also - # the name to source location. - # - # @param [String] name of the plugin to be registered - # @param [String] path where the plugin is installed - # @param [Array] load_paths for the plugin - # @param [Array] commands that are handled by the plugin - # @param [Array] sources that are handled by the plugin - def register_plugin(name, path, load_paths, commands, sources, hooks) - old_commands = @commands.dup - - common = commands & @commands.keys - raise CommandConflict.new(name, common) unless common.empty? - commands.each {|c| @commands[c] = name } - - common = sources & @sources.keys - raise SourceConflict.new(name, common) unless common.empty? - sources.each {|k| @sources[k] = name } - - hooks.each {|e| (@hooks[e] ||= []) << name } - - @plugin_paths[name] = path - @load_paths[name] = load_paths - save_index - rescue - @commands = old_commands - raise - end - - # Path of default index file - def index_file - Plugin.root.join("index") - end - - # Path where the global index file is stored - def global_index_file - Plugin.global_root.join("index") - end - - # Path where the local index file is stored - def local_index_file - Plugin.local_root.join("index") - end - - def plugin_path(name) - Pathname.new @plugin_paths[name] - end - - def load_paths(name) - @load_paths[name] - end - - # Fetch the name of plugin handling the command - def command_plugin(command) - @commands[command] - end - - def installed?(name) - @plugin_paths[name] - end - - def source?(source) - @sources.key? source - end - - def source_plugin(name) - @sources[name] - end - - # Returns the list of plugin names handling the passed event - def hook_plugins(event) - @hooks[event] || [] - end - - private - - # Reads the index file from the directory and initializes the instance - # variables. - # - # It skips the sources if the second param is true - # @param [Pathname] index file path - # @param [Boolean] is the index file global index - def load_index(index_file, global = false) - SharedHelpers.filesystem_access(index_file, :read) do |index_f| - valid_file = index_f && index_f.exist? && !index_f.size.zero? - break unless valid_file - - data = index_f.read - - require "bundler/yaml_serializer" - index = YAMLSerializer.load(data) - - @commands.merge!(index["commands"]) - @hooks.merge!(index["hooks"]) - @load_paths.merge!(index["load_paths"]) - @plugin_paths.merge!(index["plugin_paths"]) - @sources.merge!(index["sources"]) unless global - end - end - - # Should be called when any of the instance variables change. Stores the - # instance variables in YAML format. (The instance variables are supposed - # to be only String key value pairs) - def save_index - index = { - "commands" => @commands, - "hooks" => @hooks, - "load_paths" => @load_paths, - "plugin_paths" => @plugin_paths, - "sources" => @sources, - } - - require "bundler/yaml_serializer" - SharedHelpers.filesystem_access(index_file) do |index_f| - FileUtils.mkdir_p(index_f.dirname) - File.open(index_f, "w") {|f| f.puts YAMLSerializer.dump(index) } - end - end - end - end -end diff --git a/lib/bundler/plugin/installer.rb b/lib/bundler/plugin/installer.rb deleted file mode 100644 index 5379c38979..0000000000 --- a/lib/bundler/plugin/installer.rb +++ /dev/null @@ -1,96 +0,0 @@ -# frozen_string_literal: true - -module Bundler - # Handles the installation of plugin in appropriate directories. - # - # This class is supposed to be wrapper over the existing gem installation infra - # but currently it itself handles everything as the Source's subclasses (e.g. Source::RubyGems) - # are heavily dependent on the Gemfile. - module Plugin - class Installer - autoload :Rubygems, "bundler/plugin/installer/rubygems" - autoload :Git, "bundler/plugin/installer/git" - - def install(names, options) - version = options[:version] || [">= 0"] - Bundler.settings.temporary(:lockfile_uses_separate_rubygems_sources => false, :disable_multisource => false) do - if options[:git] - install_git(names, version, options) - else - sources = options[:source] || Bundler.rubygems.sources - install_rubygems(names, version, sources) - end - end - end - - # Installs the plugin from Definition object created by limited parsing of - # Gemfile searching for plugins to be installed - # - # @param [Definition] definition object - # @return [Hash] map of names to their specs they are installed with - def install_definition(definition) - def definition.lock(*); end - definition.resolve_remotely! - specs = definition.specs - - install_from_specs specs - end - - private - - def install_git(names, version, options) - uri = options.delete(:git) - options["uri"] = uri - - source_list = SourceList.new - source_list.add_git_source(options) - - # To support both sources - if options[:source] - source_list.add_rubygems_source("remotes" => options[:source]) - end - - deps = names.map {|name| Dependency.new name, version } - - definition = Definition.new(nil, deps, source_list, true) - install_definition(definition) - end - - # Installs the plugin from rubygems source and returns the path where the - # plugin was installed - # - # @param [String] name of the plugin gem to search in the source - # @param [Array] version of the gem to install - # @param [String, Array] source(s) to resolve the gem - # - # @return [Hash] map of names to the specs of plugins installed - def install_rubygems(names, version, sources) - deps = names.map {|name| Dependency.new name, version } - - source_list = SourceList.new - source_list.add_rubygems_source("remotes" => sources) - - definition = Definition.new(nil, deps, source_list, true) - install_definition(definition) - end - - # Installs the plugins and deps from the provided specs and returns map of - # gems to their paths - # - # @param specs to install - # - # @return [Hash] map of names to the specs - def install_from_specs(specs) - paths = {} - - specs.each do |spec| - spec.source.install spec - - paths[spec.name] = spec - end - - paths - end - end - end -end diff --git a/lib/bundler/plugin/installer/git.rb b/lib/bundler/plugin/installer/git.rb deleted file mode 100644 index fbb6c5e40e..0000000000 --- a/lib/bundler/plugin/installer/git.rb +++ /dev/null @@ -1,38 +0,0 @@ -# frozen_string_literal: true - -module Bundler - module Plugin - class Installer - class Git < Bundler::Source::Git - def cache_path - @cache_path ||= begin - git_scope = "#{base_name}-#{uri_hash}" - - Plugin.cache.join("bundler", "git", git_scope) - end - end - - def install_path - @install_path ||= begin - git_scope = "#{base_name}-#{shortref_for_path(revision)}" - - Plugin.root.join("bundler", "gems", git_scope) - end - end - - def version_message(spec) - "#{spec.name} #{spec.version}" - end - - def root - Plugin.root - end - - def generate_bin(spec, disable_extensions = false) - # Need to find a way without code duplication - # For now, we can ignore this - end - end - end - end -end diff --git a/lib/bundler/plugin/installer/rubygems.rb b/lib/bundler/plugin/installer/rubygems.rb deleted file mode 100644 index 7ae74fa93b..0000000000 --- a/lib/bundler/plugin/installer/rubygems.rb +++ /dev/null @@ -1,27 +0,0 @@ -# frozen_string_literal: true - -module Bundler - module Plugin - class Installer - class Rubygems < Bundler::Source::Rubygems - def version_message(spec) - "#{spec.name} #{spec.version}" - end - - private - - def requires_sudo? - false # Will change on implementation of project level plugins - end - - def rubygems_dir - Plugin.root - end - - def cache_path - Plugin.cache - end - end - end - end -end diff --git a/lib/bundler/plugin/source_list.rb b/lib/bundler/plugin/source_list.rb deleted file mode 100644 index f0e212205f..0000000000 --- a/lib/bundler/plugin/source_list.rb +++ /dev/null @@ -1,27 +0,0 @@ -# frozen_string_literal: true - -module Bundler - # SourceList object to be used while parsing the Gemfile, setting the - # approptiate options to be used with Source classes for plugin installation - module Plugin - class SourceList < Bundler::SourceList - def add_git_source(options = {}) - add_source_to_list Plugin::Installer::Git.new(options), git_sources - end - - def add_rubygems_source(options = {}) - add_source_to_list Plugin::Installer::Rubygems.new(options), @rubygems_sources - end - - def all_sources - path_sources + git_sources + rubygems_sources + [metadata_source] - end - - private - - def rubygems_aggregate_class - Plugin::Installer::Rubygems - end - end - end -end diff --git a/lib/bundler/process_lock.rb b/lib/bundler/process_lock.rb deleted file mode 100644 index 4bd6931577..0000000000 --- a/lib/bundler/process_lock.rb +++ /dev/null @@ -1,24 +0,0 @@ -# frozen_string_literal: true - -module Bundler - class ProcessLock - def self.lock(bundle_path = Bundler.bundle_path) - lock_file_path = File.join(bundle_path, "bundler.lock") - has_lock = false - - File.open(lock_file_path, "w") do |f| - f.flock(File::LOCK_EX) - has_lock = true - yield - f.flock(File::LOCK_UN) - end - rescue Errno::EACCES, Errno::ENOLCK - # In the case the user does not have access to - # create the lock file or is using NFS where - # locks are not available we skip locking. - yield - ensure - FileUtils.rm_f(lock_file_path) if has_lock - end - end -end diff --git a/lib/bundler/psyched_yaml.rb b/lib/bundler/psyched_yaml.rb deleted file mode 100644 index e654416a5a..0000000000 --- a/lib/bundler/psyched_yaml.rb +++ /dev/null @@ -1,37 +0,0 @@ -# frozen_string_literal: true - -# Psych could be a gem, so try to ask for it -begin - gem "psych" -rescue LoadError -end if defined?(gem) - -# Psych could be in the stdlib -# but it's too late if Syck is already loaded -begin - require "psych" unless defined?(Syck) -rescue LoadError - # Apparently Psych wasn't available. Oh well. -end - -# At least load the YAML stdlib, whatever that may be -require "yaml" unless defined?(YAML.dump) - -module Bundler - # On encountering invalid YAML, - # Psych raises Psych::SyntaxError - if defined?(::Psych::SyntaxError) - YamlLibrarySyntaxError = ::Psych::SyntaxError - else # Syck raises ArgumentError - YamlLibrarySyntaxError = ::ArgumentError - end -end - -require "bundler/deprecate" -begin - Bundler::Deprecate.skip_during do - require "rubygems/safe_yaml" - end -rescue LoadError - # it's OK if the file isn't there -end diff --git a/lib/bundler/remote_specification.rb b/lib/bundler/remote_specification.rb deleted file mode 100644 index 23e1234330..0000000000 --- a/lib/bundler/remote_specification.rb +++ /dev/null @@ -1,114 +0,0 @@ -# frozen_string_literal: true - -require "uri" - -module Bundler - # Represents a lazily loaded gem specification, where the full specification - # is on the source server in rubygems' "quick" index. The proxy object is to - # be seeded with what we're given from the source's abbreviated index - the - # full specification will only be fetched when necessary. - class RemoteSpecification - include MatchPlatform - include Comparable - - attr_reader :name, :version, :platform - attr_writer :dependencies - attr_accessor :source, :remote - - def initialize(name, version, platform, spec_fetcher) - @name = name - @version = Gem::Version.create version - @platform = platform - @spec_fetcher = spec_fetcher - @dependencies = nil - end - - # Needed before installs, since the arch matters then and quick - # specs don't bother to include the arch in the platform string - def fetch_platform - @platform = _remote_specification.platform - end - - def full_name - if platform == Gem::Platform::RUBY || platform.nil? - "#{@name}-#{@version}" - else - "#{@name}-#{@version}-#{platform}" - end - end - - # Compare this specification against another object. Using sort_obj - # is compatible with Gem::Specification and other Bundler or RubyGems - # objects. Otherwise, use the default Object comparison. - def <=>(other) - if other.respond_to?(:sort_obj) - sort_obj <=> other.sort_obj - else - super - end - end - - # Because Rubyforge cannot be trusted to provide valid specifications - # once the remote gem is downloaded, the backend specification will - # be swapped out. - def __swap__(spec) - SharedHelpers.ensure_same_dependencies(self, dependencies, spec.dependencies) - @_remote_specification = spec - end - - # Create a delegate used for sorting. This strategy is copied from - # RubyGems 2.23 and ensures that Bundler's specifications can be - # compared and sorted with RubyGems' own specifications. - # - # @see #<=> - # @see Gem::Specification#sort_obj - # - # @return [Array] an object you can use to compare and sort this - # specification against other specifications - def sort_obj - [@name, @version, @platform == Gem::Platform::RUBY ? -1 : 1] - end - - def to_s - "#<#{self.class} name=#{name} version=#{version} platform=#{platform}>" - end - - def dependencies - @dependencies ||= begin - deps = method_missing(:dependencies) - - # allow us to handle when the specs dependencies are an array of array of string - # see https://github.com/bundler/bundler/issues/5797 - deps = deps.map {|d| d.is_a?(Gem::Dependency) ? d : Gem::Dependency.new(*d) } - - deps - end - end - - def git_version - return unless loaded_from && source.is_a?(Bundler::Source::Git) - " #{source.revision[0..6]}" - end - - private - - def to_ary - nil - end - - def _remote_specification - @_remote_specification ||= @spec_fetcher.fetch_spec([@name, @version, @platform]) - @_remote_specification || raise(GemspecError, "Gemspec data for #{full_name} was" \ - " missing from the server! Try installing with `--full-index` as a workaround.") - end - - def method_missing(method, *args, &blk) - _remote_specification.send(method, *args, &blk) - end - - def respond_to?(method, include_all = false) - super || _remote_specification.respond_to?(method, include_all) - end - public :respond_to? - end -end diff --git a/lib/bundler/resolver.rb b/lib/bundler/resolver.rb deleted file mode 100644 index 052d776183..0000000000 --- a/lib/bundler/resolver.rb +++ /dev/null @@ -1,372 +0,0 @@ -# frozen_string_literal: true - -module Bundler - class Resolver - require "bundler/vendored_molinillo" - require "bundler/resolver/spec_group" - - # Figures out the best possible configuration of gems that satisfies - # the list of passed dependencies and any child dependencies without - # causing any gem activation errors. - # - # ==== Parameters - # *dependencies:: The list of dependencies to resolve - # - # ==== Returns - # ,nil:: If the list of dependencies can be resolved, a - # collection of gemspecs is returned. Otherwise, nil is returned. - def self.resolve(requirements, index, source_requirements = {}, base = [], gem_version_promoter = GemVersionPromoter.new, additional_base_requirements = [], platforms = nil) - platforms = Set.new(platforms) if platforms - base = SpecSet.new(base) unless base.is_a?(SpecSet) - resolver = new(index, source_requirements, base, gem_version_promoter, additional_base_requirements, platforms) - result = resolver.start(requirements) - SpecSet.new(result) - end - - def initialize(index, source_requirements, base, gem_version_promoter, additional_base_requirements, platforms) - @index = index - @source_requirements = source_requirements - @base = base - @resolver = Molinillo::Resolver.new(self, self) - @search_for = {} - @base_dg = Molinillo::DependencyGraph.new - @base.each do |ls| - dep = Dependency.new(ls.name, ls.version) - @base_dg.add_vertex(ls.name, DepProxy.new(dep, ls.platform), true) - end - additional_base_requirements.each {|d| @base_dg.add_vertex(d.name, d) } - @platforms = platforms - @gem_version_promoter = gem_version_promoter - @allow_bundler_dependency_conflicts = Bundler.feature_flag.allow_bundler_dependency_conflicts? - @lockfile_uses_separate_rubygems_sources = Bundler.feature_flag.lockfile_uses_separate_rubygems_sources? - end - - def start(requirements) - @prerelease_specified = {} - requirements.each {|dep| @prerelease_specified[dep.name] ||= dep.prerelease? } - - verify_gemfile_dependencies_are_found!(requirements) - dg = @resolver.resolve(requirements, @base_dg) - dg.map(&:payload). - reject {|sg| sg.name.end_with?("\0") }. - map(&:to_specs).flatten - rescue Molinillo::VersionConflict => e - message = version_conflict_message(e) - raise VersionConflict.new(e.conflicts.keys.uniq, message) - rescue Molinillo::CircularDependencyError => e - names = e.dependencies.sort_by(&:name).map {|d| "gem '#{d.name}'" } - raise CyclicDependencyError, "Your bundle requires gems that depend" \ - " on each other, creating an infinite loop. Please remove" \ - " #{names.count > 1 ? "either " : ""}#{names.join(" or ")}" \ - " and try again." - end - - include Molinillo::UI - - # Conveys debug information to the user. - # - # @param [Integer] depth the current depth of the resolution process. - # @return [void] - def debug(depth = 0) - return unless debug? - debug_info = yield - debug_info = debug_info.inspect unless debug_info.is_a?(String) - STDERR.puts debug_info.split("\n").map {|s| " " * depth + s } - end - - def debug? - return @debug_mode if defined?(@debug_mode) - @debug_mode = ENV["DEBUG_RESOLVER"] || ENV["DEBUG_RESOLVER_TREE"] || false - end - - def before_resolution - Bundler.ui.info "Resolving dependencies...", debug? - end - - def after_resolution - Bundler.ui.info "" - end - - def indicate_progress - Bundler.ui.info ".", false unless debug? - end - - include Molinillo::SpecificationProvider - - def dependencies_for(specification) - specification.dependencies_for_activated_platforms - end - - def search_for(dependency) - platform = dependency.__platform - dependency = dependency.dep unless dependency.is_a? Gem::Dependency - search = @search_for[dependency] ||= begin - index = index_for(dependency) - results = index.search(dependency, @base[dependency.name]) - - unless @prerelease_specified[dependency.name] - # Move prereleases to the beginning of the list, so they're considered - # last during resolution. - pre, results = results.partition {|spec| spec.version.prerelease? } - results = pre + results - end - - if vertex = @base_dg.vertex_named(dependency.name) - locked_requirement = vertex.payload.requirement - end - spec_groups = if results.any? - nested = [] - results.each do |spec| - version, specs = nested.last - if version == spec.version - specs << spec - else - nested << [spec.version, [spec]] - end - end - nested.reduce([]) do |groups, (version, specs)| - next groups if locked_requirement && !locked_requirement.satisfied_by?(version) - spec_group = SpecGroup.new(specs) - spec_group.ignores_bundler_dependencies = @allow_bundler_dependency_conflicts - groups << spec_group - end - else - [] - end - # GVP handles major itself, but it's still a bit risky to trust it with it - # until we get it settled with new behavior. For 2.x it can take over all cases. - if @gem_version_promoter.major? - spec_groups - else - @gem_version_promoter.sort_versions(dependency, spec_groups) - end - end - search.select {|sg| sg.for?(platform) }.each {|sg| sg.activate_platform!(platform) } - end - - def index_for(dependency) - source = @source_requirements[dependency.name] - if source - source.specs - elsif @lockfile_uses_separate_rubygems_sources - Index.build do |idx| - if dependency.all_sources - dependency.all_sources.each {|s| idx.add_source(s.specs) if s } - else - idx.add_source @source_requirements[:default].specs - end - end - else - @index - end - end - - def name_for(dependency) - dependency.name - end - - def name_for_explicit_dependency_source - Bundler.default_gemfile.basename.to_s - rescue - "Gemfile" - end - - def name_for_locking_dependency_source - Bundler.default_lockfile.basename.to_s - rescue - "Gemfile.lock" - end - - def requirement_satisfied_by?(requirement, activated, spec) - return false unless requirement.matches_spec?(spec) || spec.source.is_a?(Source::Gemspec) - if spec.version.prerelease? && !requirement.prerelease? && search_for(requirement).any? {|sg| !sg.version.prerelease? } - vertex = activated.vertex_named(spec.name) - return false if vertex.requirements.none?(&:prerelease?) - end - spec.activate_platform!(requirement.__platform) if !@platforms || @platforms.include?(requirement.__platform) - true - end - - def relevant_sources_for_vertex(vertex) - if vertex.root? - [@source_requirements[vertex.name]] - elsif @lockfile_uses_separate_rubygems_sources - vertex.recursive_predecessors.map do |v| - @source_requirements[v.name] - end << @source_requirements[:default] - end - end - - def sort_dependencies(dependencies, activated, conflicts) - dependencies.sort_by do |dependency| - dependency.all_sources = relevant_sources_for_vertex(activated.vertex_named(dependency.name)) - name = name_for(dependency) - vertex = activated.vertex_named(name) - [ - @base_dg.vertex_named(name) ? 0 : 1, - vertex.payload ? 0 : 1, - vertex.root? ? 0 : 1, - amount_constrained(dependency), - conflicts[name] ? 0 : 1, - vertex.payload ? 0 : search_for(dependency).count, - self.class.platform_sort_key(dependency.__platform), - ] - end - end - - # Sort platforms from most general to most specific - def self.sort_platforms(platforms) - platforms.sort_by do |platform| - platform_sort_key(platform) - end - end - - def self.platform_sort_key(platform) - return ["", "", ""] if Gem::Platform::RUBY == platform - platform.to_a.map {|part| part || "" } - end - - private - - # returns an integer \in (-\infty, 0] - # a number closer to 0 means the dependency is less constraining - # - # dependencies w/ 0 or 1 possibilities (ignoring version requirements) - # are given very negative values, so they _always_ sort first, - # before dependencies that are unconstrained - def amount_constrained(dependency) - @amount_constrained ||= {} - @amount_constrained[dependency.name] ||= begin - if (base = @base[dependency.name]) && !base.empty? - dependency.requirement.satisfied_by?(base.first.version) ? 0 : 1 - else - all = index_for(dependency).search(dependency.name).size - - if all <= 1 - all - 1_000_000 - else - search = search_for(dependency) - search = @prerelease_specified[dependency.name] ? search.count : search.count {|s| !s.version.prerelease? } - search - all - end - end - end - end - - def verify_gemfile_dependencies_are_found!(requirements) - requirements.each do |requirement| - name = requirement.name - next if name == "bundler" - next unless search_for(requirement).empty? - - cache_message = begin - " or in gems cached in #{Bundler.settings.app_cache_path}" if Bundler.app_cache.exist? - rescue GemfileNotFound - nil - end - - if (base = @base[name]) && !base.empty? - version = base.first.version - message = "You have requested:\n" \ - " #{name} #{requirement.requirement}\n\n" \ - "The bundle currently has #{name} locked at #{version}.\n" \ - "Try running `bundle update #{name}`\n\n" \ - "If you are updating multiple gems in your Gemfile at once,\n" \ - "try passing them all to `bundle update`" - elsif source = @source_requirements[name] - specs = source.specs[name] - versions_with_platforms = specs.map {|s| [s.version, s.platform] } - message = String.new("Could not find gem '#{SharedHelpers.pretty_dependency(requirement)}' in #{source}#{cache_message}.\n") - message << if versions_with_platforms.any? - "The source contains '#{name}' at: #{formatted_versions_with_platforms(versions_with_platforms)}" - else - "The source does not contain any versions of '#{name}'" - end - else - message = "Could not find gem '#{requirement}' in any of the gem sources " \ - "listed in your Gemfile#{cache_message}." - end - raise GemNotFound, message - end - end - - def formatted_versions_with_platforms(versions_with_platforms) - version_platform_strs = versions_with_platforms.map do |vwp| - version = vwp.first - platform = vwp.last - version_platform_str = String.new(version.to_s) - version_platform_str << " #{platform}" unless platform.nil? || platform == Gem::Platform::RUBY - version_platform_str - end - version_platform_strs.join(", ") - end - - def version_conflict_message(e) - e.message_with_trees( - :solver_name => "Bundler", - :possibility_type => "gem", - :reduce_trees => lambda do |trees| - # bail out if tree size is too big for Array#combination to make any sense - return trees if trees.size > 15 - maximal = 1.upto(trees.size).map do |size| - trees.map(&:last).flatten(1).combination(size).to_a - end.flatten(1).select do |deps| - Bundler::VersionRanges.empty?(*Bundler::VersionRanges.for_many(deps.map(&:requirement))) - end.min_by(&:size) - trees.reject! {|t| !maximal.include?(t.last) } if maximal - - trees = trees.sort_by {|t| t.flatten.map(&:to_s) } - trees.uniq! {|t| t.flatten.map {|dep| [dep.name, dep.requirement] } } - - trees.sort_by {|t| t.reverse.map(&:name) } - end, - :printable_requirement => lambda {|req| SharedHelpers.pretty_dependency(req) }, - :additional_message_for_conflict => lambda do |o, name, conflict| - if name == "bundler" - o << %(\n Current Bundler version:\n bundler (#{Bundler::VERSION})) - other_bundler_required = !conflict.requirement.requirement.satisfied_by?(Gem::Version.new Bundler::VERSION) - end - - if name == "bundler" && other_bundler_required - o << "\n" - o << "This Gemfile requires a different version of Bundler.\n" - o << "Perhaps you need to update Bundler by running `gem install bundler`?\n" - end - if conflict.locked_requirement - o << "\n" - o << %(Running `bundle update` will rebuild your snapshot from scratch, using only\n) - o << %(the gems in your Gemfile, which may resolve the conflict.\n) - elsif !conflict.existing - o << "\n" - - relevant_sources = if conflict.requirement.source - [conflict.requirement.source] - elsif conflict.requirement.all_sources - conflict.requirement.all_sources - elsif @lockfile_uses_separate_rubygems_sources - # every conflict should have an explicit group of sources when we - # enforce strict pinning - raise "no source set for #{conflict}" - else - [] - end.compact.map(&:to_s).uniq.sort - - o << "Could not find gem '#{SharedHelpers.pretty_dependency(conflict.requirement)}'" - if conflict.requirement_trees.first.size > 1 - o << ", which is required by " - o << "gem '#{SharedHelpers.pretty_dependency(conflict.requirement_trees.first[-2])}'," - end - o << " " - - o << if relevant_sources.empty? - "in any of the sources.\n" - else - "in any of the relevant sources:\n #{relevant_sources * "\n "}\n" - end - end - end, - :version_for_spec => lambda {|spec| spec.version } - ) - end - end -end diff --git a/lib/bundler/resolver/spec_group.rb b/lib/bundler/resolver/spec_group.rb deleted file mode 100644 index 9c10a4b733..0000000000 --- a/lib/bundler/resolver/spec_group.rb +++ /dev/null @@ -1,111 +0,0 @@ -# frozen_string_literal: true - -module Bundler - class Resolver - class SpecGroup - include GemHelpers - - attr_accessor :name, :version, :source - attr_accessor :ignores_bundler_dependencies - - def initialize(all_specs) - raise ArgumentError, "cannot initialize with an empty value" unless exemplary_spec = all_specs.first - @name = exemplary_spec.name - @version = exemplary_spec.version - @source = exemplary_spec.source - - @required_by = [] - @activated_platforms = [] - @dependencies = nil - @specs = Hash.new do |specs, platform| - specs[platform] = select_best_platform_match(all_specs, platform) - end - @ignores_bundler_dependencies = true - end - - def to_specs - @activated_platforms.map do |p| - next unless s = @specs[p] - lazy_spec = LazySpecification.new(name, version, s.platform, source) - lazy_spec.dependencies.replace s.dependencies - lazy_spec - end.compact - end - - def activate_platform!(platform) - return unless for?(platform) - return if @activated_platforms.include?(platform) - @activated_platforms << platform - end - - def for?(platform) - spec = @specs[platform] - !spec.nil? - end - - def to_s - @to_s ||= "#{name} (#{version})" - end - - def dependencies_for_activated_platforms - dependencies = @activated_platforms.map {|p| __dependencies[p] } - metadata_dependencies = @activated_platforms.map do |platform| - metadata_dependencies(@specs[platform], platform) - end - dependencies.concat(metadata_dependencies).flatten - end - - def platforms_for_dependency_named(dependency) - __dependencies.select {|_, deps| deps.map(&:name).include? dependency }.keys - end - - def ==(other) - return unless other.is_a?(SpecGroup) - name == other.name && - version == other.version && - source == other.source - end - - def eql?(other) - name.eql?(other.name) && - version.eql?(other.version) && - source.eql?(other.source) - end - - def hash - to_s.hash ^ source.hash - end - - private - - def __dependencies - @dependencies = Hash.new do |dependencies, platform| - dependencies[platform] = [] - if spec = @specs[platform] - spec.dependencies.each do |dep| - next if dep.type == :development - next if @ignores_bundler_dependencies && dep.name == "bundler".freeze - dependencies[platform] << DepProxy.new(dep, platform) - end - end - dependencies[platform] - end - end - - def metadata_dependencies(spec, platform) - return [] unless spec - # Only allow endpoint specifications since they won't hit the network to - # fetch the full gemspec when calling required_ruby_version - return [] if !spec.is_a?(EndpointSpecification) && !spec.is_a?(Gem::Specification) - dependencies = [] - if !spec.required_ruby_version.nil? && !spec.required_ruby_version.none? - dependencies << DepProxy.new(Gem::Dependency.new("ruby\0", spec.required_ruby_version), platform) - end - if !spec.required_rubygems_version.nil? && !spec.required_rubygems_version.none? - dependencies << DepProxy.new(Gem::Dependency.new("rubygems\0", spec.required_rubygems_version), platform) - end - dependencies - end - end - end -end diff --git a/lib/bundler/retry.rb b/lib/bundler/retry.rb deleted file mode 100644 index 244606dcc9..0000000000 --- a/lib/bundler/retry.rb +++ /dev/null @@ -1,66 +0,0 @@ -# frozen_string_literal: true - -module Bundler - # General purpose class for retrying code that may fail - class Retry - attr_accessor :name, :total_runs, :current_run - - class << self - def default_attempts - default_retries + 1 - end - alias_method :attempts, :default_attempts - - def default_retries - Bundler.settings[:retry] - end - end - - def initialize(name, exceptions = nil, retries = self.class.default_retries) - @name = name - @retries = retries - @exceptions = Array(exceptions) || [] - @total_runs = @retries + 1 # will run once, then upto attempts.times - end - - def attempt(&block) - @current_run = 0 - @failed = false - @error = nil - run(&block) while keep_trying? - @result - end - alias_method :attempts, :attempt - - private - - def run(&block) - @failed = false - @current_run += 1 - @result = block.call - rescue => e - fail_attempt(e) - end - - def fail_attempt(e) - @failed = true - if last_attempt? || @exceptions.any? {|k| e.is_a?(k) } - Bundler.ui.info "" unless Bundler.ui.debug? - raise e - end - return true unless name - Bundler.ui.info "" unless Bundler.ui.debug? # Add new line incase dots preceded this - Bundler.ui.warn "Retrying #{name} due to error (#{current_run.next}/#{total_runs}): #{e.class} #{e.message}", Bundler.ui.debug? - end - - def keep_trying? - return true if current_run.zero? - return false if last_attempt? - return true if @failed - end - - def last_attempt? - current_run >= total_runs - end - end -end diff --git a/lib/bundler/ruby_dsl.rb b/lib/bundler/ruby_dsl.rb deleted file mode 100644 index f6ba220cd5..0000000000 --- a/lib/bundler/ruby_dsl.rb +++ /dev/null @@ -1,18 +0,0 @@ -# frozen_string_literal: true - -module Bundler - module RubyDsl - def ruby(*ruby_version) - options = ruby_version.last.is_a?(Hash) ? ruby_version.pop : {} - ruby_version.flatten! - raise GemfileError, "Please define :engine_version" if options[:engine] && options[:engine_version].nil? - raise GemfileError, "Please define :engine" if options[:engine_version] && options[:engine].nil? - - if options[:engine] == "ruby" && options[:engine_version] && - ruby_version != Array(options[:engine_version]) - raise GemfileEvalError, "ruby_version must match the :engine_version for MRI" - end - @ruby_version = RubyVersion.new(ruby_version, options[:patchlevel], options[:engine], options[:engine_version]) - end - end -end diff --git a/lib/bundler/ruby_version.rb b/lib/bundler/ruby_version.rb deleted file mode 100644 index d4e1bdbfd5..0000000000 --- a/lib/bundler/ruby_version.rb +++ /dev/null @@ -1,152 +0,0 @@ -# frozen_string_literal: true - -module Bundler - class RubyVersion - attr_reader :versions, - :patchlevel, - :engine, - :engine_versions, - :gem_version, - :engine_gem_version - - def initialize(versions, patchlevel, engine, engine_version) - # The parameters to this method must satisfy the - # following constraints, which are verified in - # the DSL: - # - # * If an engine is specified, an engine version - # must also be specified - # * If an engine version is specified, an engine - # must also be specified - # * If the engine is "ruby", the engine version - # must not be specified, or the engine version - # specified must match the version. - - @versions = Array(versions).map do |v| - op, v = Gem::Requirement.parse(v) - op == "=" ? v.to_s : "#{op} #{v}" - end - - @gem_version = Gem::Requirement.create(@versions.first).requirements.first.last - @input_engine = engine && engine.to_s - @engine = engine && engine.to_s || "ruby" - @engine_versions = (engine_version && Array(engine_version)) || @versions - @engine_gem_version = Gem::Requirement.create(@engine_versions.first).requirements.first.last - @patchlevel = patchlevel - end - - def to_s(versions = self.versions) - output = String.new("ruby #{versions_string(versions)}") - output << "p#{patchlevel}" if patchlevel - output << " (#{engine} #{versions_string(engine_versions)})" unless engine == "ruby" - - output - end - - # @private - PATTERN = / - ruby\s - ([\d.]+) # ruby version - (?:p(-?\d+))? # optional patchlevel - (?:\s\((\S+)\s(.+)\))? # optional engine info - /xo - - # Returns a RubyVersion from the given string. - # @param [String] the version string to match. - # @return [RubyVersion,Nil] The version if the string is a valid RubyVersion - # description, and nil otherwise. - def self.from_string(string) - new($1, $2, $3, $4) if string =~ PATTERN - end - - def single_version_string - to_s(gem_version) - end - - def ==(other) - versions == other.versions && - engine == other.engine && - engine_versions == other.engine_versions && - patchlevel == other.patchlevel - end - - def host - @host ||= [ - RbConfig::CONFIG["host_cpu"], - RbConfig::CONFIG["host_vendor"], - RbConfig::CONFIG["host_os"] - ].join("-") - end - - # Returns a tuple of these things: - # [diff, this, other] - # The priority of attributes are - # 1. engine - # 2. ruby_version - # 3. engine_version - def diff(other) - raise ArgumentError, "Can only diff with a RubyVersion, not a #{other.class}" unless other.is_a?(RubyVersion) - if engine != other.engine && @input_engine - [:engine, engine, other.engine] - elsif versions.empty? || !matches?(versions, other.gem_version) - [:version, versions_string(versions), versions_string(other.versions)] - elsif @input_engine && !matches?(engine_versions, other.engine_gem_version) - [:engine_version, versions_string(engine_versions), versions_string(other.engine_versions)] - elsif patchlevel && (!patchlevel.is_a?(String) || !other.patchlevel.is_a?(String) || !matches?(patchlevel, other.patchlevel)) - [:patchlevel, patchlevel, other.patchlevel] - end - end - - def versions_string(versions) - Array(versions).join(", ") - end - - def self.system - ruby_engine = if defined?(RUBY_ENGINE) && !RUBY_ENGINE.nil? - RUBY_ENGINE.dup - else - # not defined in ruby 1.8.7 - "ruby" - end - # :sob: mocking RUBY_VERSION breaks stuff on 1.8.7 - ruby_version = ENV.fetch("BUNDLER_SPEC_RUBY_VERSION") { RUBY_VERSION }.dup - ruby_engine_version = case ruby_engine - when "ruby" - ruby_version - when "rbx" - Rubinius::VERSION.dup - when "jruby" - JRUBY_VERSION.dup - else - raise BundlerError, "RUBY_ENGINE value #{RUBY_ENGINE} is not recognized" - end - patchlevel = RUBY_PATCHLEVEL.to_s - - @ruby_version ||= RubyVersion.new(ruby_version, patchlevel, ruby_engine, ruby_engine_version) - end - - def to_gem_version_with_patchlevel - @gem_version_with_patch ||= begin - Gem::Version.create("#{@gem_version}.#{@patchlevel}") - rescue ArgumentError - @gem_version - end - end - - def exact? - return @exact if defined?(@exact) - @exact = versions.all? {|v| Gem::Requirement.create(v).exact? } - end - - private - - def matches?(requirements, version) - # Handles RUBY_PATCHLEVEL of -1 for instances like ruby-head - return requirements == version if requirements.to_s == "-1" || version.to_s == "-1" - - Array(requirements).all? do |requirement| - Gem::Requirement.create(requirement).satisfied_by?(Gem::Version.create(version)) - end - end - end -end diff --git a/lib/bundler/rubygems_ext.rb b/lib/bundler/rubygems_ext.rb deleted file mode 100644 index e9f0eac355..0000000000 --- a/lib/bundler/rubygems_ext.rb +++ /dev/null @@ -1,210 +0,0 @@ -# frozen_string_literal: true - -require "pathname" - -if defined?(Gem::QuickLoader) - # Gem Prelude makes me a sad panda :'( - Gem::QuickLoader.load_full_rubygems_library -end - -require "rubygems" -require "rubygems/specification" - -begin - # Possible use in Gem::Specification#source below and require - # shouldn't be deferred. - require "rubygems/source" -rescue LoadError - # Not available before RubyGems 2.0.0, ignore - nil -end - -require "bundler/match_platform" - -module Gem - @loaded_stacks = Hash.new {|h, k| h[k] = [] } - - class Specification - attr_accessor :remote, :location, :relative_loaded_from - - if instance_methods(false).map(&:to_sym).include?(:source) - remove_method :source - attr_writer :source - def source - (defined?(@source) && @source) || Gem::Source::Installed.new - end - else - attr_accessor :source - end - - alias_method :rg_full_gem_path, :full_gem_path - alias_method :rg_loaded_from, :loaded_from - - attr_writer :full_gem_path unless instance_methods.include?(:full_gem_path=) - - def full_gem_path - # this cannot check source.is_a?(Bundler::Plugin::API::Source) - # because that _could_ trip the autoload, and if there are unresolved - # gems at that time, this method could be called inside another require, - # thus raising with that constant being undefined. Better to check a method - if source.respond_to?(:path) || (source.respond_to?(:bundler_plugin_api_source?) && source.bundler_plugin_api_source?) - Pathname.new(loaded_from).dirname.expand_path(source.root).to_s.untaint - else - rg_full_gem_path - end - end - - def loaded_from - if relative_loaded_from - source.path.join(relative_loaded_from).to_s - else - rg_loaded_from - end - end - - def load_paths - return full_require_paths if respond_to?(:full_require_paths) - - require_paths.map do |require_path| - if require_path.include?(full_gem_path) - require_path - else - File.join(full_gem_path, require_path) - end - end - end - - if method_defined?(:extension_dir) - alias_method :rg_extension_dir, :extension_dir - def extension_dir - @bundler_extension_dir ||= if source.respond_to?(:extension_dir_name) - File.expand_path(File.join(extensions_dir, source.extension_dir_name)) - else - rg_extension_dir - end - end - end - - # RubyGems 1.8+ used only. - methods = instance_methods(false) - gem_dir = methods.first.is_a?(String) ? "gem_dir" : :gem_dir - remove_method :gem_dir if methods.include?(gem_dir) - def gem_dir - full_gem_path - end - - def groups - @groups ||= [] - end - - def git_version - return unless loaded_from && source.is_a?(Bundler::Source::Git) - " #{source.revision[0..6]}" - end - - def to_gemfile(path = nil) - gemfile = String.new("source 'https://rubygems.org'\n") - gemfile << dependencies_to_gemfile(nondevelopment_dependencies) - unless development_dependencies.empty? - gemfile << "\n" - gemfile << dependencies_to_gemfile(development_dependencies, :development) - end - gemfile - end - - def nondevelopment_dependencies - dependencies - development_dependencies - end - - private - - def dependencies_to_gemfile(dependencies, group = nil) - gemfile = String.new - if dependencies.any? - gemfile << "group :#{group} do\n" if group - dependencies.each do |dependency| - gemfile << " " if group - gemfile << %(gem "#{dependency.name}") - req = dependency.requirements_list.first - gemfile << %(, "#{req}") if req - gemfile << "\n" - end - gemfile << "end\n" if group - end - gemfile - end - end - - class Dependency - attr_accessor :source, :groups, :all_sources - - alias_method :eql?, :== - - def encode_with(coder) - to_yaml_properties.each do |ivar| - coder[ivar.to_s.sub(/^@/, "")] = instance_variable_get(ivar) - end - end - - def to_yaml_properties - instance_variables.reject {|p| ["@source", "@groups", "@all_sources"].include?(p.to_s) } - end - - def to_lock - out = String.new(" #{name}") - unless requirement.none? - reqs = requirement.requirements.map {|o, v| "#{o} #{v}" }.sort.reverse - out << " (#{reqs.join(", ")})" - end - out - end - - # Backport of performance enhancement added to RubyGems 1.4 - def matches_spec?(spec) - # name can be a Regexp, so use === - return false unless name === spec.name - return true if requirement.none? - - requirement.satisfied_by?(spec.version) - end unless allocate.respond_to?(:matches_spec?) - end - - class Requirement - # Backport of performance enhancement added to RubyGems 1.4 - def none? - # note that it might be tempting to replace with with RubyGems 2.0's - # improved implementation. Don't. It requires `DefaultRequirement` to be - # defined, and more importantantly, these overrides are not used when the - # running RubyGems defines these methods - to_s == ">= 0" - end unless allocate.respond_to?(:none?) - - # Backport of performance enhancement added to RubyGems 2.2 - def exact? - return false unless @requirements.size == 1 - @requirements[0][0] == "=" - end unless allocate.respond_to?(:exact?) - end - - class Platform - JAVA = Gem::Platform.new("java") unless defined?(JAVA) - MSWIN = Gem::Platform.new("mswin32") unless defined?(MSWIN) - MSWIN64 = Gem::Platform.new("mswin64") unless defined?(MSWIN64) - MINGW = Gem::Platform.new("x86-mingw32") unless defined?(MINGW) - X64_MINGW = Gem::Platform.new("x64-mingw32") unless defined?(X64_MINGW) - - undef_method :hash if method_defined? :hash - def hash - @cpu.hash ^ @os.hash ^ @version.hash - end - - undef_method :eql? if method_defined? :eql? - alias_method :eql?, :== - end -end - -module Gem - class Specification - include ::Bundler::MatchPlatform - end -end diff --git a/lib/bundler/rubygems_gem_installer.rb b/lib/bundler/rubygems_gem_installer.rb deleted file mode 100644 index 2b7fa8e0f6..0000000000 --- a/lib/bundler/rubygems_gem_installer.rb +++ /dev/null @@ -1,99 +0,0 @@ -# frozen_string_literal: true - -require "rubygems/installer" - -module Bundler - class RubyGemsGemInstaller < Gem::Installer - unless respond_to?(:at) - def self.at(*args) - new(*args) - end - end - - def check_executable_overwrite(filename) - # Bundler needs to install gems regardless of binstub overwriting - end - - def pre_install_checks - super && validate_bundler_checksum(options[:bundler_expected_checksum]) - end - - def build_extensions - extension_cache_path = options[:bundler_extension_cache_path] - return super unless extension_cache_path && extension_dir = Bundler.rubygems.spec_extension_dir(spec) - - extension_dir = Pathname.new(extension_dir) - build_complete = SharedHelpers.filesystem_access(extension_cache_path.join("gem.build_complete"), :read, &:file?) - if build_complete && !options[:force] - SharedHelpers.filesystem_access(extension_dir.parent, &:mkpath) - SharedHelpers.filesystem_access(extension_cache_path) do - FileUtils.cp_r extension_cache_path, spec.extension_dir - end - else - super - if extension_dir.directory? # not made for gems without extensions - SharedHelpers.filesystem_access(extension_cache_path.parent, &:mkpath) - SharedHelpers.filesystem_access(extension_cache_path) do - FileUtils.cp_r extension_dir, extension_cache_path - end - end - end - end - - private - - def validate_bundler_checksum(checksum) - return true if Bundler.settings[:disable_checksum_validation] - return true unless checksum - return true unless source = @package.instance_variable_get(:@gem) - return true unless source.respond_to?(:with_read_io) - digest = source.with_read_io do |io| - digest = SharedHelpers.digest(:SHA256).new - digest << io.read(16_384) until io.eof? - io.rewind - send(checksum_type(checksum), digest) - end - unless digest == checksum - raise SecurityError, <<-MESSAGE - Bundler cannot continue installing #{spec.name} (#{spec.version}). - The checksum for the downloaded `#{spec.full_name}.gem` does not match \ - the checksum given by the server. This means the contents of the downloaded \ - gem is different from what was uploaded to the server, and could be a potential security issue. - - To resolve this issue: - 1. delete the downloaded gem located at: `#{spec.gem_dir}/#{spec.full_name}.gem` - 2. run `bundle install` - - If you wish to continue installing the downloaded gem, and are certain it does not pose a \ - security issue despite the mismatching checksum, do the following: - 1. run `bundle config disable_checksum_validation true` to turn off checksum verification - 2. run `bundle install` - - (More info: The expected SHA256 checksum was #{checksum.inspect}, but the \ - checksum for the downloaded gem was #{digest.inspect}.) - MESSAGE - end - true - end - - def checksum_type(checksum) - case checksum.length - when 64 then :hexdigest! - when 44 then :base64digest! - else raise InstallError, "The given checksum for #{spec.full_name} (#{checksum.inspect}) is not a valid SHA256 hexdigest nor base64digest" - end - end - - def hexdigest!(digest) - digest.hexdigest! - end - - def base64digest!(digest) - if digest.respond_to?(:base64digest!) - digest.base64digest! - else - [digest.digest!].pack("m0") - end - end - end -end diff --git a/lib/bundler/rubygems_integration.rb b/lib/bundler/rubygems_integration.rb deleted file mode 100644 index 0f16b6231d..0000000000 --- a/lib/bundler/rubygems_integration.rb +++ /dev/null @@ -1,892 +0,0 @@ -# frozen_string_literal: true - -require "monitor" -require "rubygems" -require "rubygems/config_file" - -module Bundler - class RubygemsIntegration - if defined?(Gem::Ext::Builder::CHDIR_MONITOR) - EXT_LOCK = Gem::Ext::Builder::CHDIR_MONITOR - else - EXT_LOCK = Monitor.new - end - - def self.version - @version ||= Gem::Version.new(Gem::VERSION) - end - - def self.provides?(req_str) - Gem::Requirement.new(req_str).satisfied_by?(version) - end - - def initialize - @replaced_methods = {} - end - - def version - self.class.version - end - - def provides?(req_str) - self.class.provides?(req_str) - end - - def build_args - Gem::Command.build_args - end - - def build_args=(args) - Gem::Command.build_args = args - end - - def load_path_insert_index - Gem.load_path_insert_index - end - - def loaded_specs(name) - Gem.loaded_specs[name] - end - - def mark_loaded(spec) - if spec.respond_to?(:activated=) - current = Gem.loaded_specs[spec.name] - current.activated = false if current - spec.activated = true - end - Gem.loaded_specs[spec.name] = spec - end - - def validate(spec) - Bundler.ui.silence { spec.validate(false) } - rescue Gem::InvalidSpecificationException => e - error_message = "The gemspec at #{spec.loaded_from} is not valid. Please fix this gemspec.\n" \ - "The validation error was '#{e.message}'\n" - raise Gem::InvalidSpecificationException.new(error_message) - rescue Errno::ENOENT - nil - end - - def set_installed_by_version(spec, installed_by_version = Gem::VERSION) - return unless spec.respond_to?(:installed_by_version=) - spec.installed_by_version = Gem::Version.create(installed_by_version) - end - - def spec_missing_extensions?(spec, default = true) - return spec.missing_extensions? if spec.respond_to?(:missing_extensions?) - - return false if spec_default_gem?(spec) - return false if spec.extensions.empty? - - default - end - - def spec_default_gem?(spec) - spec.respond_to?(:default_gem?) && spec.default_gem? - end - - def spec_matches_for_glob(spec, glob) - return spec.matches_for_glob(glob) if spec.respond_to?(:matches_for_glob) - - spec.load_paths.map do |lp| - Dir["#{lp}/#{glob}#{suffix_pattern}"] - end.flatten(1) - end - - def spec_extension_dir(spec) - return unless spec.respond_to?(:extension_dir) - spec.extension_dir - end - - def stub_set_spec(stub, spec) - stub.instance_variable_set(:@spec, spec) - end - - def path(obj) - obj.to_s - end - - def platforms - return [Gem::Platform::RUBY] if Bundler.settings[:force_ruby_platform] - Gem.platforms - end - - def configuration - require "bundler/psyched_yaml" - Gem.configuration - rescue Gem::SystemExitException, LoadError => e - Bundler.ui.error "#{e.class}: #{e.message}" - Bundler.ui.trace e - raise - rescue YamlLibrarySyntaxError => e - raise YamlSyntaxError.new(e, "Your RubyGems configuration, which is " \ - "usually located in ~/.gemrc, contains invalid YAML syntax.") - end - - def ruby_engine - Gem.ruby_engine - end - - def read_binary(path) - Gem.read_binary(path) - end - - def inflate(obj) - Gem.inflate(obj) - end - - def sources=(val) - # Gem.configuration creates a new Gem::ConfigFile, which by default will read ~/.gemrc - # If that file exists, its settings (including sources) will overwrite the values we - # are about to set here. In order to avoid that, we force memoizing the config file now. - configuration - - Gem.sources = val - end - - def sources - Gem.sources - end - - def gem_dir - Gem.dir - end - - def gem_bindir - Gem.bindir - end - - def user_home - Gem.user_home - end - - def gem_path - Gem.path - end - - def reset - Gem::Specification.reset - end - - def post_reset_hooks - Gem.post_reset_hooks - end - - def suffix_pattern - Gem.suffix_pattern - end - - def gem_cache - gem_path.map {|p| File.expand_path("cache", p) } - end - - def spec_cache_dirs - @spec_cache_dirs ||= begin - dirs = gem_path.map {|dir| File.join(dir, "specifications") } - dirs << Gem.spec_cache_dir if Gem.respond_to?(:spec_cache_dir) # Not in RubyGems 2.0.3 or earlier - dirs.uniq.select {|dir| File.directory? dir } - end - end - - def marshal_spec_dir - Gem::MARSHAL_SPEC_DIR - end - - def config_map - Gem::ConfigMap - end - - def repository_subdirectories - %w[cache doc gems specifications] - end - - def clear_paths - Gem.clear_paths - end - - def bin_path(gem, bin, ver) - Gem.bin_path(gem, bin, ver) - end - - def path_separator - File::PATH_SEPARATOR - end - - def preserve_paths - # this is a no-op outside of RubyGems 1.8 - yield - end - - def loaded_gem_paths - # RubyGems 2.2+ can put binary extension into dedicated folders, - # therefore use RubyGems facilities to obtain their load paths. - if Gem::Specification.method_defined? :full_require_paths - loaded_gem_paths = Gem.loaded_specs.map {|_, s| s.full_require_paths } - loaded_gem_paths.flatten - else - $LOAD_PATH.select do |p| - Bundler.rubygems.gem_path.any? {|gp| p =~ /^#{Regexp.escape(gp)}/ } - end - end - end - - def load_plugins - Gem.load_plugins if Gem.respond_to?(:load_plugins) - end - - def load_plugin_files(files) - Gem.load_plugin_files(files) if Gem.respond_to?(:load_plugin_files) - end - - def ui=(obj) - Gem::DefaultUserInteraction.ui = obj - end - - def ext_lock - EXT_LOCK - end - - def fetch_specs(all, pre, &blk) - require "rubygems/spec_fetcher" - specs = Gem::SpecFetcher.new.list(all, pre) - specs.each { yield } if block_given? - specs - end - - def fetch_prerelease_specs - fetch_specs(false, true) - rescue Gem::RemoteFetcher::FetchError - {} # if we can't download them, there aren't any - end - - # TODO: This is for older versions of RubyGems... should we support the - # X-Gemfile-Source header on these old versions? - # Maybe the newer implementation will work on older RubyGems? - # It seems difficult to keep this implementation and still send the header. - def fetch_all_remote_specs(remote) - old_sources = Bundler.rubygems.sources - Bundler.rubygems.sources = [remote.uri.to_s] - # Fetch all specs, minus prerelease specs - spec_list = fetch_specs(true, false) - # Then fetch the prerelease specs - fetch_prerelease_specs.each {|k, v| spec_list[k].concat(v) } - - spec_list.values.first - ensure - Bundler.rubygems.sources = old_sources - end - - def with_build_args(args) - ext_lock.synchronize do - old_args = build_args - begin - self.build_args = args - yield - ensure - self.build_args = old_args - end - end - end - - def install_with_build_args(args) - with_build_args(args) { yield } - end - - def gem_from_path(path, policy = nil) - require "rubygems/format" - Gem::Format.from_file_by_path(path, policy) - end - - def spec_from_gem(path, policy = nil) - require "rubygems/security" - require "bundler/psyched_yaml" - gem_from_path(path, security_policies[policy]).spec - rescue Gem::Package::FormatError - raise GemspecError, "Could not read gem at #{path}. It may be corrupted." - rescue Exception, Gem::Exception, Gem::Security::Exception => e - if e.is_a?(Gem::Security::Exception) || - e.message =~ /unknown trust policy|unsigned gem/i || - e.message =~ /couldn't verify (meta)?data signature/i - raise SecurityError, - "The gem #{File.basename(path, ".gem")} can't be installed because " \ - "the security policy didn't allow it, with the message: #{e.message}" - else - raise e - end - end - - def build(spec, skip_validation = false) - require "rubygems/builder" - Gem::Builder.new(spec).build - end - - def build_gem(gem_dir, spec) - build(spec) - end - - def download_gem(spec, uri, path) - uri = Bundler.settings.mirror_for(uri) - fetcher = Gem::RemoteFetcher.new(configuration[:http_proxy]) - Bundler::Retry.new("download gem from #{uri}").attempts do - fetcher.download(spec, uri, path) - end - end - - def security_policy_keys - %w[High Medium Low AlmostNo No].map {|level| "#{level}Security" } - end - - def security_policies - @security_policies ||= begin - require "rubygems/security" - Gem::Security::Policies - rescue LoadError, NameError - {} - end - end - - def reverse_rubygems_kernel_mixin - # Disable rubygems' gem activation system - kernel = (class << ::Kernel; self; end) - [kernel, ::Kernel].each do |k| - if k.private_method_defined?(:gem_original_require) - redefine_method(k, :require, k.instance_method(:gem_original_require)) - end - end - end - - def binstubs_call_gem? - true - end - - def stubs_provide_full_functionality? - false - end - - def replace_gem(specs, specs_by_name) - reverse_rubygems_kernel_mixin - - executables = nil - - kernel = (class << ::Kernel; self; end) - [kernel, ::Kernel].each do |kernel_class| - redefine_method(kernel_class, :gem) do |dep, *reqs| - executables ||= specs.map(&:executables).flatten if ::Bundler.rubygems.binstubs_call_gem? - if executables && executables.include?(File.basename(caller.first.split(":").first)) - break - end - - reqs.pop if reqs.last.is_a?(Hash) - - unless dep.respond_to?(:name) && dep.respond_to?(:requirement) - dep = Gem::Dependency.new(dep, reqs) - end - - if spec = specs_by_name[dep.name] - return true if dep.matches_spec?(spec) - end - - message = if spec.nil? - "#{dep.name} is not part of the bundle." \ - " Add it to your #{Bundler.default_gemfile.basename}." - else - "can't activate #{dep}, already activated #{spec.full_name}. " \ - "Make sure all dependencies are added to Gemfile." - end - - e = Gem::LoadError.new(message) - e.name = dep.name - if e.respond_to?(:requirement=) - e.requirement = dep.requirement - elsif e.respond_to?(:version_requirement=) - e.version_requirement = dep.requirement - end - raise e - end - - # backwards compatibility shim, see https://github.com/bundler/bundler/issues/5102 - kernel_class.send(:public, :gem) if Bundler.feature_flag.setup_makes_kernel_gem_public? - end - end - - def stub_source_index(specs) - Gem::SourceIndex.send(:alias_method, :old_initialize, :initialize) - redefine_method(Gem::SourceIndex, :initialize) do |*args| - @gems = {} - # You're looking at this thinking: Oh! This is how I make those - # rubygems deprecations go away! - # - # You'd be correct BUT using of this method in production code - # must be approved by the rubygems team itself! - # - # This is your warning. If you use this and don't have approval - # we can't protect you. - # - Deprecate.skip_during do - self.spec_dirs = *args - add_specs(*specs) - end - end - end - - # Used to make bin stubs that are not created by bundler work - # under bundler. The new Gem.bin_path only considers gems in - # +specs+ - def replace_bin_path(specs, specs_by_name) - gem_class = (class << Gem; self; end) - - redefine_method(gem_class, :find_spec_for_exe) do |gem_name, *args| - exec_name = args.first - - spec_with_name = specs_by_name[gem_name] - spec = if exec_name - if spec_with_name && spec_with_name.executables.include?(exec_name) - spec_with_name - else - specs.find {|s| s.executables.include?(exec_name) } - end - else - spec_with_name - end - - unless spec - message = "can't find executable #{exec_name} for gem #{gem_name}" - if !exec_name || spec_with_name.nil? - message += ". #{gem_name} is not currently included in the bundle, " \ - "perhaps you meant to add it to your #{Bundler.default_gemfile.basename}?" - end - raise Gem::Exception, message - end - - raise Gem::Exception, "no default executable for #{spec.full_name}" unless exec_name ||= spec.default_executable - - unless spec.name == gem_name - Bundler::SharedHelpers.major_deprecation 2, - "Bundler is using a binstub that was created for a different gem (#{spec.name}).\n" \ - "You should run `bundle binstub #{gem_name}` " \ - "to work around a system/bundle conflict." - end - spec - end - - redefine_method(gem_class, :activate_bin_path) do |name, *args| - exec_name = args.first - return ENV["BUNDLE_BIN_PATH"] if exec_name == "bundle" - - # Copy of Rubygems activate_bin_path impl - requirement = args.last - spec = find_spec_for_exe name, exec_name, [requirement] - - gem_bin = File.join(spec.full_gem_path, spec.bindir, exec_name) - gem_from_path_bin = File.join(File.dirname(spec.loaded_from), spec.bindir, exec_name) - File.exist?(gem_bin) ? gem_bin : gem_from_path_bin - end - - redefine_method(gem_class, :bin_path) do |name, *args| - exec_name = args.first - return ENV["BUNDLE_BIN_PATH"] if exec_name == "bundle" - - spec = find_spec_for_exe(name, *args) - exec_name ||= spec.default_executable - - gem_bin = File.join(spec.full_gem_path, spec.bindir, exec_name) - gem_from_path_bin = File.join(File.dirname(spec.loaded_from), spec.bindir, exec_name) - File.exist?(gem_bin) ? gem_bin : gem_from_path_bin - end - end - - # Because Bundler has a static view of what specs are available, - # we don't #refresh, so stub it out. - def replace_refresh - gem_class = (class << Gem; self; end) - redefine_method(gem_class, :refresh) {} - end - - # Replace or hook into RubyGems to provide a bundlerized view - # of the world. - def replace_entrypoints(specs) - specs_by_name = specs.reduce({}) do |h, s| - h[s.name] = s - h - end - - replace_gem(specs, specs_by_name) - stub_rubygems(specs) - replace_bin_path(specs, specs_by_name) - replace_refresh - - Gem.clear_paths - end - - # This backports the correct segment generation code from RubyGems 1.4+ - # by monkeypatching it into the method in RubyGems 1.3.6 and 1.3.7. - def backport_segment_generation - redefine_method(Gem::Version, :segments) do - @segments ||= @version.scan(/[0-9]+|[a-z]+/i).map do |s| - /^\d+$/ =~ s ? s.to_i : s - end - end - end - - # This backport fixes the marshaling of @segments. - def backport_yaml_initialize - redefine_method(Gem::Version, :yaml_initialize) do |_, map| - @version = map["version"] - @segments = nil - @hash = nil - end - end - - # This backports base_dir which replaces installation path - # RubyGems 1.8+ - def backport_base_dir - redefine_method(Gem::Specification, :base_dir) do - return Gem.dir unless loaded_from - File.dirname File.dirname loaded_from - end - end - - def backport_cache_file - redefine_method(Gem::Specification, :cache_dir) do - @cache_dir ||= File.join base_dir, "cache" - end - - redefine_method(Gem::Specification, :cache_file) do - @cache_file ||= File.join cache_dir, "#{full_name}.gem" - end - end - - def backport_spec_file - redefine_method(Gem::Specification, :spec_dir) do - @spec_dir ||= File.join base_dir, "specifications" - end - - redefine_method(Gem::Specification, :spec_file) do - @spec_file ||= File.join spec_dir, "#{full_name}.gemspec" - end - end - - def undo_replacements - @replaced_methods.each do |(sym, klass), method| - redefine_method(klass, sym, method) - end - post_reset_hooks.reject! do |proc| - proc.binding.eval("__FILE__") == __FILE__ - end - @replaced_methods.clear - end - - def redefine_method(klass, method, unbound_method = nil, &block) - visibility = method_visibility(klass, method) - begin - if (instance_method = klass.instance_method(method)) && method != :initialize - # doing this to ensure we also get private methods - klass.send(:remove_method, method) - end - rescue NameError - # method isn't defined - nil - end - @replaced_methods[[method, klass]] = instance_method - if unbound_method - klass.send(:define_method, method, unbound_method) - klass.send(visibility, method) - elsif block - klass.send(:define_method, method, &block) - klass.send(visibility, method) - end - end - - def method_visibility(klass, method) - if klass.private_method_defined?(method) - :private - elsif klass.protected_method_defined?(method) - :protected - else - :public - end - end - - # RubyGems 1.4 through 1.6 - class Legacy < RubygemsIntegration - def initialize - super - backport_base_dir - backport_cache_file - backport_spec_file - backport_yaml_initialize - end - - def stub_rubygems(specs) - # RubyGems versions lower than 1.7 use SourceIndex#from_gems_in - source_index_class = (class << Gem::SourceIndex; self; end) - redefine_method(source_index_class, :from_gems_in) do |*args| - Gem::SourceIndex.new.tap do |source_index| - source_index.spec_dirs = *args - source_index.add_specs(*specs) - end - end - end - - def all_specs - Gem.source_index.gems.values - end - - def find_name(name) - Gem.source_index.find_name(name) - end - - def validate(spec) - # These versions of RubyGems always validate in "packaging" mode, - # which is too strict for the kinds of checks we care about. As a - # result, validation is disabled on versions of RubyGems below 1.7. - end - - def post_reset_hooks - [] - end - - def reset - end - end - - # RubyGems versions 1.3.6 and 1.3.7 - class Ancient < Legacy - def initialize - super - backport_segment_generation - end - end - - # RubyGems 1.7 - class Transitional < Legacy - def stub_rubygems(specs) - stub_source_index(specs) - end - - def validate(spec) - # Missing summary is downgraded to a warning in later versions, - # so we set it to an empty string to prevent an exception here. - spec.summary ||= "" - RubygemsIntegration.instance_method(:validate).bind(self).call(spec) - end - end - - # RubyGems 1.8.5-1.8.19 - class Modern < RubygemsIntegration - def stub_rubygems(specs) - Gem::Specification.all = specs - - Gem.post_reset do - Gem::Specification.all = specs - end - - stub_source_index(specs) - end - - def all_specs - Gem::Specification.to_a - end - - def find_name(name) - Gem::Specification.find_all_by_name name - end - end - - # RubyGems 1.8.0 to 1.8.4 - class AlmostModern < Modern - # RubyGems [>= 1.8.0, < 1.8.5] has a bug that changes Gem.dir whenever - # you call Gem::Installer#install with an :install_dir set. We have to - # change it back for our sudo mode to work. - def preserve_paths - old_dir = gem_dir - old_path = gem_path - yield - Gem.use_paths(old_dir, old_path) - end - end - - # RubyGems 1.8.20+ - class MoreModern < Modern - # RubyGems 1.8.20 and adds the skip_validation parameter, so that's - # when we start passing it through. - def build(spec, skip_validation = false) - require "rubygems/builder" - Gem::Builder.new(spec).build(skip_validation) - end - end - - # RubyGems 2.0 - class Future < RubygemsIntegration - def stub_rubygems(specs) - Gem::Specification.all = specs - - Gem.post_reset do - Gem::Specification.all = specs - end - - redefine_method((class << Gem; self; end), :finish_resolve) do |*| - [] - end - end - - def all_specs - Gem::Specification.to_a - end - - def find_name(name) - Gem::Specification.find_all_by_name name - end - - def fetch_specs(source, remote, name) - path = source + "#{name}.#{Gem.marshal_version}.gz" - fetcher = gem_remote_fetcher - fetcher.headers = { "X-Gemfile-Source" => remote.original_uri.to_s } if remote.original_uri - string = fetcher.fetch_path(path) - Bundler.load_marshal(string) - rescue Gem::RemoteFetcher::FetchError => e - # it's okay for prerelease to fail - raise e unless name == "prerelease_specs" - end - - def fetch_all_remote_specs(remote) - source = remote.uri.is_a?(URI) ? remote.uri : URI.parse(source.to_s) - - specs = fetch_specs(source, remote, "specs") - pres = fetch_specs(source, remote, "prerelease_specs") || [] - - specs.concat(pres) - end - - def download_gem(spec, uri, path) - uri = Bundler.settings.mirror_for(uri) - fetcher = gem_remote_fetcher - fetcher.headers = { "X-Gemfile-Source" => spec.remote.original_uri.to_s } if spec.remote.original_uri - Bundler::Retry.new("download gem from #{uri}").attempts do - fetcher.download(spec, uri, path) - end - end - - def gem_remote_fetcher - require "resolv" - proxy = configuration[:http_proxy] - dns = Resolv::DNS.new - Bundler::GemRemoteFetcher.new(proxy, dns) - end - - def gem_from_path(path, policy = nil) - require "rubygems/package" - p = Gem::Package.new(path) - p.security_policy = policy if policy - p - end - - def build(spec, skip_validation = false) - require "rubygems/package" - Gem::Package.build(spec, skip_validation) - end - - def repository_subdirectories - Gem::REPOSITORY_SUBDIRECTORIES - end - - def install_with_build_args(args) - yield - end - - def path_separator - Gem.path_separator - end - end - - # RubyGems 2.1.0 - class MoreFuture < Future - def initialize - super - backport_ext_builder_monitor - end - - def all_specs - require "bundler/remote_specification" - Gem::Specification.stubs.map do |stub| - StubSpecification.from_stub(stub) - end - end - - def backport_ext_builder_monitor - # So we can avoid requiring "rubygems/ext" in its entirety - Gem.module_eval <<-RB, __FILE__, __LINE__ + 1 - module Ext - end - RB - - require "rubygems/ext/builder" - - Gem::Ext::Builder.class_eval do - unless const_defined?(:CHDIR_MONITOR) - const_set(:CHDIR_MONITOR, EXT_LOCK) - end - - remove_const(:CHDIR_MUTEX) if const_defined?(:CHDIR_MUTEX) - const_set(:CHDIR_MUTEX, const_get(:CHDIR_MONITOR)) - end - end - - if Gem::Specification.respond_to?(:stubs_for) - def find_name(name) - Gem::Specification.stubs_for(name).map(&:to_spec) - end - else - def find_name(name) - Gem::Specification.stubs.find_all do |spec| - spec.name == name - end.map(&:to_spec) - end - end - - def use_gemdeps(gemfile) - ENV["BUNDLE_GEMFILE"] ||= File.expand_path(gemfile) - require "bundler/gemdeps" - runtime = Bundler.setup - Bundler.ui = nil - activated_spec_names = runtime.requested_specs.map(&:to_spec).sort_by(&:name) - [Gemdeps.new(runtime), activated_spec_names] - end - - if provides?(">= 2.5.2") - # RubyGems-generated binstubs call Kernel#gem - def binstubs_call_gem? - false - end - - # only 2.5.2+ has all of the stub methods we want to use, and since this - # is a performance optimization _only_, - # we'll restrict ourselves to the most - # recent RG versions instead of all versions that have stubs - def stubs_provide_full_functionality? - true - end - end - end - end - - def self.rubygems - @rubygems ||= if RubygemsIntegration.provides?(">= 2.1.0") - RubygemsIntegration::MoreFuture.new - elsif RubygemsIntegration.provides?(">= 1.99.99") - RubygemsIntegration::Future.new - elsif RubygemsIntegration.provides?(">= 1.8.20") - RubygemsIntegration::MoreModern.new - elsif RubygemsIntegration.provides?(">= 1.8.5") - RubygemsIntegration::Modern.new - elsif RubygemsIntegration.provides?(">= 1.8.0") - RubygemsIntegration::AlmostModern.new - elsif RubygemsIntegration.provides?(">= 1.7.0") - RubygemsIntegration::Transitional.new - elsif RubygemsIntegration.provides?(">= 1.4.0") - RubygemsIntegration::Legacy.new - else # RubyGems 1.3.6 and 1.3.7 - RubygemsIntegration::Ancient.new - end - end -end diff --git a/lib/bundler/runtime.rb b/lib/bundler/runtime.rb deleted file mode 100644 index f27597b854..0000000000 --- a/lib/bundler/runtime.rb +++ /dev/null @@ -1,316 +0,0 @@ -# frozen_string_literal: true - -module Bundler - class Runtime - include SharedHelpers - - def initialize(root, definition) - @root = root - @definition = definition - end - - def setup(*groups) - @definition.ensure_equivalent_gemfile_and_lockfile if Bundler.frozen? - - groups.map!(&:to_sym) - - # Has to happen first - clean_load_path - - specs = groups.any? ? @definition.specs_for(groups) : requested_specs - - SharedHelpers.set_bundle_environment - Bundler.rubygems.replace_entrypoints(specs) - - # Activate the specs - load_paths = specs.map do |spec| - unless spec.loaded_from - raise GemNotFound, "#{spec.full_name} is missing. Run `bundle install` to get it." - end - - check_for_activated_spec!(spec) - - Bundler.rubygems.mark_loaded(spec) - spec.load_paths.reject {|path| $LOAD_PATH.include?(path) } - end.reverse.flatten - - # See Gem::Specification#add_self_to_load_path (since RubyGems 1.8) - if insert_index = Bundler.rubygems.load_path_insert_index - # Gem directories must come after -I and ENV['RUBYLIB'] - $LOAD_PATH.insert(insert_index, *load_paths) - else - # We are probably testing in core, -I and RUBYLIB don't apply - $LOAD_PATH.unshift(*load_paths) - end - - setup_manpath - - lock(:preserve_unknown_sections => true) - - self - end - - REQUIRE_ERRORS = [ - /^no such file to load -- (.+)$/i, - /^Missing \w+ (?:file\s*)?([^\s]+.rb)$/i, - /^Missing API definition file in (.+)$/i, - /^cannot load such file -- (.+)$/i, - /^dlopen\([^)]*\): Library not loaded: (.+)$/i, - ].freeze - - def require(*groups) - groups.map!(&:to_sym) - groups = [:default] if groups.empty? - - @definition.dependencies.each do |dep| - # Skip the dependency if it is not in any of the requested groups, or - # not for the current platform, or doesn't match the gem constraints. - next unless (dep.groups & groups).any? && dep.should_include? - - required_file = nil - - begin - # Loop through all the specified autorequires for the - # dependency. If there are none, use the dependency's name - # as the autorequire. - Array(dep.autorequire || dep.name).each do |file| - # Allow `require: true` as an alias for `require: ` - file = dep.name if file == true - required_file = file - begin - Kernel.require file - rescue => e - raise e if e.is_a?(LoadError) # we handle this a little later - raise Bundler::GemRequireError.new e, - "There was an error while trying to load the gem '#{file}'." - end - end - rescue LoadError => e - REQUIRE_ERRORS.find {|r| r =~ e.message } - raise if dep.autorequire || $1 != required_file - - if dep.autorequire.nil? && dep.name.include?("-") - begin - namespaced_file = dep.name.tr("-", "/") - Kernel.require namespaced_file - rescue LoadError => e - REQUIRE_ERRORS.find {|r| r =~ e.message } - raise if $1 != namespaced_file - end - end - end - end - end - - def self.definition_method(meth) - define_method(meth) do - raise ArgumentError, "no definition when calling Runtime##{meth}" unless @definition - @definition.send(meth) - end - end - private_class_method :definition_method - - definition_method :requested_specs - definition_method :specs - definition_method :dependencies - definition_method :current_dependencies - definition_method :requires - - def lock(opts = {}) - return if @definition.nothing_changed? && !@definition.unlocking? - @definition.lock(Bundler.default_lockfile, opts[:preserve_unknown_sections]) - end - - alias_method :gems, :specs - - def cache(custom_path = nil) - cache_path = Bundler.app_cache(custom_path) - SharedHelpers.filesystem_access(cache_path) do |p| - FileUtils.mkdir_p(p) - end unless File.exist?(cache_path) - - Bundler.ui.info "Updating files in #{Bundler.settings.app_cache_path}" - - specs_to_cache = Bundler.settings[:cache_all_platforms] ? @definition.resolve.materialized_for_all_platforms : specs - specs_to_cache.each do |spec| - next if spec.name == "bundler" - next if spec.source.is_a?(Source::Gemspec) - spec.source.send(:fetch_gem, spec) if Bundler.settings[:cache_all_platforms] && spec.source.respond_to?(:fetch_gem, true) - spec.source.cache(spec, custom_path) if spec.source.respond_to?(:cache) - end - - Dir[cache_path.join("*/.git")].each do |git_dir| - FileUtils.rm_rf(git_dir) - FileUtils.touch(File.expand_path("../.bundlecache", git_dir)) - end - - prune_cache(cache_path) unless Bundler.settings[:no_prune] - end - - def prune_cache(cache_path) - SharedHelpers.filesystem_access(cache_path) do |p| - FileUtils.mkdir_p(p) - end unless File.exist?(cache_path) - resolve = @definition.resolve - prune_gem_cache(resolve, cache_path) - prune_git_and_path_cache(resolve, cache_path) - end - - def clean(dry_run = false) - gem_bins = Dir["#{Gem.dir}/bin/*"] - git_dirs = Dir["#{Gem.dir}/bundler/gems/*"] - git_cache_dirs = Dir["#{Gem.dir}/cache/bundler/git/*"] - gem_dirs = Dir["#{Gem.dir}/gems/*"] - gem_files = Dir["#{Gem.dir}/cache/*.gem"] - gemspec_files = Dir["#{Gem.dir}/specifications/*.gemspec"] - spec_gem_paths = [] - # need to keep git sources around - spec_git_paths = @definition.spec_git_paths - spec_git_cache_dirs = [] - spec_gem_executables = [] - spec_cache_paths = [] - spec_gemspec_paths = [] - specs.each do |spec| - spec_gem_paths << spec.full_gem_path - # need to check here in case gems are nested like for the rails git repo - md = %r{(.+bundler/gems/.+-[a-f0-9]{7,12})}.match(spec.full_gem_path) - spec_git_paths << md[1] if md - spec_gem_executables << spec.executables.collect do |executable| - e = "#{Bundler.rubygems.gem_bindir}/#{executable}" - [e, "#{e}.bat"] - end - spec_cache_paths << spec.cache_file - spec_gemspec_paths << spec.spec_file - spec_git_cache_dirs << spec.source.cache_path.to_s if spec.source.is_a?(Bundler::Source::Git) - end - spec_gem_paths.uniq! - spec_gem_executables.flatten! - - stale_gem_bins = gem_bins - spec_gem_executables - stale_git_dirs = git_dirs - spec_git_paths - ["#{Gem.dir}/bundler/gems/extensions"] - stale_git_cache_dirs = git_cache_dirs - spec_git_cache_dirs - stale_gem_dirs = gem_dirs - spec_gem_paths - stale_gem_files = gem_files - spec_cache_paths - stale_gemspec_files = gemspec_files - spec_gemspec_paths - - removed_stale_gem_dirs = stale_gem_dirs.collect {|dir| remove_dir(dir, dry_run) } - removed_stale_git_dirs = stale_git_dirs.collect {|dir| remove_dir(dir, dry_run) } - output = removed_stale_gem_dirs + removed_stale_git_dirs - - unless dry_run - stale_files = stale_gem_bins + stale_gem_files + stale_gemspec_files - stale_files.each do |file| - SharedHelpers.filesystem_access(File.dirname(file)) do |_p| - FileUtils.rm(file) if File.exist?(file) - end - end - stale_git_cache_dirs.each do |cache_dir| - SharedHelpers.filesystem_access(cache_dir) do |dir| - FileUtils.rm_rf(dir) if File.exist?(dir) - end - end - end - - output - end - - private - - def prune_gem_cache(resolve, cache_path) - cached = Dir["#{cache_path}/*.gem"] - - cached = cached.delete_if do |path| - spec = Bundler.rubygems.spec_from_gem path - - resolve.any? do |s| - s.name == spec.name && s.version == spec.version && !s.source.is_a?(Bundler::Source::Git) - end - end - - if cached.any? - Bundler.ui.info "Removing outdated .gem files from #{Bundler.settings.app_cache_path}" - - cached.each do |path| - Bundler.ui.info " * #{File.basename(path)}" - File.delete(path) - end - end - end - - def prune_git_and_path_cache(resolve, cache_path) - cached = Dir["#{cache_path}/*/.bundlecache"] - - cached = cached.delete_if do |path| - name = File.basename(File.dirname(path)) - - resolve.any? do |s| - source = s.source - source.respond_to?(:app_cache_dirname) && source.app_cache_dirname == name - end - end - - if cached.any? - Bundler.ui.info "Removing outdated git and path gems from #{Bundler.settings.app_cache_path}" - - cached.each do |path| - path = File.dirname(path) - Bundler.ui.info " * #{File.basename(path)}" - FileUtils.rm_rf(path) - end - end - end - - def setup_manpath - # Add man/ subdirectories from activated bundles to MANPATH for man(1) - manuals = $LOAD_PATH.map do |path| - man_subdir = path.sub(/lib$/, "man") - man_subdir unless Dir[man_subdir + "/man?/"].empty? - end.compact - - return if manuals.empty? - Bundler::SharedHelpers.set_env "MANPATH", manuals.concat( - ENV["MANPATH"].to_s.split(File::PATH_SEPARATOR) - ).uniq.join(File::PATH_SEPARATOR) - end - - def remove_dir(dir, dry_run) - full_name = Pathname.new(dir).basename.to_s - - parts = full_name.split("-") - name = parts[0..-2].join("-") - version = parts.last - output = "#{name} (#{version})" - - if dry_run - Bundler.ui.info "Would have removed #{output}" - else - Bundler.ui.info "Removing #{output}" - FileUtils.rm_rf(dir) - end - - output - end - - def check_for_activated_spec!(spec) - return unless activated_spec = Bundler.rubygems.loaded_specs(spec.name) - return if activated_spec.version == spec.version - - suggestion = if Bundler.rubygems.spec_default_gem?(activated_spec) - "Since #{spec.name} is a default gem, you can either remove your dependency on it" \ - " or try updating to a newer version of bundler that supports #{spec.name} as a default gem." - else - "Prepending `bundle exec` to your command may solve this." - end - - e = Gem::LoadError.new "You have already activated #{activated_spec.name} #{activated_spec.version}, " \ - "but your Gemfile requires #{spec.name} #{spec.version}. #{suggestion}" - e.name = spec.name - if e.respond_to?(:requirement=) - e.requirement = Gem::Requirement.new(spec.version.to_s) - else - e.version_requirement = Gem::Requirement.new(spec.version.to_s) - end - raise e - end - end -end diff --git a/lib/bundler/settings.rb b/lib/bundler/settings.rb deleted file mode 100644 index f33e9453be..0000000000 --- a/lib/bundler/settings.rb +++ /dev/null @@ -1,442 +0,0 @@ -# frozen_string_literal: true - -require "uri" - -module Bundler - class Settings - autoload :Mirror, "bundler/mirror" - autoload :Mirrors, "bundler/mirror" - autoload :Validator, "bundler/settings/validator" - - BOOL_KEYS = %w[ - allow_bundler_dependency_conflicts - allow_deployment_source_credential_changes - allow_offline_install - auto_clean_without_path - auto_install - cache_all - cache_all_platforms - cache_command_is_package - console_command - default_install_uses_path - deployment - deployment_means_frozen - disable_checksum_validation - disable_exec_load - disable_local_branch_check - disable_multisource - disable_shared_gems - disable_version_check - error_on_stderr - force_ruby_platform - forget_cli_options - frozen - gem.coc - gem.mit - global_gem_cache - ignore_messages - init_gems_rb - list_command - lockfile_uses_separate_rubygems_sources - major_deprecations - no_install - no_prune - only_update_to_newer_versions - path.system - plugins - prefer_gems_rb - print_only_version_number - setup_makes_kernel_gem_public - silence_root_warning - skip_default_git_sources - specific_platform - suppress_install_using_messages - unlock_source_unlocks_spec - update_requires_all_flag - ].freeze - - NUMBER_KEYS = %w[ - redirect - retry - ssl_verify_mode - timeout - ].freeze - - ARRAY_KEYS = %w[ - with - without - ].freeze - - DEFAULT_CONFIG = { - :disable_version_check => true, - :redirect => 5, - :retry => 3, - :timeout => 10, - }.freeze - - def initialize(root = nil) - @root = root - @local_config = load_config(local_config_file) - @global_config = load_config(global_config_file) - @temporary = {} - end - - def [](name) - key = key_for(name) - value = @temporary.fetch(key) do - @local_config.fetch(key) do - ENV.fetch(key) do - @global_config.fetch(key) do - DEFAULT_CONFIG.fetch(name) do - nil - end end end end end - - converted_value(value, name) - end - - def set_command_option(key, value) - if Bundler.feature_flag.forget_cli_options? - temporary(key => value) - value - else - command = if value.nil? - "bundle config --delete #{key}" - else - "bundle config #{key} #{Array(value).join(":")}" - end - - Bundler::SharedHelpers.major_deprecation 2,\ - "flags passed to commands " \ - "will no longer be automatically remembered. Instead please set flags " \ - "you want remembered between commands using `bundle config " \ - " `, i.e. `#{command}`" - - set_local(key, value) - end - end - - def set_command_option_if_given(key, value) - return if value.nil? - set_command_option(key, value) - end - - def set_local(key, value) - local_config_file || raise(GemfileNotFound, "Could not locate Gemfile") - - set_key(key, value, @local_config, local_config_file) - end - - def temporary(update) - existing = Hash[update.map {|k, _| [k, @temporary[key_for(k)]] }] - update.each do |k, v| - set_key(k, v, @temporary, nil) - end - return unless block_given? - begin - yield - ensure - existing.each {|k, v| set_key(k, v, @temporary, nil) } - end - end - - def set_global(key, value) - set_key(key, value, @global_config, global_config_file) - end - - def all - env_keys = ENV.keys.grep(/\ABUNDLE_.+/) - - keys = @temporary.keys | @global_config.keys | @local_config.keys | env_keys - - keys.map do |key| - key.sub(/^BUNDLE_/, "").gsub(/__/, ".").downcase - end - end - - def local_overrides - repos = {} - all.each do |k| - repos[$'] = self[k] if k =~ /^local\./ - end - repos - end - - def mirror_for(uri) - uri = URI(uri.to_s) unless uri.is_a?(URI) - gem_mirrors.for(uri.to_s).uri - end - - def credentials_for(uri) - self[uri.to_s] || self[uri.host] - end - - def gem_mirrors - all.inject(Mirrors.new) do |mirrors, k| - mirrors.parse(k, self[k]) if k.start_with?("mirror.") - mirrors - end - end - - def locations(key) - key = key_for(key) - locations = {} - locations[:temporary] = @temporary[key] if @temporary.key?(key) - locations[:local] = @local_config[key] if @local_config.key?(key) - locations[:env] = ENV[key] if ENV[key] - locations[:global] = @global_config[key] if @global_config.key?(key) - locations[:default] = DEFAULT_CONFIG[key] if DEFAULT_CONFIG.key?(key) - locations - end - - def pretty_values_for(exposed_key) - key = key_for(exposed_key) - - locations = [] - - if @temporary.key?(key) - locations << "Set for the current command: #{converted_value(@temporary[key], exposed_key).inspect}" - end - - if @local_config.key?(key) - locations << "Set for your local app (#{local_config_file}): #{converted_value(@local_config[key], exposed_key).inspect}" - end - - if value = ENV[key] - locations << "Set via #{key}: #{converted_value(value, exposed_key).inspect}" - end - - if @global_config.key?(key) - locations << "Set for the current user (#{global_config_file}): #{converted_value(@global_config[key], exposed_key).inspect}" - end - - return ["You have not configured a value for `#{exposed_key}`"] if locations.empty? - locations - end - - # for legacy reasons, the ruby scope isnt appended when the setting comes from ENV or the global config, - # nor do we respect :disable_shared_gems - def path - key = key_for(:path) - path = ENV[key] || @global_config[key] - if path && !@temporary.key?(key) && !@local_config.key?(key) - return Path.new(path, false, false, false) - end - - system_path = self["path.system"] || (self[:disable_shared_gems] == false) - Path.new(self[:path], true, system_path, Bundler.feature_flag.default_install_uses_path?) - end - - Path = Struct.new(:explicit_path, :append_ruby_scope, :system_path, :default_install_uses_path) do - def path - path = base_path - path = File.join(path, Bundler.ruby_scope) if append_ruby_scope && !use_system_gems? - path - end - - def use_system_gems? - return true if system_path - return false if explicit_path - !default_install_uses_path - end - - def base_path - path = explicit_path - path ||= ".bundle" unless use_system_gems? - path ||= Bundler.rubygems.gem_dir - path - end - - def validate! - return unless explicit_path && system_path - path = Bundler.settings.pretty_values_for(:path) - path.unshift(nil, "path:") unless path.empty? - system_path = Bundler.settings.pretty_values_for("path.system") - system_path.unshift(nil, "path.system:") unless system_path.empty? - disable_shared_gems = Bundler.settings.pretty_values_for(:disable_shared_gems) - disable_shared_gems.unshift(nil, "disable_shared_gems:") unless disable_shared_gems.empty? - raise InvalidOption, - "Using a custom path while using system gems is unsupported.\n#{path.join("\n")}\n#{system_path.join("\n")}\n#{disable_shared_gems.join("\n")}" - end - end - - def allow_sudo? - key = key_for(:path) - path_configured = @temporary.key?(key) || @local_config.key?(key) - !path_configured - end - - def ignore_config? - ENV["BUNDLE_IGNORE_CONFIG"] - end - - def app_cache_path - @app_cache_path ||= self[:cache_path] || "vendor/cache" - end - - def validate! - all.each do |raw_key| - [@local_config, ENV, @global_config].each do |settings| - value = converted_value(settings[key_for(raw_key)], raw_key) - Validator.validate!(raw_key, value, settings.to_hash.dup) - end - end - end - - def key_for(key) - key = Settings.normalize_uri(key).to_s if key.is_a?(String) && /https?:/ =~ key - key = key.to_s.gsub(".", "__").upcase - "BUNDLE_#{key}" - end - - private - - def parent_setting_for(name) - split_specific_setting_for(name)[0] - end - - def specific_gem_for(name) - split_specific_setting_for(name)[1] - end - - def split_specific_setting_for(name) - name.split(".") - end - - def is_bool(name) - BOOL_KEYS.include?(name.to_s) || BOOL_KEYS.include?(parent_setting_for(name.to_s)) - end - - def to_bool(value) - case value - when nil, /\A(false|f|no|n|0|)\z/i, false - false - else - true - end - end - - def is_num(key) - NUMBER_KEYS.include?(key.to_s) - end - - def is_array(key) - ARRAY_KEYS.include?(key.to_s) - end - - def to_array(value) - return [] unless value - value.split(":").map(&:to_sym) - end - - def array_to_s(array) - array = Array(array) - return nil if array.empty? - array.join(":").tr(" ", ":") - end - - def set_key(raw_key, value, hash, file) - raw_key = raw_key.to_s - value = array_to_s(value) if is_array(raw_key) - - key = key_for(raw_key) - - return if hash[key] == value - - hash[key] = value - hash.delete(key) if value.nil? - - Validator.validate!(raw_key, converted_value(value, raw_key), hash) - - return unless file - SharedHelpers.filesystem_access(file) do |p| - FileUtils.mkdir_p(p.dirname) - require "bundler/yaml_serializer" - p.open("w") {|f| f.write(YAMLSerializer.dump(hash)) } - end - end - - def converted_value(value, key) - if is_array(key) - to_array(value) - elsif value.nil? - nil - elsif is_bool(key) || value == "false" - to_bool(value) - elsif is_num(key) - value.to_i - else - value.to_s - end - end - - def global_config_file - if ENV["BUNDLE_CONFIG"] && !ENV["BUNDLE_CONFIG"].empty? - Pathname.new(ENV["BUNDLE_CONFIG"]) - else - begin - Bundler.user_bundle_path.join("config") - rescue PermissionError, GenericSystemCallError - nil - end - end - end - - def local_config_file - Pathname.new(@root).join("config") if @root - end - - CONFIG_REGEX = %r{ # rubocop:disable Style/RegexpLiteral - ^ - (BUNDLE_.+):\s # the key - (?: !\s)? # optional exclamation mark found with ruby 1.9.3 - (['"]?) # optional opening quote - (.* # contents of the value - (?: # optionally, up until the next key - (\n(?!BUNDLE).+)* - ) - ) - \2 # matching closing quote - $ - }xo - - def load_config(config_file) - return {} if !config_file || ignore_config? - SharedHelpers.filesystem_access(config_file, :read) do |file| - valid_file = file.exist? && !file.size.zero? - return {} unless valid_file - require "bundler/yaml_serializer" - YAMLSerializer.load file.read - end - end - - PER_URI_OPTIONS = %w[ - fallback_timeout - ].freeze - - NORMALIZE_URI_OPTIONS_PATTERN = - / - \A - (\w+\.)? # optional prefix key - (https?.*?) # URI - (\.#{Regexp.union(PER_URI_OPTIONS)})? # optional suffix key - \z - /ix - - # TODO: duplicates Rubygems#normalize_uri - # TODO: is this the correct place to validate mirror URIs? - def self.normalize_uri(uri) - uri = uri.to_s - if uri =~ NORMALIZE_URI_OPTIONS_PATTERN - prefix = $1 - uri = $2 - suffix = $3 - end - uri = "#{uri}/" unless uri.end_with?("/") - uri = URI(uri) - unless uri.absolute? - raise ArgumentError, format("Gem sources must be absolute. You provided '%s'.", uri) - end - "#{prefix}#{uri}#{suffix}" - end - end -end diff --git a/lib/bundler/settings/validator.rb b/lib/bundler/settings/validator.rb deleted file mode 100644 index 9aa1627fb2..0000000000 --- a/lib/bundler/settings/validator.rb +++ /dev/null @@ -1,79 +0,0 @@ -# frozen_string_literal: true - -module Bundler - class Settings - class Validator - class Rule - attr_reader :description - - def initialize(keys, description, &validate) - @keys = keys - @description = description - @validate = validate - end - - def validate!(key, value, settings) - instance_exec(key, value, settings, &@validate) - end - - def fail!(key, value, *reasons) - reasons.unshift @description - raise InvalidOption, "Setting `#{key}` to #{value.inspect} failed:\n#{reasons.map {|r| " - #{r}" }.join("\n")}" - end - - def set(settings, key, value, *reasons) - hash_key = k(key) - return if settings[hash_key] == value - reasons.unshift @description - Bundler.ui.info "Setting `#{key}` to #{value.inspect}, since #{reasons.join(", ")}" - if value.nil? - settings.delete(hash_key) - else - settings[hash_key] = value - end - end - - def k(key) - Bundler.settings.key_for(key) - end - end - - def self.rules - @rules ||= Hash.new {|h, k| h[k] = [] } - end - private_class_method :rules - - def self.rule(keys, description, &blk) - rule = Rule.new(keys, description, &blk) - keys.each {|k| rules[k] << rule } - end - private_class_method :rule - - def self.validate!(key, value, settings) - rules_to_validate = rules[key] - rules_to_validate.each {|rule| rule.validate!(key, value, settings) } - end - - rule %w[path path.system], "path and path.system are mutually exclusive" do |key, value, settings| - if key == "path" && value - set(settings, "path.system", nil) - elsif key == "path.system" && value - set(settings, :path, nil) - end - end - - rule %w[with without], "a group cannot be in both `with` & `without` simultaneously" do |key, value, settings| - with = settings.fetch(k(:with), "").split(":").map(&:to_sym) - without = settings.fetch(k(:without), "").split(":").map(&:to_sym) - - other_key = key == "with" ? :without : :with - other_setting = key == "with" ? without : with - - conflicting = with & without - if conflicting.any? - fail!(key, value, "`#{other_key}` is current set to #{other_setting.inspect}", "the `#{conflicting.join("`, `")}` groups conflict") - end - end - end - end -end diff --git a/lib/bundler/setup.rb b/lib/bundler/setup.rb deleted file mode 100644 index ac6a5bf861..0000000000 --- a/lib/bundler/setup.rb +++ /dev/null @@ -1,28 +0,0 @@ -# frozen_string_literal: true - -require "bundler/shared_helpers" - -if Bundler::SharedHelpers.in_bundle? - require "bundler" - - if STDOUT.tty? || ENV["BUNDLER_FORCE_TTY"] - begin - Bundler.setup - rescue Bundler::BundlerError => e - puts "\e[31m#{e.message}\e[0m" - puts e.backtrace.join("\n") if ENV["DEBUG"] - if e.is_a?(Bundler::GemNotFound) - puts "\e[33mRun `bundle install` to install missing gems.\e[0m" - end - exit e.status_code - end - else - Bundler.setup - end - - # Add bundler to the load path after disabling system gems - bundler_lib = File.expand_path("../..", __FILE__) - $LOAD_PATH.unshift(bundler_lib) unless $LOAD_PATH.include?(bundler_lib) - - Bundler.ui = nil -end diff --git a/lib/bundler/shared_helpers.rb b/lib/bundler/shared_helpers.rb deleted file mode 100644 index 5566bc5832..0000000000 --- a/lib/bundler/shared_helpers.rb +++ /dev/null @@ -1,366 +0,0 @@ -# frozen_string_literal: true - -require "bundler/compatibility_guard" - -require "pathname" -require "rubygems" - -require "bundler/version" -require "bundler/constants" -require "bundler/rubygems_integration" -require "bundler/current_ruby" - -module Gem - class Dependency - # This is only needed for RubyGems < 1.4 - unless method_defined? :requirement - def requirement - version_requirements - end - end - end -end - -module Bundler - module SharedHelpers - def root - gemfile = find_gemfile - raise GemfileNotFound, "Could not locate Gemfile" unless gemfile - Pathname.new(gemfile).untaint.expand_path.parent - end - - def default_gemfile - gemfile = find_gemfile(:order_matters) - raise GemfileNotFound, "Could not locate Gemfile" unless gemfile - Pathname.new(gemfile).untaint.expand_path - end - - def default_lockfile - gemfile = default_gemfile - - case gemfile.basename.to_s - when "gems.rb" then Pathname.new(gemfile.sub(/.rb$/, ".locked")) - else Pathname.new("#{gemfile}.lock") - end.untaint - end - - def default_bundle_dir - bundle_dir = find_directory(".bundle") - return nil unless bundle_dir - - bundle_dir = Pathname.new(bundle_dir) - - global_bundle_dir = Bundler.user_home.join(".bundle") - return nil if bundle_dir == global_bundle_dir - - bundle_dir - end - - def in_bundle? - find_gemfile - end - - def chdir(dir, &blk) - Bundler.rubygems.ext_lock.synchronize do - Dir.chdir dir, &blk - end - end - - def pwd - Bundler.rubygems.ext_lock.synchronize do - Pathname.pwd - end - end - - def with_clean_git_env(&block) - keys = %w[GIT_DIR GIT_WORK_TREE] - old_env = keys.inject({}) do |h, k| - h.update(k => ENV[k]) - end - - keys.each {|key| ENV.delete(key) } - - block.call - ensure - keys.each {|key| ENV[key] = old_env[key] } - end - - def set_bundle_environment - set_bundle_variables - set_path - set_rubyopt - set_rubylib - end - - # Rescues permissions errors raised by file system operations - # (ie. Errno:EACCESS, Errno::EAGAIN) and raises more friendly errors instead. - # - # @param path [String] the path that the action will be attempted to - # @param action [Symbol, #to_s] the type of operation that will be - # performed. For example: :write, :read, :exec - # - # @yield path - # - # @raise [Bundler::PermissionError] if Errno:EACCES is raised in the - # given block - # @raise [Bundler::TemporaryResourceError] if Errno:EAGAIN is raised in the - # given block - # - # @example - # filesystem_access("vendor/cache", :write) do - # FileUtils.mkdir_p("vendor/cache") - # end - # - # @see {Bundler::PermissionError} - def filesystem_access(path, action = :write, &block) - # Use block.call instead of yield because of a bug in Ruby 2.2.2 - # See https://github.com/bundler/bundler/issues/5341 for details - block.call(path.dup.untaint) - rescue Errno::EACCES - raise PermissionError.new(path, action) - rescue Errno::EAGAIN - raise TemporaryResourceError.new(path, action) - rescue Errno::EPROTO - raise VirtualProtocolError.new - rescue Errno::ENOSPC - raise NoSpaceOnDeviceError.new(path, action) - rescue *[const_get_safely(:ENOTSUP, Errno)].compact - raise OperationNotSupportedError.new(path, action) - rescue Errno::EEXIST, Errno::ENOENT - raise - rescue SystemCallError => e - raise GenericSystemCallError.new(e, "There was an error accessing `#{path}`.") - end - - def const_get_safely(constant_name, namespace) - const_in_namespace = namespace.constants.include?(constant_name.to_s) || - namespace.constants.include?(constant_name.to_sym) - return nil unless const_in_namespace - namespace.const_get(constant_name) - end - - def major_deprecation(major_version, message) - if Bundler.bundler_major_version >= major_version - require "bundler/errors" - raise DeprecatedError, "[REMOVED FROM #{major_version}.0] #{message}" - end - - return unless prints_major_deprecations? - @major_deprecation_ui ||= Bundler::UI::Shell.new("no-color" => true) - ui = Bundler.ui.is_a?(@major_deprecation_ui.class) ? Bundler.ui : @major_deprecation_ui - ui.warn("[DEPRECATED FOR #{major_version}.0] #{message}") - end - - def print_major_deprecations! - multiple_gemfiles = search_up(".") do |dir| - gemfiles = gemfile_names.select {|gf| File.file? File.expand_path(gf, dir) } - next if gemfiles.empty? - break false if gemfiles.size == 1 - end - if multiple_gemfiles && Bundler.bundler_major_version == 1 - Bundler::SharedHelpers.major_deprecation 2, \ - "gems.rb and gems.locked will be preferred to Gemfile and Gemfile.lock." - end - - if RUBY_VERSION < "2" - major_deprecation(2, "Bundler will only support ruby >= 2.0, you are running #{RUBY_VERSION}") - end - return if Bundler.rubygems.provides?(">= 2") - major_deprecation(2, "Bundler will only support rubygems >= 2.0, you are running #{Bundler.rubygems.version}") - end - - def trap(signal, override = false, &block) - prior = Signal.trap(signal) do - block.call - prior.call unless override - end - end - - def ensure_same_dependencies(spec, old_deps, new_deps) - new_deps = new_deps.reject {|d| d.type == :development } - old_deps = old_deps.reject {|d| d.type == :development } - - without_type = proc {|d| Gem::Dependency.new(d.name, d.requirements_list.sort) } - new_deps.map!(&without_type) - old_deps.map!(&without_type) - - extra_deps = new_deps - old_deps - return if extra_deps.empty? - - Bundler.ui.debug "#{spec.full_name} from #{spec.remote} has either corrupted API or lockfile dependencies" \ - " (was expecting #{old_deps.map(&:to_s)}, but the real spec has #{new_deps.map(&:to_s)})" - raise APIResponseMismatchError, - "Downloading #{spec.full_name} revealed dependencies not in the API or the lockfile (#{extra_deps.join(", ")})." \ - "\nEither installing with `--full-index` or running `bundle update #{spec.name}` should fix the problem." - end - - def pretty_dependency(dep, print_source = false) - msg = String.new(dep.name) - msg << " (#{dep.requirement})" unless dep.requirement == Gem::Requirement.default - if dep.is_a?(Bundler::Dependency) - platform_string = dep.platforms.join(", ") - msg << " " << platform_string if !platform_string.empty? && platform_string != Gem::Platform::RUBY - end - msg << " from the `#{dep.source}` source" if print_source && dep.source - msg - end - - def md5_available? - return @md5_available if defined?(@md5_available) - @md5_available = begin - require "openssl" - OpenSSL::Digest::MD5.digest("") - true - rescue LoadError - true - rescue OpenSSL::Digest::DigestError - false - end - end - - def digest(name) - require "digest" - Digest(name) - end - - private - - def validate_bundle_path - path_separator = Bundler.rubygems.path_separator - return unless Bundler.bundle_path.to_s.split(path_separator).size > 1 - message = "Your bundle path contains text matching #{path_separator.inspect}, " \ - "which is the path separator for your system. Bundler cannot " \ - "function correctly when the Bundle path contains the " \ - "system's PATH separator. Please change your " \ - "bundle path to not match #{path_separator.inspect}." \ - "\nYour current bundle path is '#{Bundler.bundle_path}'." - raise Bundler::PathError, message - end - - def find_gemfile(order_matters = false) - given = ENV["BUNDLE_GEMFILE"] - return given if given && !given.empty? - names = gemfile_names - names.reverse! if order_matters && Bundler.feature_flag.prefer_gems_rb? - find_file(*names) - end - - def gemfile_names - ["Gemfile", "gems.rb"] - end - - def find_file(*names) - search_up(*names) do |filename| - return filename if File.file?(filename) - end - end - - def find_directory(*names) - search_up(*names) do |dirname| - return dirname if File.directory?(dirname) - end - end - - def search_up(*names) - previous = nil - current = File.expand_path(SharedHelpers.pwd).untaint - - until !File.directory?(current) || current == previous - if ENV["BUNDLE_SPEC_RUN"] - # avoid stepping above the tmp directory when testing - if !!(ENV["BUNDLE_RUBY"] && ENV["BUNDLE_GEM"]) - # for Ruby Core - gemspec = "lib/bundler.gemspec" - else - gemspec = "bundler.gemspec" - end - return nil if File.file?(File.join(current, gemspec)) - end - - names.each do |name| - filename = File.join(current, name) - yield filename - end - previous = current - current = File.expand_path("..", current) - end - end - - def set_env(key, value) - raise ArgumentError, "new key #{key}" unless EnvironmentPreserver::BUNDLER_KEYS.include?(key) - orig_key = "#{EnvironmentPreserver::BUNDLER_PREFIX}#{key}" - orig = ENV[key] - orig ||= EnvironmentPreserver::INTENTIONALLY_NIL - ENV[orig_key] ||= orig - - ENV[key] = value - end - public :set_env - - def set_bundle_variables - begin - Bundler::SharedHelpers.set_env "BUNDLE_BIN_PATH", Bundler.rubygems.bin_path("bundler", "bundle", VERSION) - rescue Gem::GemNotFoundException - if File.exist?(File.expand_path("../../../exe/bundle", __FILE__)) - Bundler::SharedHelpers.set_env "BUNDLE_BIN_PATH", File.expand_path("../../../exe/bundle", __FILE__) - else - Bundler::SharedHelpers.set_env "BUNDLE_BIN_PATH", File.expand_path("../../../../bin/bundle", __FILE__) - end - end - - # Set BUNDLE_GEMFILE - Bundler::SharedHelpers.set_env "BUNDLE_GEMFILE", find_gemfile(:order_matters).to_s - Bundler::SharedHelpers.set_env "BUNDLER_VERSION", Bundler::VERSION - end - - def set_path - validate_bundle_path - paths = (ENV["PATH"] || "").split(File::PATH_SEPARATOR) - paths.unshift "#{Bundler.bundle_path}/bin" - Bundler::SharedHelpers.set_env "PATH", paths.uniq.join(File::PATH_SEPARATOR) - end - - def set_rubyopt - rubyopt = [ENV["RUBYOPT"]].compact - return if !rubyopt.empty? && rubyopt.first =~ %r{-rbundler/setup} - rubyopt.unshift %(-rbundler/setup) - Bundler::SharedHelpers.set_env "RUBYOPT", rubyopt.join(" ") - end - - def set_rubylib - rubylib = (ENV["RUBYLIB"] || "").split(File::PATH_SEPARATOR) - rubylib.unshift bundler_ruby_lib - Bundler::SharedHelpers.set_env "RUBYLIB", rubylib.uniq.join(File::PATH_SEPARATOR) - end - - def bundler_ruby_lib - File.expand_path("../..", __FILE__) - end - - def clean_load_path - # handle 1.9 where system gems are always on the load path - return unless defined?(::Gem) - - bundler_lib = bundler_ruby_lib - - loaded_gem_paths = Bundler.rubygems.loaded_gem_paths - - $LOAD_PATH.reject! do |p| - next if File.expand_path(p).start_with?(bundler_lib) - loaded_gem_paths.delete(p) - end - $LOAD_PATH.uniq! - end - - def prints_major_deprecations? - require "bundler" - deprecation_release = Bundler::VERSION.split(".").drop(1).include?("99") - return false if !deprecation_release && !Bundler.settings[:major_deprecations] - require "bundler/deprecate" - return false if Bundler::Deprecate.skip - true - end - - extend self - end -end diff --git a/lib/bundler/similarity_detector.rb b/lib/bundler/similarity_detector.rb deleted file mode 100644 index b7f3ee7afa..0000000000 --- a/lib/bundler/similarity_detector.rb +++ /dev/null @@ -1,63 +0,0 @@ -# frozen_string_literal: true - -module Bundler - class SimilarityDetector - SimilarityScore = Struct.new(:string, :distance) - - # initialize with an array of words to be matched against - def initialize(corpus) - @corpus = corpus - end - - # return an array of words similar to 'word' from the corpus - def similar_words(word, limit = 3) - words_by_similarity = @corpus.map {|w| SimilarityScore.new(w, levenshtein_distance(word, w)) } - words_by_similarity.select {|s| s.distance <= limit }.sort_by(&:distance).map(&:string) - end - - # return the result of 'similar_words', concatenated into a list - # (eg "a, b, or c") - def similar_word_list(word, limit = 3) - words = similar_words(word, limit) - if words.length == 1 - words[0] - elsif words.length > 1 - [words[0..-2].join(", "), words[-1]].join(" or ") - end - end - - protected - - # http://www.informit.com/articles/article.aspx?p=683059&seqNum=36 - def levenshtein_distance(this, that, ins = 2, del = 2, sub = 1) - # ins, del, sub are weighted costs - return nil if this.nil? - return nil if that.nil? - dm = [] # distance matrix - - # Initialize first row values - dm[0] = (0..this.length).collect {|i| i * ins } - fill = [0] * (this.length - 1) - - # Initialize first column values - (1..that.length).each do |i| - dm[i] = [i * del, fill.flatten] - end - - # populate matrix - (1..that.length).each do |i| - (1..this.length).each do |j| - # critical comparison - dm[i][j] = [ - dm[i - 1][j - 1] + (this[j - 1] == that[i - 1] ? 0 : sub), - dm[i][j - 1] + ins, - dm[i - 1][j] + del - ].min - end - end - - # The last value in matrix is the Levenshtein distance between the strings - dm[that.length][this.length] - end - end -end diff --git a/lib/bundler/source.rb b/lib/bundler/source.rb deleted file mode 100644 index 5a1f05098b..0000000000 --- a/lib/bundler/source.rb +++ /dev/null @@ -1,94 +0,0 @@ -# frozen_string_literal: true - -module Bundler - class Source - autoload :Gemspec, "bundler/source/gemspec" - autoload :Git, "bundler/source/git" - autoload :Metadata, "bundler/source/metadata" - autoload :Path, "bundler/source/path" - autoload :Rubygems, "bundler/source/rubygems" - - attr_accessor :dependency_names - - def unmet_deps - specs.unmet_dependency_names - end - - def version_message(spec) - message = "#{spec.name} #{spec.version}" - message += " (#{spec.platform})" if spec.platform != Gem::Platform::RUBY && !spec.platform.nil? - - if Bundler.locked_gems - locked_spec = Bundler.locked_gems.specs.find {|s| s.name == spec.name } - locked_spec_version = locked_spec.version if locked_spec - if locked_spec_version && spec.version != locked_spec_version - message += Bundler.ui.add_color(" (was #{locked_spec_version})", version_color(spec.version, locked_spec_version)) - end - end - - message - end - - def can_lock?(spec) - spec.source == self - end - - # it's possible that gems from one source depend on gems from some - # other source, so now we download gemspecs and iterate over those - # dependencies, looking for gems we don't have info on yet. - def double_check_for(*); end - - def dependency_names_to_double_check - specs.dependency_names - end - - def include?(other) - other == self - end - - def inspect - "#<#{self.class}:0x#{object_id} #{self}>" - end - - def path? - instance_of?(Bundler::Source::Path) - end - - private - - def version_color(spec_version, locked_spec_version) - if Gem::Version.correct?(spec_version) && Gem::Version.correct?(locked_spec_version) - # display yellow if there appears to be a regression - earlier_version?(spec_version, locked_spec_version) ? :yellow : :green - else - # default to green if the versions cannot be directly compared - :green - end - end - - def earlier_version?(spec_version, locked_spec_version) - Gem::Version.new(spec_version) < Gem::Version.new(locked_spec_version) - end - - def print_using_message(message) - if !message.include?("(was ") && Bundler.feature_flag.suppress_install_using_messages? - Bundler.ui.debug message - else - Bundler.ui.info message - end - end - - def extension_cache_path(spec) - return unless Bundler.feature_flag.global_gem_cache? - return unless source_slug = extension_cache_slug(spec) - Bundler.user_cache.join( - "extensions", Gem::Platform.local.to_s, Bundler.ruby_scope, - source_slug, spec.full_name - ) - end - - def extension_cache_slug(_) - nil - end - end -end diff --git a/lib/bundler/source/gemspec.rb b/lib/bundler/source/gemspec.rb deleted file mode 100644 index 7e3447e776..0000000000 --- a/lib/bundler/source/gemspec.rb +++ /dev/null @@ -1,18 +0,0 @@ -# frozen_string_literal: true - -module Bundler - class Source - class Gemspec < Path - attr_reader :gemspec - - def initialize(options) - super - @gemspec = options["gemspec"] - end - - def as_path_source - Path.new(options) - end - end - end -end diff --git a/lib/bundler/source/git.rb b/lib/bundler/source/git.rb deleted file mode 100644 index a1a59ddce5..0000000000 --- a/lib/bundler/source/git.rb +++ /dev/null @@ -1,328 +0,0 @@ -# frozen_string_literal: true - -require "bundler/vendored_fileutils" -require "uri" - -module Bundler - class Source - class Git < Path - autoload :GitProxy, "bundler/source/git/git_proxy" - - attr_reader :uri, :ref, :branch, :options, :submodules - - def initialize(options) - @options = options - @glob = options["glob"] || DEFAULT_GLOB - - @allow_cached = false - @allow_remote = false - - # Stringify options that could be set as symbols - %w[ref branch tag revision].each {|k| options[k] = options[k].to_s if options[k] } - - @uri = options["uri"] || "" - @branch = options["branch"] - @ref = options["ref"] || options["branch"] || options["tag"] || "master" - @submodules = options["submodules"] - @name = options["name"] - @version = options["version"].to_s.strip.gsub("-", ".pre.") - - @copied = false - @local = false - end - - def self.from_lock(options) - new(options.merge("uri" => options.delete("remote"))) - end - - def to_lock - out = String.new("GIT\n") - out << " remote: #{@uri}\n" - out << " revision: #{revision}\n" - %w[ref branch tag submodules].each do |opt| - out << " #{opt}: #{options[opt]}\n" if options[opt] - end - out << " glob: #{@glob}\n" unless @glob == DEFAULT_GLOB - out << " specs:\n" - end - - def hash - [self.class, uri, ref, branch, name, version, submodules].hash - end - - def eql?(other) - other.is_a?(Git) && uri == other.uri && ref == other.ref && - branch == other.branch && name == other.name && - version == other.version && submodules == other.submodules - end - - alias_method :==, :eql? - - def to_s - at = if local? - path - elsif user_ref = options["ref"] - if ref =~ /\A[a-z0-9]{4,}\z/i - shortref_for_display(user_ref) - else - user_ref - end - else - ref - end - - rev = begin - "@#{shortref_for_display(revision)}" - rescue GitError - nil - end - - "#{uri} (at #{at}#{rev})" - end - - def name - File.basename(@uri, ".git") - end - - # This is the path which is going to contain a specific - # checkout of the git repository. When using local git - # repos, this is set to the local repo. - def install_path - @install_path ||= begin - git_scope = "#{base_name}-#{shortref_for_path(revision)}" - - path = Bundler.install_path.join(git_scope) - - if !path.exist? && Bundler.requires_sudo? - Bundler.user_bundle_path.join(Bundler.ruby_scope).join(git_scope) - else - path - end - end - end - - alias_method :path, :install_path - - def extension_dir_name - "#{base_name}-#{shortref_for_path(revision)}" - end - - def unlock! - git_proxy.revision = nil - options["revision"] = nil - - @unlocked = true - end - - def local_override!(path) - return false if local? - - path = Pathname.new(path) - path = path.expand_path(Bundler.root) unless path.relative? - - unless options["branch"] || Bundler.settings[:disable_local_branch_check] - raise GitError, "Cannot use local override for #{name} at #{path} because " \ - ":branch is not specified in Gemfile. Specify a branch or use " \ - "`bundle config --delete` to remove the local override" - end - - unless path.exist? - raise GitError, "Cannot use local override for #{name} because #{path} " \ - "does not exist. Check `bundle config --delete` to remove the local override" - end - - set_local!(path) - - # Create a new git proxy without the cached revision - # so the Gemfile.lock always picks up the new revision. - @git_proxy = GitProxy.new(path, uri, ref) - - if git_proxy.branch != options["branch"] && !Bundler.settings[:disable_local_branch_check] - raise GitError, "Local override for #{name} at #{path} is using branch " \ - "#{git_proxy.branch} but Gemfile specifies #{options["branch"]}" - end - - changed = cached_revision && cached_revision != git_proxy.revision - - if changed && !@unlocked && !git_proxy.contains?(cached_revision) - raise GitError, "The Gemfile lock is pointing to revision #{shortref_for_display(cached_revision)} " \ - "but the current branch in your local override for #{name} does not contain such commit. " \ - "Please make sure your branch is up to date." - end - - changed - end - - def specs(*) - set_local!(app_cache_path) if has_app_cache? && !local? - - if requires_checkout? && !@copied - fetch - git_proxy.copy_to(install_path, submodules) - serialize_gemspecs_in(install_path) - @copied = true - end - - local_specs - end - - def install(spec, options = {}) - force = options[:force] - - print_using_message "Using #{version_message(spec)} from #{self}" - - if (requires_checkout? && !@copied) || force - Bundler.ui.debug " * Checking out revision: #{ref}" - git_proxy.copy_to(install_path, submodules) - serialize_gemspecs_in(install_path) - @copied = true - end - - generate_bin_options = { :disable_extensions => !Bundler.rubygems.spec_missing_extensions?(spec), :build_args => options[:build_args] } - generate_bin(spec, generate_bin_options) - - requires_checkout? ? spec.post_install_message : nil - end - - def cache(spec, custom_path = nil) - app_cache_path = app_cache_path(custom_path) - return unless Bundler.feature_flag.cache_all? - return if path == app_cache_path - cached! - FileUtils.rm_rf(app_cache_path) - git_proxy.checkout if requires_checkout? - git_proxy.copy_to(app_cache_path, @submodules) - serialize_gemspecs_in(app_cache_path) - end - - def load_spec_files - super - rescue PathError => e - Bundler.ui.trace e - raise GitError, "#{self} is not yet checked out. Run `bundle install` first." - end - - # This is the path which is going to contain a cache - # of the git repository. When using the same git repository - # across different projects, this cache will be shared. - # When using local git repos, this is set to the local repo. - def cache_path - @cache_path ||= begin - if Bundler.requires_sudo? || Bundler.feature_flag.global_gem_cache? - Bundler.user_cache - else - Bundler.bundle_path.join("cache", "bundler") - end.join("git", git_scope) - end - end - - def app_cache_dirname - "#{base_name}-#{shortref_for_path(cached_revision || revision)}" - end - - def revision - git_proxy.revision - end - - def allow_git_ops? - @allow_remote || @allow_cached - end - - private - - def serialize_gemspecs_in(destination) - destination = destination.expand_path(Bundler.root) if destination.relative? - Dir["#{destination}/#{@glob}"].each do |spec_path| - # Evaluate gemspecs and cache the result. Gemspecs - # in git might require git or other dependencies. - # The gemspecs we cache should already be evaluated. - spec = Bundler.load_gemspec(spec_path) - next unless spec - Bundler.rubygems.set_installed_by_version(spec) - Bundler.rubygems.validate(spec) - File.open(spec_path, "wb") {|file| file.write(spec.to_ruby) } - end - end - - def set_local!(path) - @local = true - @local_specs = @git_proxy = nil - @cache_path = @install_path = path - end - - def has_app_cache? - cached_revision && super - end - - def local? - @local - end - - def requires_checkout? - allow_git_ops? && !local? - end - - def base_name - File.basename(uri.sub(%r{^(\w+://)?([^/:]+:)?(//\w*/)?(\w*/)*}, ""), ".git") - end - - def shortref_for_display(ref) - ref[0..6] - end - - def shortref_for_path(ref) - ref[0..11] - end - - def uri_hash - if uri =~ %r{^\w+://(\w+@)?} - # Downcase the domain component of the URI - # and strip off a trailing slash, if one is present - input = URI.parse(uri).normalize.to_s.sub(%r{/$}, "") - else - # If there is no URI scheme, assume it is an ssh/git URI - input = uri - end - SharedHelpers.digest(:SHA1).hexdigest(input) - end - - def cached_revision - options["revision"] - end - - def cached? - cache_path.exist? - end - - def git_proxy - @git_proxy ||= GitProxy.new(cache_path, uri, ref, cached_revision, self) - end - - def fetch - git_proxy.checkout - rescue GitError => e - raise unless Bundler.feature_flag.allow_offline_install? - Bundler.ui.warn "Using cached git data because of network errors:\n#{e}" - end - - # no-op, since we validate when re-serializing the gemspec - def validate_spec(_spec); end - - if Bundler.rubygems.stubs_provide_full_functionality? - def load_gemspec(file) - stub = Gem::StubSpecification.gemspec_stub(file, install_path.parent, install_path.parent) - stub.full_gem_path = Pathname.new(file).dirname.expand_path(root).to_s.untaint - StubSpecification.from_stub(stub) - end - end - - def git_scope - "#{base_name}-#{uri_hash}" - end - - def extension_cache_slug(_) - extension_dir_name - end - end - end -end diff --git a/lib/bundler/source/git/git_proxy.rb b/lib/bundler/source/git/git_proxy.rb deleted file mode 100644 index c56dda66ea..0000000000 --- a/lib/bundler/source/git/git_proxy.rb +++ /dev/null @@ -1,257 +0,0 @@ -# frozen_string_literal: true - -require "shellwords" -require "tempfile" -module Bundler - class Source - class Git - class GitNotInstalledError < GitError - def initialize - msg = String.new - msg << "You need to install git to be able to use gems from git repositories. " - msg << "For help installing git, please refer to GitHub's tutorial at https://help.github.com/articles/set-up-git" - super msg - end - end - - class GitNotAllowedError < GitError - def initialize(command) - msg = String.new - msg << "Bundler is trying to run a `git #{command}` at runtime. You probably need to run `bundle install`. However, " - msg << "this error message could probably be more useful. Please submit a ticket at http://github.com/bundler/bundler/issues " - msg << "with steps to reproduce as well as the following\n\nCALLER: #{caller.join("\n")}" - super msg - end - end - - class GitCommandError < GitError - def initialize(command, path = nil, extra_info = nil) - msg = String.new - msg << "Git error: command `git #{command}` in directory #{SharedHelpers.pwd} has failed." - msg << "\n#{extra_info}" if extra_info - msg << "\nIf this error persists you could try removing the cache directory '#{path}'" if path && path.exist? - super msg - end - end - - class MissingGitRevisionError < GitError - def initialize(ref, repo) - msg = "Revision #{ref} does not exist in the repository #{repo}. Maybe you misspelled it?" - super msg - end - end - - # The GitProxy is responsible to interact with git repositories. - # All actions required by the Git source is encapsulated in this - # object. - class GitProxy - attr_accessor :path, :uri, :ref - attr_writer :revision - - def initialize(path, uri, ref, revision = nil, git = nil) - @path = path - @uri = uri - @ref = ref - @revision = revision - @git = git - raise GitNotInstalledError.new if allow? && !Bundler.git_present? - end - - def revision - return @revision if @revision - - begin - @revision ||= find_local_revision - rescue GitCommandError - raise MissingGitRevisionError.new(ref, URICredentialsFilter.credential_filtered_uri(uri)) - end - - @revision - end - - def branch - @branch ||= allowed_in_path do - git("rev-parse --abbrev-ref HEAD").strip - end - end - - def contains?(commit) - allowed_in_path do - result = git_null("branch --contains #{commit}") - $? == 0 && result =~ /^\* (.*)$/ - end - end - - def version - git("--version").match(/(git version\s*)?((\.?\d+)+).*/)[2] - end - - def full_version - git("--version").sub("git version", "").strip - end - - def checkout - return if path.exist? && has_revision_cached? - extra_ref = "#{Shellwords.shellescape(ref)}:#{Shellwords.shellescape(ref)}" if ref && ref.start_with?("refs/") - - Bundler.ui.info "Fetching #{URICredentialsFilter.credential_filtered_uri(uri)}" - - unless path.exist? - SharedHelpers.filesystem_access(path.dirname) do |p| - FileUtils.mkdir_p(p) - end - git_retry %(clone #{uri_escaped_with_configured_credentials} "#{path}" --bare --no-hardlinks --quiet) - return unless extra_ref - end - - in_path do - git_retry %(fetch --force --quiet --tags #{uri_escaped_with_configured_credentials} "refs/heads/*:refs/heads/*" #{extra_ref}) - end - end - - def copy_to(destination, submodules = false) - # method 1 - unless File.exist?(destination.join(".git")) - begin - SharedHelpers.filesystem_access(destination.dirname) do |p| - FileUtils.mkdir_p(p) - end - SharedHelpers.filesystem_access(destination) do |p| - FileUtils.rm_rf(p) - end - git_retry %(clone --no-checkout --quiet "#{path}" "#{destination}") - File.chmod(((File.stat(destination).mode | 0o777) & ~File.umask), destination) - rescue Errno::EEXIST => e - file_path = e.message[%r{.*?(/.*)}, 1] - raise GitError, "Bundler could not install a gem because it needs to " \ - "create a directory, but a file exists - #{file_path}. Please delete " \ - "this file and try again." - end - end - # method 2 - SharedHelpers.chdir(destination) do - git_retry %(fetch --force --quiet --tags "#{path}") - git "reset --hard #{@revision}" - - if submodules - git_retry "submodule update --init --recursive" - elsif Gem::Version.create(version) >= Gem::Version.create("2.9.0") - git_retry "submodule deinit --all --force" - end - end - end - - private - - # TODO: Do not rely on /dev/null. - # Given that open3 is not cross platform until Ruby 1.9.3, - # the best solution is to pipe to /dev/null if it exists. - # If it doesn't, everything will work fine, but the user - # will get the $stderr messages as well. - def git_null(command) - git("#{command} 2>#{Bundler::NULL}", false) - end - - def git_retry(command) - Bundler::Retry.new("`git #{URICredentialsFilter.credential_filtered_string(command, uri)}`", GitNotAllowedError).attempts do - git(command) - end - end - - def git(command, check_errors = true, error_msg = nil) - command_with_no_credentials = URICredentialsFilter.credential_filtered_string(command, uri) - raise GitNotAllowedError.new(command_with_no_credentials) unless allow? - - out = SharedHelpers.with_clean_git_env do - capture_and_filter_stderr(uri) { `git #{command}` } - end - - stdout_with_no_credentials = URICredentialsFilter.credential_filtered_string(out, uri) - raise GitCommandError.new(command_with_no_credentials, path, error_msg) if check_errors && !$?.success? - stdout_with_no_credentials - end - - def has_revision_cached? - return unless @revision - in_path { git("cat-file -e #{@revision}") } - true - rescue GitError - false - end - - def remove_cache - FileUtils.rm_rf(path) - end - - def find_local_revision - allowed_in_path do - git("rev-parse --verify #{Shellwords.shellescape(ref)}", true).strip - end - end - - # Escape the URI for git commands - def uri_escaped_with_configured_credentials - remote = configured_uri_for(uri) - if Bundler::WINDOWS - # Windows quoting requires double quotes only, with double quotes - # inside the string escaped by being doubled. - '"' + remote.gsub('"') { '""' } + '"' - else - # Bash requires single quoted strings, with the single quotes escaped - # by ending the string, escaping the quote, and restarting the string. - "'" + remote.gsub("'") { "'\\''" } + "'" - end - end - - # Adds credentials to the URI as Fetcher#configured_uri_for does - def configured_uri_for(uri) - if /https?:/ =~ uri - remote = URI(uri) - config_auth = Bundler.settings[remote.to_s] || Bundler.settings[remote.host] - remote.userinfo ||= config_auth - remote.to_s - else - uri - end - end - - def allow? - @git ? @git.allow_git_ops? : true - end - - def in_path(&blk) - checkout unless path.exist? - _ = URICredentialsFilter # load it before we chdir - SharedHelpers.chdir(path, &blk) - end - - def allowed_in_path - return in_path { yield } if allow? - raise GitError, "The git source #{uri} is not yet checked out. Please run `bundle install` before trying to start your application" - end - - # TODO: Replace this with Open3 when upgrading to bundler 2 - # Similar to #git_null, as Open3 is not cross-platform, - # a temporary way is to use Tempfile to capture the stderr. - # When replacing this using Open3, make sure git_null is - # also replaced by Open3, so stdout and stderr all got handled properly. - def capture_and_filter_stderr(uri) - return_value, captured_err = "" - backup_stderr = STDERR.dup - begin - Tempfile.open("captured_stderr") do |f| - STDERR.reopen(f) - return_value = yield - f.rewind - captured_err = f.read - end - ensure - STDERR.reopen backup_stderr - end - $stderr.puts URICredentialsFilter.credential_filtered_string(captured_err, uri) if uri && !captured_err.empty? - return_value - end - end - end - end -end diff --git a/lib/bundler/source/metadata.rb b/lib/bundler/source/metadata.rb deleted file mode 100644 index 93909002c7..0000000000 --- a/lib/bundler/source/metadata.rb +++ /dev/null @@ -1,63 +0,0 @@ -# frozen_string_literal: true - -module Bundler - class Source - class Metadata < Source - def specs - @specs ||= Index.build do |idx| - idx << Gem::Specification.new("ruby\0", RubyVersion.system.to_gem_version_with_patchlevel) - idx << Gem::Specification.new("rubygems\0", Gem::VERSION) - - idx << Gem::Specification.new do |s| - s.name = "bundler" - s.version = VERSION - s.platform = Gem::Platform::RUBY - s.source = self - s.authors = ["bundler team"] - s.bindir = "exe" - s.executables = %w[bundle] - # can't point to the actual gemspec or else the require paths will be wrong - s.loaded_from = File.expand_path("..", __FILE__) - end - if loaded_spec = nil && Bundler.rubygems.loaded_specs("bundler") - idx << loaded_spec # this has to come after the fake gemspec, to override it - elsif local_spec = Bundler.rubygems.find_name("bundler").find {|s| s.version.to_s == VERSION } - idx << local_spec - end - - idx.each {|s| s.source = self } - end - end - - def cached!; end - - def remote!; end - - def options - {} - end - - def install(spec, _opts = {}) - print_using_message "Using #{version_message(spec)}" - nil - end - - def to_s - "the local ruby installation" - end - - def ==(other) - self.class == other.class - end - alias_method :eql?, :== - - def hash - self.class.hash - end - - def version_message(spec) - "#{spec.name} #{spec.version}" - end - end - end -end diff --git a/lib/bundler/source/path.rb b/lib/bundler/source/path.rb deleted file mode 100644 index ed734bf549..0000000000 --- a/lib/bundler/source/path.rb +++ /dev/null @@ -1,249 +0,0 @@ -# frozen_string_literal: true - -module Bundler - class Source - class Path < Source - autoload :Installer, "bundler/source/path/installer" - - attr_reader :path, :options, :root_path, :original_path - attr_writer :name - attr_accessor :version - - protected :original_path - - DEFAULT_GLOB = "{,*,*/*}.gemspec".freeze - - def initialize(options) - @options = options.dup - @glob = options["glob"] || DEFAULT_GLOB - - @allow_cached = false - @allow_remote = false - - @root_path = options["root_path"] || Bundler.root - - if options["path"] - @path = Pathname.new(options["path"]) - @path = expand(@path) unless @path.relative? - end - - @name = options["name"] - @version = options["version"] - - # Stores the original path. If at any point we move to the - # cached directory, we still have the original path to copy from. - @original_path = @path - end - - def remote! - @local_specs = nil - @allow_remote = true - end - - def cached! - @local_specs = nil - @allow_cached = true - end - - def self.from_lock(options) - new(options.merge("path" => options.delete("remote"))) - end - - def to_lock - out = String.new("PATH\n") - out << " remote: #{lockfile_path}\n" - out << " glob: #{@glob}\n" unless @glob == DEFAULT_GLOB - out << " specs:\n" - end - - def to_s - "source at `#{@path}`" - end - - def hash - [self.class, expanded_path, version].hash - end - - def eql?(other) - return unless other.class == self.class - expanded_original_path == other.expanded_original_path && - version == other.version - end - - alias_method :==, :eql? - - def name - File.basename(expanded_path.to_s) - end - - def install(spec, options = {}) - print_using_message "Using #{version_message(spec)} from #{self}" - generate_bin(spec, :disable_extensions => true) - nil # no post-install message - end - - def cache(spec, custom_path = nil) - app_cache_path = app_cache_path(custom_path) - return unless Bundler.feature_flag.cache_all? - return if expand(@original_path).to_s.index(root_path.to_s + "/") == 0 - - unless @original_path.exist? - raise GemNotFound, "Can't cache gem #{version_message(spec)} because #{self} is missing!" - end - - FileUtils.rm_rf(app_cache_path) - FileUtils.cp_r("#{@original_path}/.", app_cache_path) - FileUtils.touch(app_cache_path.join(".bundlecache")) - end - - def local_specs(*) - @local_specs ||= load_spec_files - end - - def specs - if has_app_cache? - @path = app_cache_path - @expanded_path = nil # Invalidate - end - local_specs - end - - def app_cache_dirname - name - end - - def root - Bundler.root - end - - def expanded_original_path - @expanded_original_path ||= expand(original_path) - end - - private - - def expanded_path - @expanded_path ||= expand(path) - end - - def expand(somepath) - somepath.expand_path(root_path) - rescue ArgumentError => e - Bundler.ui.debug(e) - raise PathError, "There was an error while trying to use the path " \ - "`#{somepath}`.\nThe error message was: #{e.message}." - end - - def lockfile_path - return relative_path(original_path) if original_path.absolute? - expand(original_path).relative_path_from(Bundler.root) - end - - def app_cache_path(custom_path = nil) - @app_cache_path ||= Bundler.app_cache(custom_path).join(app_cache_dirname) - end - - def has_app_cache? - SharedHelpers.in_bundle? && app_cache_path.exist? - end - - def load_gemspec(file) - return unless spec = Bundler.load_gemspec(file) - Bundler.rubygems.set_installed_by_version(spec) - spec - end - - def validate_spec(spec) - Bundler.rubygems.validate(spec) - end - - def load_spec_files - index = Index.new - - if File.directory?(expanded_path) - # We sort depth-first since `<<` will override the earlier-found specs - Dir["#{expanded_path}/#{@glob}"].sort_by {|p| -p.split(File::SEPARATOR).size }.each do |file| - next unless spec = load_gemspec(file) - spec.source = self - - # Validation causes extension_dir to be calculated, which depends - # on #source, so we validate here instead of load_gemspec - validate_spec(spec) - index << spec - end - - if index.empty? && @name && @version - index << Gem::Specification.new do |s| - s.name = @name - s.source = self - s.version = Gem::Version.new(@version) - s.platform = Gem::Platform::RUBY - s.summary = "Fake gemspec for #{@name}" - s.relative_loaded_from = "#{@name}.gemspec" - s.authors = ["no one"] - if expanded_path.join("bin").exist? - executables = expanded_path.join("bin").children - executables.reject! {|p| File.directory?(p) } - s.executables = executables.map {|c| c.basename.to_s } - end - end - end - else - message = String.new("The path `#{expanded_path}` ") - message << if File.exist?(expanded_path) - "is not a directory." - else - "does not exist." - end - raise PathError, message - end - - index - end - - def relative_path(path = self.path) - if path.to_s.start_with?(root_path.to_s) - return path.relative_path_from(root_path) - end - path - end - - def generate_bin(spec, options = {}) - gem_dir = Pathname.new(spec.full_gem_path) - - # Some gem authors put absolute paths in their gemspec - # and we have to save them from themselves - spec.files = spec.files.map do |p| - next p unless p =~ /\A#{Pathname::SEPARATOR_PAT}/ - next if File.directory?(p) - begin - Pathname.new(p).relative_path_from(gem_dir).to_s - rescue ArgumentError - p - end - end.compact - - installer = Path::Installer.new( - spec, - :env_shebang => false, - :disable_extensions => options[:disable_extensions], - :build_args => options[:build_args], - :bundler_extension_cache_path => extension_cache_path(spec) - ) - installer.post_install - rescue Gem::InvalidSpecificationException => e - Bundler.ui.warn "\n#{spec.name} at #{spec.full_gem_path} did not have a valid gemspec.\n" \ - "This prevents bundler from installing bins or native extensions, but " \ - "that may not affect its functionality." - - if !spec.extensions.empty? && !spec.email.empty? - Bundler.ui.warn "If you need to use this package without installing it from a gem " \ - "repository, please contact #{spec.email} and ask them " \ - "to modify their .gemspec so it can work with `gem build`." - end - - Bundler.ui.warn "The validation message from RubyGems was:\n #{e.message}" - end - end - end -end diff --git a/lib/bundler/source/path/installer.rb b/lib/bundler/source/path/installer.rb deleted file mode 100644 index a0357ffa39..0000000000 --- a/lib/bundler/source/path/installer.rb +++ /dev/null @@ -1,74 +0,0 @@ -# frozen_string_literal: true - -module Bundler - class Source - class Path - class Installer < Bundler::RubyGemsGemInstaller - attr_reader :spec - - def initialize(spec, options = {}) - @options = options - @spec = spec - @gem_dir = Bundler.rubygems.path(spec.full_gem_path) - @wrappers = true - @env_shebang = true - @format_executable = options[:format_executable] || false - @build_args = options[:build_args] || Bundler.rubygems.build_args - @gem_bin_dir = "#{Bundler.rubygems.gem_dir}/bin" - @disable_extensions = options[:disable_extensions] - - if Bundler.requires_sudo? - @tmp_dir = Bundler.tmp(spec.full_name).to_s - @bin_dir = "#{@tmp_dir}/bin" - else - @bin_dir = @gem_bin_dir - end - end - - def post_install - SharedHelpers.chdir(@gem_dir) do - run_hooks(:pre_install) - - unless @disable_extensions - build_extensions - run_hooks(:post_build) - end - - generate_bin unless spec.executables.nil? || spec.executables.empty? - - run_hooks(:post_install) - end - ensure - Bundler.rm_rf(@tmp_dir) if Bundler.requires_sudo? - end - - private - - def generate_bin - super - - if Bundler.requires_sudo? - SharedHelpers.filesystem_access(@gem_bin_dir) do |p| - Bundler.mkdir_p(p) - end - spec.executables.each do |exe| - Bundler.sudo "cp -R #{@bin_dir}/#{exe} #{@gem_bin_dir}" - end - end - end - - def run_hooks(type) - hooks_meth = "#{type}_hooks" - return unless Gem.respond_to?(hooks_meth) - Gem.send(hooks_meth).each do |hook| - result = hook.call(self) - next unless result == false - location = " at #{$1}" if hook.inspect =~ /@(.*:\d+)/ - message = "#{type} hook#{location} failed for #{spec.full_name}" - raise InstallHookError, message - end - end - end - end - end -end diff --git a/lib/bundler/source/rubygems.rb b/lib/bundler/source/rubygems.rb deleted file mode 100644 index 3cf22a50f1..0000000000 --- a/lib/bundler/source/rubygems.rb +++ /dev/null @@ -1,530 +0,0 @@ -# frozen_string_literal: true - -require "uri" -require "rubygems/user_interaction" - -module Bundler - class Source - class Rubygems < Source - autoload :Remote, "bundler/source/rubygems/remote" - - # Use the API when installing less than X gems - API_REQUEST_LIMIT = 500 - # Ask for X gems per API request - API_REQUEST_SIZE = 50 - - attr_reader :remotes, :caches - - def initialize(options = {}) - @options = options - @remotes = [] - @dependency_names = [] - @allow_remote = false - @allow_cached = false - @caches = [cache_path, *Bundler.rubygems.gem_cache] - - Array(options["remotes"] || []).reverse_each {|r| add_remote(r) } - end - - def remote! - @specs = nil - @allow_remote = true - end - - def cached! - @specs = nil - @allow_cached = true - end - - def hash - @remotes.hash - end - - def eql?(other) - other.is_a?(Rubygems) && other.credless_remotes == credless_remotes - end - - alias_method :==, :eql? - - def include?(o) - o.is_a?(Rubygems) && (o.credless_remotes - credless_remotes).empty? - end - - def can_lock?(spec) - return super if Bundler.feature_flag.lockfile_uses_separate_rubygems_sources? - spec.source.is_a?(Rubygems) - end - - def options - { "remotes" => @remotes.map(&:to_s) } - end - - def self.from_lock(options) - new(options) - end - - def to_lock - out = String.new("GEM\n") - remotes.reverse_each do |remote| - out << " remote: #{suppress_configured_credentials remote}\n" - end - out << " specs:\n" - end - - def to_s - if remotes.empty? - "locally installed gems" - else - remote_names = remotes.map(&:to_s).join(", ") - "rubygems repository #{remote_names} or installed locally" - end - end - alias_method :name, :to_s - - def specs - @specs ||= begin - # remote_specs usually generates a way larger Index than the other - # sources, and large_idx.use small_idx is way faster than - # small_idx.use large_idx. - idx = @allow_remote ? remote_specs.dup : Index.new - idx.use(cached_specs, :override_dupes) if @allow_cached || @allow_remote - idx.use(installed_specs, :override_dupes) - idx - end - end - - def install(spec, opts = {}) - force = opts[:force] - ensure_builtin_gems_cached = opts[:ensure_builtin_gems_cached] - - if ensure_builtin_gems_cached && builtin_gem?(spec) - if !cached_path(spec) - cached_built_in_gem(spec) unless spec.remote - force = true - else - spec.loaded_from = loaded_from(spec) - end - end - - if installed?(spec) && !force - print_using_message "Using #{version_message(spec)}" - return nil # no post-install message - end - - # Download the gem to get the spec, because some specs that are returned - # by rubygems.org are broken and wrong. - if spec.remote - # Check for this spec from other sources - uris = [spec.remote.anonymized_uri] - uris += remotes_for_spec(spec).map(&:anonymized_uri) - uris.uniq! - Installer.ambiguous_gems << [spec.name, *uris] if uris.length > 1 - - s = Bundler.rubygems.spec_from_gem(fetch_gem(spec), Bundler.settings["trust-policy"]) - spec.__swap__(s) - end - - unless Bundler.settings[:no_install] - message = "Installing #{version_message(spec)}" - message += " with native extensions" if spec.extensions.any? - Bundler.ui.confirm message - - path = cached_gem(spec) - if requires_sudo? - install_path = Bundler.tmp(spec.full_name) - bin_path = install_path.join("bin") - else - install_path = rubygems_dir - bin_path = Bundler.system_bindir - end - - installed_spec = nil - Bundler.rubygems.preserve_paths do - installed_spec = Bundler::RubyGemsGemInstaller.at( - path, - :install_dir => install_path.to_s, - :bin_dir => bin_path.to_s, - :ignore_dependencies => true, - :wrappers => true, - :env_shebang => true, - :build_args => opts[:build_args], - :bundler_expected_checksum => spec.respond_to?(:checksum) && spec.checksum, - :bundler_extension_cache_path => extension_cache_path(spec) - ).install - end - spec.full_gem_path = installed_spec.full_gem_path - - # SUDO HAX - if requires_sudo? - Bundler.rubygems.repository_subdirectories.each do |name| - src = File.join(install_path, name, "*") - dst = File.join(rubygems_dir, name) - if name == "extensions" && Dir.glob(src).any? - src = File.join(src, "*/*") - ext_src = Dir.glob(src).first - ext_src.gsub!(src[0..-6], "") - dst = File.dirname(File.join(dst, ext_src)) - end - SharedHelpers.filesystem_access(dst) do |p| - Bundler.mkdir_p(p) - end - Bundler.sudo "cp -R #{src} #{dst}" if Dir[src].any? - end - - spec.executables.each do |exe| - SharedHelpers.filesystem_access(Bundler.system_bindir) do |p| - Bundler.mkdir_p(p) - end - Bundler.sudo "cp -R #{install_path}/bin/#{exe} #{Bundler.system_bindir}/" - end - end - installed_spec.loaded_from = loaded_from(spec) - end - spec.loaded_from = loaded_from(spec) - - spec.post_install_message - ensure - Bundler.rm_rf(install_path) if requires_sudo? - end - - def cache(spec, custom_path = nil) - if builtin_gem?(spec) - cached_path = cached_built_in_gem(spec) - else - cached_path = cached_gem(spec) - end - raise GemNotFound, "Missing gem file '#{spec.full_name}.gem'." unless cached_path - return if File.dirname(cached_path) == Bundler.app_cache.to_s - Bundler.ui.info " * #{File.basename(cached_path)}" - FileUtils.cp(cached_path, Bundler.app_cache(custom_path)) - rescue Errno::EACCES => e - Bundler.ui.debug(e) - raise InstallError, e.message - end - - def cached_built_in_gem(spec) - cached_path = cached_path(spec) - if cached_path.nil? - remote_spec = remote_specs.search(spec).first - if remote_spec - cached_path = fetch_gem(remote_spec) - else - Bundler.ui.warn "#{spec.full_name} is built in to Ruby, and can't be cached because your Gemfile doesn't have any sources that contain it." - end - end - cached_path - end - - def add_remote(source) - uri = normalize_uri(source) - @remotes.unshift(uri) unless @remotes.include?(uri) - end - - def equivalent_remotes?(other_remotes) - other_remotes.map(&method(:remove_auth)) == @remotes.map(&method(:remove_auth)) - end - - def replace_remotes(other_remotes, allow_equivalent = false) - return false if other_remotes == @remotes - - equivalent = allow_equivalent && equivalent_remotes?(other_remotes) - - @remotes = [] - other_remotes.reverse_each do |r| - add_remote r.to_s - end - - !equivalent - end - - def unmet_deps - if @allow_remote && api_fetchers.any? - remote_specs.unmet_dependency_names - else - [] - end - end - - def fetchers - @fetchers ||= remotes.map do |uri| - remote = Source::Rubygems::Remote.new(uri) - Bundler::Fetcher.new(remote) - end - end - - def double_check_for(unmet_dependency_names) - return unless @allow_remote - return unless api_fetchers.any? - - unmet_dependency_names = unmet_dependency_names.call - unless unmet_dependency_names.nil? - if api_fetchers.size <= 1 - # can't do this when there are multiple fetchers because then we might not fetch from _all_ - # of them - unmet_dependency_names -= remote_specs.spec_names # avoid re-fetching things we've already gotten - end - return if unmet_dependency_names.empty? - end - - Bundler.ui.debug "Double checking for #{unmet_dependency_names || "all specs (due to the size of the request)"} in #{self}" - - fetch_names(api_fetchers, unmet_dependency_names, specs, false) - end - - def dependency_names_to_double_check - names = [] - remote_specs.each do |spec| - case spec - when EndpointSpecification, Gem::Specification, StubSpecification, LazySpecification - names.concat(spec.runtime_dependencies) - when RemoteSpecification # from the full index - return nil - else - raise "unhandled spec type (#{spec.inspect})" - end - end - names.map!(&:name) if names - names - end - - protected - - def credless_remotes - remotes.map(&method(:suppress_configured_credentials)) - end - - def remotes_for_spec(spec) - specs.search_all(spec.name).inject([]) do |uris, s| - uris << s.remote if s.remote - uris - end - end - - def loaded_from(spec) - "#{rubygems_dir}/specifications/#{spec.full_name}.gemspec" - end - - def cached_gem(spec) - cached_gem = cached_path(spec) - unless cached_gem - raise Bundler::GemNotFound, "Could not find #{spec.file_name} for installation" - end - cached_gem - end - - def cached_path(spec) - possibilities = @caches.map {|p| "#{p}/#{spec.file_name}" } - possibilities.find {|p| File.exist?(p) } - end - - def normalize_uri(uri) - uri = uri.to_s - uri = "#{uri}/" unless uri =~ %r{/$} - uri = URI(uri) - raise ArgumentError, "The source must be an absolute URI. For example:\n" \ - "source 'https://rubygems.org'" if !uri.absolute? || (uri.is_a?(URI::HTTP) && uri.host.nil?) - uri - end - - def suppress_configured_credentials(remote) - remote_nouser = remove_auth(remote) - if remote.userinfo && remote.userinfo == Bundler.settings[remote_nouser] - remote_nouser - else - remote - end - end - - def remove_auth(remote) - remote.dup.tap {|uri| uri.user = uri.password = nil }.to_s - end - - def installed_specs - @installed_specs ||= Index.build do |idx| - Bundler.rubygems.all_specs.reverse_each do |spec| - next if spec.name == "bundler" - spec.source = self - if Bundler.rubygems.spec_missing_extensions?(spec, false) - Bundler.ui.debug "Source #{self} is ignoring #{spec} because it is missing extensions" - next - end - idx << spec - end - end - end - - def cached_specs - @cached_specs ||= begin - idx = installed_specs.dup - - Dir["#{cache_path}/*.gem"].each do |gemfile| - next if gemfile =~ /^bundler\-[\d\.]+?\.gem/ - s ||= Bundler.rubygems.spec_from_gem(gemfile) - s.source = self - if Bundler.rubygems.spec_missing_extensions?(s, false) - Bundler.ui.debug "Source #{self} is ignoring #{s} because it is missing extensions" - next - end - idx << s - end - - idx - end - end - - def api_fetchers - fetchers.select {|f| f.use_api && f.fetchers.first.api_fetcher? } - end - - def remote_specs - @remote_specs ||= Index.build do |idx| - index_fetchers = fetchers - api_fetchers - - # gather lists from non-api sites - fetch_names(index_fetchers, nil, idx, false) - - # because ensuring we have all the gems we need involves downloading - # the gemspecs of those gems, if the non-api sites contain more than - # about 500 gems, we treat all sites as non-api for speed. - allow_api = idx.size < API_REQUEST_LIMIT && dependency_names.size < API_REQUEST_LIMIT - Bundler.ui.debug "Need to query more than #{API_REQUEST_LIMIT} gems." \ - " Downloading full index instead..." unless allow_api - - fetch_names(api_fetchers, allow_api && dependency_names, idx, false) - end - end - - def fetch_names(fetchers, dependency_names, index, override_dupes) - fetchers.each do |f| - if dependency_names - Bundler.ui.info "Fetching gem metadata from #{f.uri}", Bundler.ui.debug? - index.use f.specs_with_retry(dependency_names, self), override_dupes - Bundler.ui.info "" unless Bundler.ui.debug? # new line now that the dots are over - else - Bundler.ui.info "Fetching source index from #{f.uri}" - index.use f.specs_with_retry(nil, self), override_dupes - end - end - end - - def fetch_gem(spec) - return false unless spec.remote - - spec.fetch_platform - - download_path = requires_sudo? ? Bundler.tmp(spec.full_name) : rubygems_dir - gem_path = "#{rubygems_dir}/cache/#{spec.full_name}.gem" - - SharedHelpers.filesystem_access("#{download_path}/cache") do |p| - FileUtils.mkdir_p(p) - end - download_gem(spec, download_path) - - if requires_sudo? - SharedHelpers.filesystem_access("#{rubygems_dir}/cache") do |p| - Bundler.mkdir_p(p) - end - Bundler.sudo "mv #{download_path}/cache/#{spec.full_name}.gem #{gem_path}" - end - - gem_path - ensure - Bundler.rm_rf(download_path) if requires_sudo? - end - - def builtin_gem?(spec) - # Ruby 2.1, where all included gems have this summary - return true if spec.summary =~ /is bundled with Ruby/ - - # Ruby 2.0, where gemspecs are stored in specifications/default/ - spec.loaded_from && spec.loaded_from.include?("specifications/default/") - end - - def installed?(spec) - installed_specs[spec].any? - end - - def requires_sudo? - Bundler.requires_sudo? - end - - def rubygems_dir - Bundler.rubygems.gem_dir - end - - def cache_path - Bundler.app_cache - end - - private - - # Checks if the requested spec exists in the global cache. If it does, - # we copy it to the download path, and if it does not, we download it. - # - # @param [Specification] spec - # the spec we want to download or retrieve from the cache. - # - # @param [String] download_path - # the local directory the .gem will end up in. - # - def download_gem(spec, download_path) - local_path = File.join(download_path, "cache/#{spec.full_name}.gem") - - if (cache_path = download_cache_path(spec)) && cache_path.file? - SharedHelpers.filesystem_access(local_path) do - FileUtils.cp(cache_path, local_path) - end - else - uri = spec.remote.uri - Bundler.ui.confirm("Fetching #{version_message(spec)}") - Bundler.rubygems.download_gem(spec, uri, download_path) - cache_globally(spec, local_path) - end - end - - # Checks if the requested spec exists in the global cache. If it does - # not, we create the relevant global cache subdirectory if it does not - # exist and copy the spec from the local cache to the global cache. - # - # @param [Specification] spec - # the spec we want to copy to the global cache. - # - # @param [String] local_cache_path - # the local directory from which we want to copy the .gem. - # - def cache_globally(spec, local_cache_path) - return unless cache_path = download_cache_path(spec) - return if cache_path.exist? - - SharedHelpers.filesystem_access(cache_path.dirname, &:mkpath) - SharedHelpers.filesystem_access(cache_path) do - FileUtils.cp(local_cache_path, cache_path) - end - end - - # Returns the global cache path of the calling Rubygems::Source object. - # - # Note that the Source determines the path's subdirectory. We use this - # subdirectory in the global cache path so that gems with the same name - # -- and possibly different versions -- from different sources are saved - # to their respective subdirectories and do not override one another. - # - # @param [Gem::Specification] specification - # - # @return [Pathname] The global cache path. - # - def download_cache_path(spec) - return unless Bundler.feature_flag.global_gem_cache? - return unless remote = spec.remote - return unless cache_slug = remote.cache_slug - - Bundler.user_cache.join("gems", cache_slug, spec.file_name) - end - - def extension_cache_slug(spec) - return unless remote = spec.remote - remote.cache_slug - end - end - end -end diff --git a/lib/bundler/source/rubygems/remote.rb b/lib/bundler/source/rubygems/remote.rb deleted file mode 100644 index e73baaa992..0000000000 --- a/lib/bundler/source/rubygems/remote.rb +++ /dev/null @@ -1,66 +0,0 @@ -# frozen_string_literal: true - -module Bundler - class Source - class Rubygems - class Remote - attr_reader :uri, :anonymized_uri, :original_uri - - def initialize(uri) - orig_uri = uri - uri = Bundler.settings.mirror_for(uri) - @original_uri = orig_uri if orig_uri != uri - fallback_auth = Bundler.settings.credentials_for(uri) - - @uri = apply_auth(uri, fallback_auth).freeze - @anonymized_uri = remove_auth(@uri).freeze - end - - # @return [String] A slug suitable for use as a cache key for this - # remote. - # - def cache_slug - @cache_slug ||= begin - return nil unless SharedHelpers.md5_available? - - cache_uri = original_uri || uri - - uri_parts = [cache_uri.host, cache_uri.user, cache_uri.port, cache_uri.path] - uri_digest = SharedHelpers.digest(:MD5).hexdigest(uri_parts.compact.join(".")) - - uri_parts[-1] = uri_digest - uri_parts.compact.join(".") - end - end - - def to_s - "rubygems remote at #{anonymized_uri}" - end - - private - - def apply_auth(uri, auth) - if auth && uri.userinfo.nil? - uri = uri.dup - uri.userinfo = auth - end - - uri - rescue URI::InvalidComponentError - error_message = "Please CGI escape your usernames and passwords before " \ - "setting them for authentication." - raise HTTPError.new(error_message) - end - - def remove_auth(uri) - if uri.userinfo - uri = uri.dup - uri.user = uri.password = nil - end - - uri - end - end - end - end -end diff --git a/lib/bundler/source_list.rb b/lib/bundler/source_list.rb deleted file mode 100644 index ac2adacb3d..0000000000 --- a/lib/bundler/source_list.rb +++ /dev/null @@ -1,186 +0,0 @@ -# frozen_string_literal: true - -module Bundler - class SourceList - attr_reader :path_sources, - :git_sources, - :plugin_sources, - :global_rubygems_source, - :metadata_source - - def initialize - @path_sources = [] - @git_sources = [] - @plugin_sources = [] - @global_rubygems_source = nil - @rubygems_aggregate = rubygems_aggregate_class.new - @rubygems_sources = [] - @metadata_source = Source::Metadata.new - end - - def add_path_source(options = {}) - if options["gemspec"] - add_source_to_list Source::Gemspec.new(options), path_sources - else - add_source_to_list Source::Path.new(options), path_sources - end - end - - def add_git_source(options = {}) - add_source_to_list(Source::Git.new(options), git_sources).tap do |source| - warn_on_git_protocol(source) - end - end - - def add_rubygems_source(options = {}) - add_source_to_list Source::Rubygems.new(options), @rubygems_sources - end - - def add_plugin_source(source, options = {}) - add_source_to_list Plugin.source(source).new(options), @plugin_sources - end - - def global_rubygems_source=(uri) - if Bundler.feature_flag.lockfile_uses_separate_rubygems_sources? - @global_rubygems_source ||= rubygems_aggregate_class.new("remotes" => uri) - end - add_rubygems_remote(uri) - end - - def add_rubygems_remote(uri) - if Bundler.feature_flag.lockfile_uses_separate_rubygems_sources? - return if Bundler.feature_flag.disable_multisource? - raise InvalidOption, "`lockfile_uses_separate_rubygems_sources` cannot be set without `disable_multisource` being set" - end - @rubygems_aggregate.add_remote(uri) - @rubygems_aggregate - end - - def default_source - global_rubygems_source || @rubygems_aggregate - end - - def rubygems_sources - @rubygems_sources + [default_source] - end - - def rubygems_remotes - rubygems_sources.map(&:remotes).flatten.uniq - end - - def all_sources - path_sources + git_sources + plugin_sources + rubygems_sources + [metadata_source] - end - - def get(source) - source_list_for(source).find {|s| equal_source?(source, s) || equivalent_source?(source, s) } - end - - def lock_sources - if Bundler.feature_flag.lockfile_uses_separate_rubygems_sources? - [[default_source], @rubygems_sources, git_sources, path_sources, plugin_sources].map do |sources| - sources.sort_by(&:to_s) - end.flatten(1) - else - lock_sources = (path_sources + git_sources + plugin_sources).sort_by(&:to_s) - lock_sources << combine_rubygems_sources - end - end - - # Returns true if there are changes - def replace_sources!(replacement_sources) - return true if replacement_sources.empty? - - [path_sources, git_sources, plugin_sources].each do |source_list| - source_list.map! do |source| - replacement_sources.find {|s| s == source } || source - end - end - - replacement_rubygems = !Bundler.feature_flag.lockfile_uses_separate_rubygems_sources? && - replacement_sources.detect {|s| s.is_a?(Source::Rubygems) } - @rubygems_aggregate = replacement_rubygems if replacement_rubygems - - return true if !equal_sources?(lock_sources, replacement_sources) && !equivalent_sources?(lock_sources, replacement_sources) - return true if replacement_rubygems && rubygems_remotes.to_set != replacement_rubygems.remotes.to_set - - false - end - - def cached! - all_sources.each(&:cached!) - end - - def remote! - all_sources.each(&:remote!) - end - - def rubygems_primary_remotes - @rubygems_aggregate.remotes - end - - private - - def rubygems_aggregate_class - Source::Rubygems - end - - def add_source_to_list(source, list) - list.unshift(source).uniq! - source - end - - def source_list_for(source) - case source - when Source::Git then git_sources - when Source::Path then path_sources - when Source::Rubygems then rubygems_sources - when Plugin::API::Source then plugin_sources - else raise ArgumentError, "Invalid source: #{source.inspect}" - end - end - - def combine_rubygems_sources - Source::Rubygems.new("remotes" => rubygems_remotes) - end - - def warn_on_git_protocol(source) - return if Bundler.settings["git.allow_insecure"] - - if source.uri =~ /^git\:/ - Bundler.ui.warn "The git source `#{source.uri}` uses the `git` protocol, " \ - "which transmits data without encryption. Disable this warning with " \ - "`bundle config git.allow_insecure true`, or switch to the `https` " \ - "protocol to keep your data secure." - end - end - - def equal_sources?(lock_sources, replacement_sources) - lock_sources.to_set == replacement_sources.to_set - end - - def equal_source?(source, other_source) - source == other_source - end - - def equivalent_source?(source, other_source) - return false unless Bundler.settings[:allow_deployment_source_credential_changes] && source.is_a?(Source::Rubygems) - - equivalent_rubygems_sources?([source], [other_source]) - end - - def equivalent_sources?(lock_sources, replacement_sources) - return false unless Bundler.settings[:allow_deployment_source_credential_changes] - - lock_rubygems_sources, lock_other_sources = lock_sources.partition {|s| s.is_a?(Source::Rubygems) } - replacement_rubygems_sources, replacement_other_sources = replacement_sources.partition {|s| s.is_a?(Source::Rubygems) } - - equivalent_rubygems_sources?(lock_rubygems_sources, replacement_rubygems_sources) && equal_sources?(lock_other_sources, replacement_other_sources) - end - - def equivalent_rubygems_sources?(lock_sources, replacement_sources) - actual_remotes = replacement_sources.map(&:remotes).flatten.uniq - lock_sources.all? {|s| s.equivalent_remotes?(actual_remotes) } - end - end -end diff --git a/lib/bundler/spec_set.rb b/lib/bundler/spec_set.rb deleted file mode 100644 index 7cd3021997..0000000000 --- a/lib/bundler/spec_set.rb +++ /dev/null @@ -1,189 +0,0 @@ -# frozen_string_literal: true - -require "tsort" -require "forwardable" -require "set" - -module Bundler - class SpecSet - extend Forwardable - include TSort, Enumerable - - def_delegators :@specs, :<<, :length, :add, :remove, :size, :empty? - def_delegators :sorted, :each - - def initialize(specs) - @specs = specs - end - - def for(dependencies, skip = [], check = false, match_current_platform = false, raise_on_missing = true) - handled = Set.new - deps = dependencies.dup - specs = [] - skip += ["bundler"] - - loop do - break unless dep = deps.shift - next if !handled.add?(dep) || skip.include?(dep.name) - - if spec = spec_for_dependency(dep, match_current_platform) - specs << spec - - spec.dependencies.each do |d| - next if d.type == :development - d = DepProxy.new(d, dep.__platform) unless match_current_platform - deps << d - end - elsif check - return false - elsif raise_on_missing - raise "Unable to find a spec satisfying #{dep} in the set. Perhaps the lockfile is corrupted?" - end - end - - if spec = lookup["bundler"].first - specs << spec - end - - check ? true : SpecSet.new(specs) - end - - def valid_for?(deps) - self.for(deps, [], true) - end - - def [](key) - key = key.name if key.respond_to?(:name) - lookup[key].reverse - end - - def []=(key, value) - @specs << value - @lookup = nil - @sorted = nil - value - end - - def sort! - self - end - - def to_a - sorted.dup - end - - def to_hash - lookup.dup - end - - def materialize(deps, missing_specs = nil) - materialized = self.for(deps, [], false, true, !missing_specs).to_a - deps = materialized.map(&:name).uniq - materialized.map! do |s| - next s unless s.is_a?(LazySpecification) - s.source.dependency_names = deps if s.source.respond_to?(:dependency_names=) - spec = s.__materialize__ - unless spec - unless missing_specs - raise GemNotFound, "Could not find #{s.full_name} in any of the sources" - end - missing_specs << s - end - spec - end - SpecSet.new(missing_specs ? materialized.compact : materialized) - end - - # Materialize for all the specs in the spec set, regardless of what platform they're for - # This is in contrast to how for does platform filtering (and specifically different from how `materialize` calls `for` only for the current platform) - # @return [Array] - def materialized_for_all_platforms - names = @specs.map(&:name).uniq - @specs.map do |s| - next s unless s.is_a?(LazySpecification) - s.source.dependency_names = names if s.source.respond_to?(:dependency_names=) - spec = s.__materialize__ - raise GemNotFound, "Could not find #{s.full_name} in any of the sources" unless spec - spec - end - end - - def merge(set) - arr = sorted.dup - set.each do |set_spec| - full_name = set_spec.full_name - next if arr.any? {|spec| spec.full_name == full_name } - arr << set_spec - end - SpecSet.new(arr) - end - - def find_by_name_and_platform(name, platform) - @specs.detect {|spec| spec.name == name && spec.match_platform(platform) } - end - - def what_required(spec) - unless req = find {|s| s.dependencies.any? {|d| d.type == :runtime && d.name == spec.name } } - return [spec] - end - what_required(req) << spec - end - - private - - def sorted - rake = @specs.find {|s| s.name == "rake" } - begin - @sorted ||= ([rake] + tsort).compact.uniq - rescue TSort::Cyclic => error - cgems = extract_circular_gems(error) - raise CyclicDependencyError, "Your bundle requires gems that depend" \ - " on each other, creating an infinite loop. Please remove either" \ - " gem '#{cgems[1]}' or gem '#{cgems[0]}' and try again." - end - end - - def extract_circular_gems(error) - if Bundler.current_ruby.mri? && Bundler.current_ruby.on_19? - error.message.scan(/(\w+) \([^)]/).flatten - else - error.message.scan(/@name="(.*?)"/).flatten - end - end - - def lookup - @lookup ||= begin - lookup = Hash.new {|h, k| h[k] = [] } - Index.sort_specs(@specs).reverse_each do |s| - lookup[s.name] << s - end - lookup - end - end - - def tsort_each_node - # MUST sort by name for backwards compatibility - @specs.sort_by(&:name).each {|s| yield s } - end - - def spec_for_dependency(dep, match_current_platform) - specs_for_platforms = lookup[dep.name] - if match_current_platform - Bundler.rubygems.platforms.reverse_each do |pl| - match = GemHelpers.select_best_platform_match(specs_for_platforms, pl) - return match if match - end - nil - else - GemHelpers.select_best_platform_match(specs_for_platforms, dep.__platform) - end - end - - def tsort_each_child(s) - s.dependencies.sort_by(&:name).each do |d| - next if d.type == :development - lookup[d.name].each {|s2| yield s2 } - end - end - end -end diff --git a/lib/bundler/ssl_certs/.document b/lib/bundler/ssl_certs/.document deleted file mode 100644 index fb66f13c33..0000000000 --- a/lib/bundler/ssl_certs/.document +++ /dev/null @@ -1 +0,0 @@ -# Ignore all files in this directory diff --git a/lib/bundler/ssl_certs/certificate_manager.rb b/lib/bundler/ssl_certs/certificate_manager.rb deleted file mode 100644 index 26fc38ec18..0000000000 --- a/lib/bundler/ssl_certs/certificate_manager.rb +++ /dev/null @@ -1,66 +0,0 @@ -# frozen_string_literal: true - -require "bundler/vendored_fileutils" -require "net/https" -require "openssl" - -module Bundler - module SSLCerts - class CertificateManager - attr_reader :bundler_cert_path, :bundler_certs, :rubygems_certs - - def self.update_from!(rubygems_path) - new(rubygems_path).update! - end - - def initialize(rubygems_path = nil) - if rubygems_path - rubygems_cert_path = File.join(rubygems_path, "lib/rubygems/ssl_certs") - @rubygems_certs = certificates_in(rubygems_cert_path) - end - - @bundler_cert_path = File.expand_path("..", __FILE__) - @bundler_certs = certificates_in(bundler_cert_path) - end - - def up_to_date? - rubygems_certs.all? do |rc| - bundler_certs.find do |bc| - File.basename(bc) == File.basename(rc) && FileUtils.compare_file(bc, rc) - end - end - end - - def update! - return if up_to_date? - - FileUtils.rm bundler_certs - FileUtils.cp rubygems_certs, bundler_cert_path - end - - def connect_to(host) - http = Net::HTTP.new(host, 443) - http.use_ssl = true - http.verify_mode = OpenSSL::SSL::VERIFY_PEER - http.cert_store = store - http.head("/") - end - - private - - def certificates_in(path) - Dir[File.join(path, "**/*.pem")].sort - end - - def store - @store ||= begin - store = OpenSSL::X509::Store.new - bundler_certs.each do |cert| - store.add_file cert - end - store - end - end - end - end -end diff --git a/lib/bundler/ssl_certs/index.rubygems.org/GlobalSignRootCA.pem b/lib/bundler/ssl_certs/index.rubygems.org/GlobalSignRootCA.pem deleted file mode 100644 index f4ce4ca43d..0000000000 --- a/lib/bundler/ssl_certs/index.rubygems.org/GlobalSignRootCA.pem +++ /dev/null @@ -1,21 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIDdTCCAl2gAwIBAgILBAAAAAABFUtaw5QwDQYJKoZIhvcNAQEFBQAwVzELMAkG -A1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jv -b3QgQ0ExGzAZBgNVBAMTEkdsb2JhbFNpZ24gUm9vdCBDQTAeFw05ODA5MDExMjAw -MDBaFw0yODAxMjgxMjAwMDBaMFcxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9i -YWxTaWduIG52LXNhMRAwDgYDVQQLEwdSb290IENBMRswGQYDVQQDExJHbG9iYWxT -aWduIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDaDuaZ -jc6j40+Kfvvxi4Mla+pIH/EqsLmVEQS98GPR4mdmzxzdzxtIK+6NiY6arymAZavp -xy0Sy6scTHAHoT0KMM0VjU/43dSMUBUc71DuxC73/OlS8pF94G3VNTCOXkNz8kHp -1Wrjsok6Vjk4bwY8iGlbKk3Fp1S4bInMm/k8yuX9ifUSPJJ4ltbcdG6TRGHRjcdG -snUOhugZitVtbNV4FpWi6cgKOOvyJBNPc1STE4U6G7weNLWLBYy5d4ux2x8gkasJ -U26Qzns3dLlwR5EiUWMWea6xrkEmCMgZK9FGqkjWZCrXgzT/LCrBbBlDSgeF59N8 -9iFo7+ryUp9/k5DPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8E -BTADAQH/MB0GA1UdDgQWBBRge2YaRQ2XyolQL30EzTSo//z9SzANBgkqhkiG9w0B -AQUFAAOCAQEA1nPnfE920I2/7LqivjTFKDK1fPxsnCwrvQmeU79rXqoRSLblCKOz -yj1hTdNGCbM+w6DjY1Ub8rrvrTnhQ7k4o+YviiY776BQVvnGCv04zcQLcFGUl5gE -38NflNUVyRRBnMRddWQVDf9VMOyGj/8N7yy5Y0b2qvzfvGn9LhJIZJrglfCm7ymP -AbEVtQwdpf5pLGkkeB6zpxxxYu7KyJesF12KwvhHhm4qxFYxldBniYUr+WymXUad -DKqC5JlR3XC321Y9YeRq4VzW9v493kHMB65jUr9TU/Qr6cf9tveCX4XSQRjbgbME -HMUfpIBvFSDJ3gyICh3WZlXi/EjJKSZp4A== ------END CERTIFICATE----- diff --git a/lib/bundler/ssl_certs/rubygems.global.ssl.fastly.net/DigiCertHighAssuranceEVRootCA.pem b/lib/bundler/ssl_certs/rubygems.global.ssl.fastly.net/DigiCertHighAssuranceEVRootCA.pem deleted file mode 100644 index 9e6810ab70..0000000000 --- a/lib/bundler/ssl_certs/rubygems.global.ssl.fastly.net/DigiCertHighAssuranceEVRootCA.pem +++ /dev/null @@ -1,23 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIDxTCCAq2gAwIBAgIQAqxcJmoLQJuPC3nyrkYldzANBgkqhkiG9w0BAQUFADBs -MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 -d3cuZGlnaWNlcnQuY29tMSswKQYDVQQDEyJEaWdpQ2VydCBIaWdoIEFzc3VyYW5j -ZSBFViBSb290IENBMB4XDTA2MTExMDAwMDAwMFoXDTMxMTExMDAwMDAwMFowbDEL -MAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZMBcGA1UECxMQd3d3 -LmRpZ2ljZXJ0LmNvbTErMCkGA1UEAxMiRGlnaUNlcnQgSGlnaCBBc3N1cmFuY2Ug -RVYgUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMbM5XPm -+9S75S0tMqbf5YE/yc0lSbZxKsPVlDRnogocsF9ppkCxxLeyj9CYpKlBWTrT3JTW -PNt0OKRKzE0lgvdKpVMSOO7zSW1xkX5jtqumX8OkhPhPYlG++MXs2ziS4wblCJEM -xChBVfvLWokVfnHoNb9Ncgk9vjo4UFt3MRuNs8ckRZqnrG0AFFoEt7oT61EKmEFB -Ik5lYYeBQVCmeVyJ3hlKV9Uu5l0cUyx+mM0aBhakaHPQNAQTXKFx01p8VdteZOE3 -hzBWBOURtCmAEvF5OYiiAhF8J2a3iLd48soKqDirCmTCv2ZdlYTBoSUeh10aUAsg -EsxBu24LUTi4S8sCAwEAAaNjMGEwDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQF -MAMBAf8wHQYDVR0OBBYEFLE+w2kD+L9HAdSYJhoIAu9jZCvDMB8GA1UdIwQYMBaA -FLE+w2kD+L9HAdSYJhoIAu9jZCvDMA0GCSqGSIb3DQEBBQUAA4IBAQAcGgaX3Nec -nzyIZgYIVyHbIUf4KmeqvxgydkAQV8GK83rZEWWONfqe/EW1ntlMMUu4kehDLI6z -eM7b41N5cdblIZQB2lWHmiRk9opmzN6cN82oNLFpmyPInngiK3BD41VHMWEZ71jF -hS9OMPagMRYjyOfiZRYzy78aG6A9+MpeizGLYAiJLQwGXFK3xPkKmNEVX58Svnw2 -Yzi9RKR/5CYrCsSXaQ3pjOLAEFe4yHYSkVXySGnYvCoCWw9E1CAx2/S6cCZdkGCe -vEsXCS+0yx5DaMkHJ8HSXPfqIbloEpw8nL+e/IBcm2PN7EeqJSdnoDfzAIJ9VNep -+OkuE6N36B9K ------END CERTIFICATE----- diff --git a/lib/bundler/ssl_certs/rubygems.org/AddTrustExternalCARoot.pem b/lib/bundler/ssl_certs/rubygems.org/AddTrustExternalCARoot.pem deleted file mode 100644 index 20585f1c01..0000000000 --- a/lib/bundler/ssl_certs/rubygems.org/AddTrustExternalCARoot.pem +++ /dev/null @@ -1,25 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJTRTEU -MBIGA1UEChMLQWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFs -IFRUUCBOZXR3b3JrMSIwIAYDVQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290 -MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEwNDgzOFowbzELMAkGA1UEBhMCU0Ux -FDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRUcnVzdCBFeHRlcm5h -bCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0EgUm9v -dDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3GjPm8gAELTngTlvt -H7xsD821+iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9 -uMq/NzgtHj6RQa1wVsfwTz/oMp50ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzX -mk6vBbOmcZSccbNQYArHE504B4YCqOmoaSYYkKtMsE8jqzpPhNjfzp/haW+710LX -a0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy2xSoRcRdKn23tNbE7qzN -E0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv77+ldU9U0 -WicCAwEAAaOB3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYD -VR0PBAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0 -Jvf6xCZU7wO94CTLVBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRU -cnVzdCBBQjEmMCQGA1UECxMdQWRkVHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsx -IjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENBIFJvb3SCAQEwDQYJKoZIhvcN -AQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZlj7DYd7usQWxH -YINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5RxNKWt9x+Tu5w/Rw5 -6wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjTK3rMUUKhemPR5ruhxSvC -Nr4TDea9Y355e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEX -c4g/VhsxOBi0cQ+azcgOno4uG+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5a -mnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ= ------END CERTIFICATE----- diff --git a/lib/bundler/stub_specification.rb b/lib/bundler/stub_specification.rb deleted file mode 100644 index 0dd024024a..0000000000 --- a/lib/bundler/stub_specification.rb +++ /dev/null @@ -1,108 +0,0 @@ -# frozen_string_literal: true - -require "bundler/remote_specification" - -module Bundler - class StubSpecification < RemoteSpecification - def self.from_stub(stub) - return stub if stub.is_a?(Bundler::StubSpecification) - spec = new(stub.name, stub.version, stub.platform, nil) - spec.stub = stub - spec - end - - attr_accessor :stub, :ignored - - # Pre 2.2.0 did not include extension_dir - # https://github.com/rubygems/rubygems/commit/9485ca2d101b82a946d6f327f4bdcdea6d4946ea - if Bundler.rubygems.provides?(">= 2.2.0") - def source=(source) - super - # Stub has no concept of source, which means that extension_dir may be wrong - # This is the case for git-based gems. So, instead manually assign the extension dir - return unless source.respond_to?(:extension_dir_name) - path = File.join(stub.extensions_dir, source.extension_dir_name) - stub.extension_dir = File.expand_path(path) - end - end - - def to_yaml - _remote_specification.to_yaml - end - - # @!group Stub Delegates - - if Bundler.rubygems.provides?(">= 2.3") - # This is defined directly to avoid having to load every installed spec - def missing_extensions? - stub.missing_extensions? - end - end - - def activated - stub.activated - end - - def activated=(activated) - stub.instance_variable_set(:@activated, activated) - end - - def default_gem - stub.default_gem - end - - def full_gem_path - # deleted gems can have their stubs return nil, so in that case grab the - # expired path from the full spec - stub.full_gem_path || method_missing(:full_gem_path) - end - - if Bundler.rubygems.provides?(">= 2.2.0") - def full_require_paths - stub.full_require_paths - end - - # This is what we do in bundler/rubygems_ext - # full_require_paths is always implemented in >= 2.2.0 - def load_paths - full_require_paths - end - end - - def loaded_from - stub.loaded_from - end - - if Bundler.rubygems.stubs_provide_full_functionality? - def matches_for_glob(glob) - stub.matches_for_glob(glob) - end - end - - def raw_require_paths - stub.raw_require_paths - end - - private - - def _remote_specification - @_remote_specification ||= begin - rs = stub.to_spec - if rs.equal?(self) # happens when to_spec gets the spec from Gem.loaded_specs - rs = Gem::Specification.load(loaded_from) - Bundler.rubygems.stub_set_spec(stub, rs) - end - - unless rs - raise GemspecError, "The gemspec for #{full_name} at #{loaded_from}" \ - " was missing or broken. Try running `gem pristine #{name} -v #{version}`" \ - " to fix the cached spec." - end - - rs.source = source - - rs - end - end - end -end diff --git a/lib/bundler/templates/.document b/lib/bundler/templates/.document deleted file mode 100644 index fb66f13c33..0000000000 --- a/lib/bundler/templates/.document +++ /dev/null @@ -1 +0,0 @@ -# Ignore all files in this directory diff --git a/lib/bundler/templates/Executable b/lib/bundler/templates/Executable deleted file mode 100755 index 414a75898d..0000000000 --- a/lib/bundler/templates/Executable +++ /dev/null @@ -1,29 +0,0 @@ -#!/usr/bin/env <%= Bundler.settings[:shebang] || RbConfig::CONFIG["ruby_install_name"] %> -# frozen_string_literal: true - -# -# This file was generated by Bundler. -# -# The application '<%= executable %>' is installed as part of a gem, and -# this file is here to facilitate running it. -# - -require "pathname" -ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../<%= relative_gemfile_path %>", - Pathname.new(__FILE__).realpath) - -bundle_binstub = File.expand_path("../bundle", __FILE__) - -if File.file?(bundle_binstub) - if File.read(bundle_binstub, 150) =~ /This file was generated by Bundler/ - load(bundle_binstub) - else - abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run. -Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.") - end -end - -require "rubygems" -require "bundler/setup" - -load Gem.bin_path("<%= spec.name %>", "<%= executable %>") diff --git a/lib/bundler/templates/Executable.bundler b/lib/bundler/templates/Executable.bundler deleted file mode 100644 index eeda90b584..0000000000 --- a/lib/bundler/templates/Executable.bundler +++ /dev/null @@ -1,105 +0,0 @@ -#!/usr/bin/env <%= Bundler.settings[:shebang] || RbConfig::CONFIG["ruby_install_name"] %> -# frozen_string_literal: true - -# -# This file was generated by Bundler. -# -# The application '<%= executable %>' is installed as part of a gem, and -# this file is here to facilitate running it. -# - -require "rubygems" - -m = Module.new do - module_function - - def invoked_as_script? - File.expand_path($0) == File.expand_path(__FILE__) - end - - def env_var_version - ENV["BUNDLER_VERSION"] - end - - def cli_arg_version - return unless invoked_as_script? # don't want to hijack other binstubs - return unless "update".start_with?(ARGV.first || " ") # must be running `bundle update` - bundler_version = nil - update_index = nil - ARGV.each_with_index do |a, i| - if update_index && update_index.succ == i && a =~ Gem::Version::ANCHORED_VERSION_PATTERN - bundler_version = a - end - next unless a =~ /\A--bundler(?:[= ](#{Gem::Version::VERSION_PATTERN}))?\z/ - bundler_version = $1 || ">= 0.a" - update_index = i - end - bundler_version - end - - def gemfile - gemfile = ENV["BUNDLE_GEMFILE"] - return gemfile if gemfile && !gemfile.empty? - - File.expand_path("../<%= relative_gemfile_path %>", __FILE__) - end - - def lockfile - lockfile = - case File.basename(gemfile) - when "gems.rb" then gemfile.sub(/\.rb$/, gemfile) - else "#{gemfile}.lock" - end - File.expand_path(lockfile) - end - - def lockfile_version - return unless File.file?(lockfile) - lockfile_contents = File.read(lockfile) - return unless lockfile_contents =~ /\n\nBUNDLED WITH\n\s{2,}(#{Gem::Version::VERSION_PATTERN})\n/ - Regexp.last_match(1) - end - - def bundler_version - @bundler_version ||= begin - env_var_version || cli_arg_version || - lockfile_version || "#{Gem::Requirement.default}.a" - end - end - - def load_bundler! - ENV["BUNDLE_GEMFILE"] ||= gemfile - - # must dup string for RG < 1.8 compatibility - activate_bundler(bundler_version.dup) - end - - def activate_bundler(bundler_version) - if Gem::Version.correct?(bundler_version) && Gem::Version.new(bundler_version).release < Gem::Version.new("2.0") - bundler_version = "< 2" - end - gem_error = activation_error_handling do - gem "bundler", bundler_version - end - return if gem_error.nil? - require_error = activation_error_handling do - require "bundler/version" - end - return if require_error.nil? && Gem::Requirement.new(bundler_version).satisfied_by?(Gem::Version.new(Bundler::VERSION)) - warn "Activating bundler (#{bundler_version}) failed:\n#{gem_error.message}\n\nTo install the version of bundler this project requires, run `gem install bundler -v '#{bundler_version}'`" - exit 42 - end - - def activation_error_handling - yield - nil - rescue StandardError, LoadError => e - e - end -end - -m.load_bundler! - -if m.invoked_as_script? - load Gem.bin_path("<%= spec.name %>", "<%= executable %>") -end diff --git a/lib/bundler/templates/Executable.standalone b/lib/bundler/templates/Executable.standalone deleted file mode 100644 index 4bf0753f44..0000000000 --- a/lib/bundler/templates/Executable.standalone +++ /dev/null @@ -1,14 +0,0 @@ -#!/usr/bin/env <%= Bundler.settings[:shebang] || RbConfig::CONFIG["ruby_install_name"] %> -# -# This file was generated by Bundler. -# -# The application '<%= executable %>' is installed as part of a gem, and -# this file is here to facilitate running it. -# - -require "pathname" -path = Pathname.new(__FILE__) -$:.unshift File.expand_path "../<%= standalone_path %>", path.realpath - -require "bundler/setup" -load File.expand_path "../<%= executable_path %>", path.realpath diff --git a/lib/bundler/templates/Gemfile b/lib/bundler/templates/Gemfile deleted file mode 100644 index 1afd2cce67..0000000000 --- a/lib/bundler/templates/Gemfile +++ /dev/null @@ -1,7 +0,0 @@ -# frozen_string_literal: true - -source "https://rubygems.org" - -git_source(:github) {|repo_name| "https://github.com/#{repo_name}" } - -# gem "rails" diff --git a/lib/bundler/templates/gems.rb b/lib/bundler/templates/gems.rb deleted file mode 100644 index 547cd6e8d9..0000000000 --- a/lib/bundler/templates/gems.rb +++ /dev/null @@ -1,8 +0,0 @@ -# frozen_string_literal: true - -# A sample gems.rb -source "https://rubygems.org" - -git_source(:github) {|repo_name| "https://github.com/#{repo_name}" } - -# gem "rails" diff --git a/lib/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt b/lib/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt deleted file mode 100644 index a3833d29d7..0000000000 --- a/lib/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt +++ /dev/null @@ -1,74 +0,0 @@ -# Contributor Covenant Code of Conduct - -## Our Pledge - -In the interest of fostering an open and welcoming environment, we as -contributors and maintainers pledge to making participation in our project and -our community a harassment-free experience for everyone, regardless of age, body -size, disability, ethnicity, gender identity and expression, level of experience, -nationality, personal appearance, race, religion, or sexual identity and -orientation. - -## Our Standards - -Examples of behavior that contributes to creating a positive environment -include: - -* Using welcoming and inclusive language -* Being respectful of differing viewpoints and experiences -* Gracefully accepting constructive criticism -* Focusing on what is best for the community -* Showing empathy towards other community members - -Examples of unacceptable behavior by participants include: - -* The use of sexualized language or imagery and unwelcome sexual attention or -advances -* Trolling, insulting/derogatory comments, and personal or political attacks -* Public or private harassment -* Publishing others' private information, such as a physical or electronic - address, without explicit permission -* Other conduct which could reasonably be considered inappropriate in a - professional setting - -## Our Responsibilities - -Project maintainers are responsible for clarifying the standards of acceptable -behavior and are expected to take appropriate and fair corrective action in -response to any instances of unacceptable behavior. - -Project maintainers have the right and responsibility to remove, edit, or -reject comments, commits, code, wiki edits, issues, and other contributions -that are not aligned to this Code of Conduct, or to ban temporarily or -permanently any contributor for other behaviors that they deem inappropriate, -threatening, offensive, or harmful. - -## Scope - -This Code of Conduct applies both within project spaces and in public spaces -when an individual is representing the project or its community. Examples of -representing a project or community include using an official project e-mail -address, posting via an official social media account, or acting as an appointed -representative at an online or offline event. Representation of a project may be -further defined and clarified by project maintainers. - -## Enforcement - -Instances of abusive, harassing, or otherwise unacceptable behavior may be -reported by contacting the project team at <%= config[:email] %>. All -complaints will be reviewed and investigated and will result in a response that -is deemed necessary and appropriate to the circumstances. The project team is -obligated to maintain confidentiality with regard to the reporter of an incident. -Further details of specific enforcement policies may be posted separately. - -Project maintainers who do not follow or enforce the Code of Conduct in good -faith may face temporary or permanent repercussions as determined by other -members of the project's leadership. - -## Attribution - -This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, -available at [http://contributor-covenant.org/version/1/4][version] - -[homepage]: http://contributor-covenant.org -[version]: http://contributor-covenant.org/version/1/4/ diff --git a/lib/bundler/templates/newgem/Gemfile.tt b/lib/bundler/templates/newgem/Gemfile.tt deleted file mode 100644 index c114bd6665..0000000000 --- a/lib/bundler/templates/newgem/Gemfile.tt +++ /dev/null @@ -1,6 +0,0 @@ -source "https://rubygems.org" - -git_source(:github) {|repo_name| "https://github.com/#{repo_name}" } - -# Specify your gem's dependencies in <%= config[:name] %>.gemspec -gemspec diff --git a/lib/bundler/templates/newgem/LICENSE.txt.tt b/lib/bundler/templates/newgem/LICENSE.txt.tt deleted file mode 100644 index 76ef4b0191..0000000000 --- a/lib/bundler/templates/newgem/LICENSE.txt.tt +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) <%= Time.now.year %> <%= config[:author] %> - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/lib/bundler/templates/newgem/README.md.tt b/lib/bundler/templates/newgem/README.md.tt deleted file mode 100644 index 868a0afe67..0000000000 --- a/lib/bundler/templates/newgem/README.md.tt +++ /dev/null @@ -1,47 +0,0 @@ -# <%= config[:constant_name] %> - -Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/<%= config[:namespaced_path] %>`. To experiment with that code, run `bin/console` for an interactive prompt. - -TODO: Delete this and the text above, and describe your gem - -## Installation - -Add this line to your application's Gemfile: - -```ruby -gem '<%= config[:name] %>' -``` - -And then execute: - - $ bundle - -Or install it yourself as: - - $ gem install <%= config[:name] %> - -## Usage - -TODO: Write usage instructions here - -## Development - -After checking out the repo, run `bin/setup` to install dependencies.<% if config[:test] %> Then, run `rake <%= config[:test].sub('mini', '').sub('rspec', 'spec') %>` to run the tests.<% end %> You can also run `bin/console` for an interactive prompt that will allow you to experiment.<% if config[:bin] %> Run `bundle exec <%= config[:name] %>` to use the gem in this directory, ignoring other installed copies of this gem.<% end %> - -To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org). - -## Contributing - -Bug reports and pull requests are welcome on GitHub at https://github.com/<%= config[:github_username] %>/<%= config[:name] %>.<% if config[:coc] %> This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.<% end %> -<% if config[:mit] -%> - -## License - -The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT). -<% end -%> -<% if config[:coc] -%> - -## Code of Conduct - -Everyone interacting in the <%= config[:constant_name] %> project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/<%= config[:github_username] %>/<%= config[:name] %>/blob/master/CODE_OF_CONDUCT.md). -<% end -%> diff --git a/lib/bundler/templates/newgem/Rakefile.tt b/lib/bundler/templates/newgem/Rakefile.tt deleted file mode 100644 index 099da6f3ec..0000000000 --- a/lib/bundler/templates/newgem/Rakefile.tt +++ /dev/null @@ -1,29 +0,0 @@ -require "bundler/gem_tasks" -<% if config[:test] == "minitest" -%> -require "rake/testtask" - -Rake::TestTask.new(:test) do |t| - t.libs << "test" - t.libs << "lib" - t.test_files = FileList["test/**/*_test.rb"] -end - -<% elsif config[:test] == "rspec" -%> -require "rspec/core/rake_task" - -RSpec::Core::RakeTask.new(:spec) - -<% end -%> -<% if config[:ext] -%> -require "rake/extensiontask" - -task :build => :compile - -Rake::ExtensionTask.new("<%= config[:underscored_name] %>") do |ext| - ext.lib_dir = "lib/<%= config[:namespaced_path] %>" -end - -task :default => [:clobber, :compile, :<%= config[:test_task] %>] -<% else -%> -task :default => :<%= config[:test_task] %> -<% end -%> diff --git a/lib/bundler/templates/newgem/bin/console.tt b/lib/bundler/templates/newgem/bin/console.tt deleted file mode 100644 index a27f82430f..0000000000 --- a/lib/bundler/templates/newgem/bin/console.tt +++ /dev/null @@ -1,14 +0,0 @@ -#!/usr/bin/env ruby - -require "bundler/setup" -require "<%= config[:namespaced_path] %>" - -# You can add fixtures and/or initialization code here to make experimenting -# with your gem easier. You can also use a different console, if you like. - -# (If you use this, don't forget to add pry to your Gemfile!) -# require "pry" -# Pry.start - -require "irb" -IRB.start(__FILE__) diff --git a/lib/bundler/templates/newgem/bin/setup.tt b/lib/bundler/templates/newgem/bin/setup.tt deleted file mode 100644 index dce67d860a..0000000000 --- a/lib/bundler/templates/newgem/bin/setup.tt +++ /dev/null @@ -1,8 +0,0 @@ -#!/usr/bin/env bash -set -euo pipefail -IFS=$'\n\t' -set -vx - -bundle install - -# Do any other automated setup that you need to do here diff --git a/lib/bundler/templates/newgem/exe/newgem.tt b/lib/bundler/templates/newgem/exe/newgem.tt deleted file mode 100644 index a8339bb79f..0000000000 --- a/lib/bundler/templates/newgem/exe/newgem.tt +++ /dev/null @@ -1,3 +0,0 @@ -#!/usr/bin/env ruby - -require "<%= config[:namespaced_path] %>" diff --git a/lib/bundler/templates/newgem/ext/newgem/extconf.rb.tt b/lib/bundler/templates/newgem/ext/newgem/extconf.rb.tt deleted file mode 100644 index 8cfc828f94..0000000000 --- a/lib/bundler/templates/newgem/ext/newgem/extconf.rb.tt +++ /dev/null @@ -1,3 +0,0 @@ -require "mkmf" - -create_makefile(<%= config[:makefile_path].inspect %>) diff --git a/lib/bundler/templates/newgem/ext/newgem/newgem.c.tt b/lib/bundler/templates/newgem/ext/newgem/newgem.c.tt deleted file mode 100644 index 8177c4d202..0000000000 --- a/lib/bundler/templates/newgem/ext/newgem/newgem.c.tt +++ /dev/null @@ -1,9 +0,0 @@ -#include "<%= config[:underscored_name] %>.h" - -VALUE rb_m<%= config[:constant_array].join %>; - -void -Init_<%= config[:underscored_name] %>(void) -{ - rb_m<%= config[:constant_array].join %> = rb_define_module(<%= config[:constant_name].inspect %>); -} diff --git a/lib/bundler/templates/newgem/ext/newgem/newgem.h.tt b/lib/bundler/templates/newgem/ext/newgem/newgem.h.tt deleted file mode 100644 index c6e420b66e..0000000000 --- a/lib/bundler/templates/newgem/ext/newgem/newgem.h.tt +++ /dev/null @@ -1,6 +0,0 @@ -#ifndef <%= config[:underscored_name].upcase %>_H -#define <%= config[:underscored_name].upcase %>_H 1 - -#include "ruby.h" - -#endif /* <%= config[:underscored_name].upcase %>_H */ diff --git a/lib/bundler/templates/newgem/gitignore.tt b/lib/bundler/templates/newgem/gitignore.tt deleted file mode 100644 index b1c9f9986c..0000000000 --- a/lib/bundler/templates/newgem/gitignore.tt +++ /dev/null @@ -1,20 +0,0 @@ -/.bundle/ -/.yardoc -/_yardoc/ -/coverage/ -/doc/ -/pkg/ -/spec/reports/ -/tmp/ -<%- if config[:ext] -%> -*.bundle -*.so -*.o -*.a -mkmf.log -<%- end -%> -<%- if config[:test] == "rspec" -%> - -# rspec failure tracking -.rspec_status -<%- end -%> diff --git a/lib/bundler/templates/newgem/lib/newgem.rb.tt b/lib/bundler/templates/newgem/lib/newgem.rb.tt deleted file mode 100644 index 7d8ad90ab0..0000000000 --- a/lib/bundler/templates/newgem/lib/newgem.rb.tt +++ /dev/null @@ -1,12 +0,0 @@ -require "<%= config[:namespaced_path] %>/version" -<%- if config[:ext] -%> -require "<%= config[:namespaced_path] %>/<%= config[:underscored_name] %>" -<%- end -%> - -<%- config[:constant_array].each_with_index do |c, i| -%> -<%= " " * i %>module <%= c %> -<%- end -%> -<%= " " * config[:constant_array].size %># Your code goes here... -<%- (config[:constant_array].size-1).downto(0) do |i| -%> -<%= " " * i %>end -<%- end -%> diff --git a/lib/bundler/templates/newgem/lib/newgem/version.rb.tt b/lib/bundler/templates/newgem/lib/newgem/version.rb.tt deleted file mode 100644 index 389daf5048..0000000000 --- a/lib/bundler/templates/newgem/lib/newgem/version.rb.tt +++ /dev/null @@ -1,7 +0,0 @@ -<%- config[:constant_array].each_with_index do |c, i| -%> -<%= " " * i %>module <%= c %> -<%- end -%> -<%= " " * config[:constant_array].size %>VERSION = "0.1.0" -<%- (config[:constant_array].size-1).downto(0) do |i| -%> -<%= " " * i %>end -<%- end -%> diff --git a/lib/bundler/templates/newgem/newgem.gemspec.tt b/lib/bundler/templates/newgem/newgem.gemspec.tt deleted file mode 100644 index 9a87a1374a..0000000000 --- a/lib/bundler/templates/newgem/newgem.gemspec.tt +++ /dev/null @@ -1,49 +0,0 @@ -<%- if RUBY_VERSION < "2.0.0" -%> -# coding: utf-8 -<%- end -%> - -lib = File.expand_path("../lib", __FILE__) -$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib) -require "<%= config[:namespaced_path] %>/version" - -Gem::Specification.new do |spec| - spec.name = <%= config[:name].inspect %> - spec.version = <%= config[:constant_name] %>::VERSION - spec.authors = [<%= config[:author].inspect %>] - spec.email = [<%= config[:email].inspect %>] - - spec.summary = %q{TODO: Write a short summary, because RubyGems requires one.} - spec.description = %q{TODO: Write a longer description or delete this line.} - spec.homepage = "TODO: Put your gem's website or public repo URL here." -<%- if config[:mit] -%> - spec.license = "MIT" -<%- end -%> - - # Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host' - # to allow pushing to a single host or delete this section to allow pushing to any host. - if spec.respond_to?(:metadata) - spec.metadata["allowed_push_host"] = "TODO: Set to 'http://mygemserver.com'" - else - raise "RubyGems 2.0 or newer is required to protect against " \ - "public gem pushes." - end - - spec.files = `git ls-files -z`.split("\x0").reject do |f| - f.match(%r{^(test|spec|features)/}) - end - spec.bindir = "exe" - spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) } - spec.require_paths = ["lib"] -<%- if config[:ext] -%> - spec.extensions = ["ext/<%= config[:underscored_name] %>/extconf.rb"] -<%- end -%> - - spec.add_development_dependency "bundler", "~> <%= config[:bundler_version] %>" - spec.add_development_dependency "rake", "~> 10.0" -<%- if config[:ext] -%> - spec.add_development_dependency "rake-compiler" -<%- end -%> -<%- if config[:test] -%> - spec.add_development_dependency "<%= config[:test] %>", "~> <%= config[:test_framework_version] %>" -<%- end -%> -end diff --git a/lib/bundler/templates/newgem/rspec.tt b/lib/bundler/templates/newgem/rspec.tt deleted file mode 100644 index 34c5164d9b..0000000000 --- a/lib/bundler/templates/newgem/rspec.tt +++ /dev/null @@ -1,3 +0,0 @@ ---format documentation ---color ---require spec_helper diff --git a/lib/bundler/templates/newgem/spec/newgem_spec.rb.tt b/lib/bundler/templates/newgem/spec/newgem_spec.rb.tt deleted file mode 100644 index c63b487830..0000000000 --- a/lib/bundler/templates/newgem/spec/newgem_spec.rb.tt +++ /dev/null @@ -1,9 +0,0 @@ -RSpec.describe <%= config[:constant_name] %> do - it "has a version number" do - expect(<%= config[:constant_name] %>::VERSION).not_to be nil - end - - it "does something useful" do - expect(false).to eq(true) - end -end diff --git a/lib/bundler/templates/newgem/spec/spec_helper.rb.tt b/lib/bundler/templates/newgem/spec/spec_helper.rb.tt deleted file mode 100644 index 805cf57e01..0000000000 --- a/lib/bundler/templates/newgem/spec/spec_helper.rb.tt +++ /dev/null @@ -1,14 +0,0 @@ -require "bundler/setup" -require "<%= config[:namespaced_path] %>" - -RSpec.configure do |config| - # Enable flags like --only-failures and --next-failure - config.example_status_persistence_file_path = ".rspec_status" - - # Disable RSpec exposing methods globally on `Module` and `main` - config.disable_monkey_patching! - - config.expect_with :rspec do |c| - c.syntax = :expect - end -end diff --git a/lib/bundler/templates/newgem/test/newgem_test.rb.tt b/lib/bundler/templates/newgem/test/newgem_test.rb.tt deleted file mode 100644 index f2af9f90e0..0000000000 --- a/lib/bundler/templates/newgem/test/newgem_test.rb.tt +++ /dev/null @@ -1,11 +0,0 @@ -require "test_helper" - -class <%= config[:constant_name] %>Test < Minitest::Test - def test_that_it_has_a_version_number - refute_nil ::<%= config[:constant_name] %>::VERSION - end - - def test_it_does_something_useful - assert false - end -end diff --git a/lib/bundler/templates/newgem/test/test_helper.rb.tt b/lib/bundler/templates/newgem/test/test_helper.rb.tt deleted file mode 100644 index 725e3e4647..0000000000 --- a/lib/bundler/templates/newgem/test/test_helper.rb.tt +++ /dev/null @@ -1,4 +0,0 @@ -$LOAD_PATH.unshift File.expand_path("../../lib", __FILE__) -require "<%= config[:namespaced_path] %>" - -require "minitest/autorun" diff --git a/lib/bundler/templates/newgem/travis.yml.tt b/lib/bundler/templates/newgem/travis.yml.tt deleted file mode 100644 index fe0761cc23..0000000000 --- a/lib/bundler/templates/newgem/travis.yml.tt +++ /dev/null @@ -1,5 +0,0 @@ -sudo: false -language: ruby -rvm: - - <%= RUBY_VERSION %> -before_install: gem install bundler -v <%= Bundler::VERSION %> diff --git a/lib/bundler/ui.rb b/lib/bundler/ui.rb deleted file mode 100644 index 8138b30d38..0000000000 --- a/lib/bundler/ui.rb +++ /dev/null @@ -1,9 +0,0 @@ -# frozen_string_literal: true - -module Bundler - module UI - autoload :RGProxy, "bundler/ui/rg_proxy" - autoload :Shell, "bundler/ui/shell" - autoload :Silent, "bundler/ui/silent" - end -end diff --git a/lib/bundler/ui/rg_proxy.rb b/lib/bundler/ui/rg_proxy.rb deleted file mode 100644 index e2f98481db..0000000000 --- a/lib/bundler/ui/rg_proxy.rb +++ /dev/null @@ -1,19 +0,0 @@ -# frozen_string_literal: true - -require "bundler/ui" -require "rubygems/user_interaction" - -module Bundler - module UI - class RGProxy < ::Gem::SilentUI - def initialize(ui) - @ui = ui - super() - end - - def say(message) - @ui && @ui.debug(message) - end - end - end -end diff --git a/lib/bundler/ui/shell.rb b/lib/bundler/ui/shell.rb deleted file mode 100644 index 3b3b6bfb53..0000000000 --- a/lib/bundler/ui/shell.rb +++ /dev/null @@ -1,144 +0,0 @@ -# frozen_string_literal: true - -require "bundler/vendored_thor" - -module Bundler - module UI - class Shell - LEVELS = %w[silent error warn confirm info debug].freeze - - attr_writer :shell - - def initialize(options = {}) - if options["no-color"] || !$stdout.tty? - Thor::Base.shell = Thor::Shell::Basic - end - @shell = Thor::Base.shell.new - @level = ENV["DEBUG"] ? "debug" : "info" - @warning_history = [] - end - - def add_color(string, *color) - @shell.set_color(string, *color) - end - - def info(msg, newline = nil) - tell_me(msg, nil, newline) if level("info") - end - - def confirm(msg, newline = nil) - tell_me(msg, :green, newline) if level("confirm") - end - - def warn(msg, newline = nil) - return unless level("warn") - return if @warning_history.include? msg - @warning_history << msg - - return tell_err(msg, :yellow, newline) if Bundler.feature_flag.error_on_stderr? - tell_me(msg, :yellow, newline) - end - - def error(msg, newline = nil) - return unless level("error") - return tell_err(msg, :red, newline) if Bundler.feature_flag.error_on_stderr? - tell_me(msg, :red, newline) - end - - def debug(msg, newline = nil) - tell_me(msg, nil, newline) if debug? - end - - def debug? - level("debug") - end - - def quiet? - level("quiet") - end - - def ask(msg) - @shell.ask(msg) - end - - def yes?(msg) - @shell.yes?(msg) - end - - def no? - @shell.no?(msg) - end - - def level=(level) - raise ArgumentError unless LEVELS.include?(level.to_s) - @level = level.to_s - end - - def level(name = nil) - return @level unless name - unless index = LEVELS.index(name) - raise "#{name.inspect} is not a valid level" - end - index <= LEVELS.index(@level) - end - - def trace(e, newline = nil, force = false) - return unless debug? || force - msg = "#{e.class}: #{e.message}\n#{e.backtrace.join("\n ")}" - tell_me(msg, nil, newline) - end - - def silence(&blk) - with_level("silent", &blk) - end - - def unprinted_warnings - [] - end - - private - - # valimism - def tell_me(msg, color = nil, newline = nil) - msg = word_wrap(msg) if newline.is_a?(Hash) && newline[:wrap] - if newline.nil? - @shell.say(msg, color) - else - @shell.say(msg, color, newline) - end - end - - def tell_err(message, color = nil, newline = nil) - newline = message.to_s !~ /( |\t)\Z/ unless newline - message = word_wrap(message) if newline.is_a?(Hash) && newline[:wrap] - - color = nil if color && !$stderr.tty? - - buffer = @shell.send(:prepare_message, message, *color) - buffer << "\n" if newline && !message.to_s.end_with?("\n") - - @shell.send(:stderr).print(buffer) - @shell.send(:stderr).flush - end - - def strip_leading_spaces(text) - spaces = text[/\A\s+/, 0] - spaces ? text.gsub(/#{spaces}/, "") : text - end - - def word_wrap(text, line_width = @shell.terminal_width) - strip_leading_spaces(text).split("\n").collect do |line| - line.length > line_width ? line.gsub(/(.{1,#{line_width}})(\s+|$)/, "\\1\n").strip : line - end * "\n" - end - - def with_level(level) - original = @level - @level = level - yield - ensure - @level = original - end - end - end -end diff --git a/lib/bundler/ui/silent.rb b/lib/bundler/ui/silent.rb deleted file mode 100644 index dca1b2ac86..0000000000 --- a/lib/bundler/ui/silent.rb +++ /dev/null @@ -1,69 +0,0 @@ -# frozen_string_literal: true - -module Bundler - module UI - class Silent - attr_writer :shell - - def initialize - @warnings = [] - end - - def add_color(string, color) - string - end - - def info(message, newline = nil) - end - - def confirm(message, newline = nil) - end - - def warn(message, newline = nil) - @warnings |= [message] - end - - def error(message, newline = nil) - end - - def debug(message, newline = nil) - end - - def debug? - false - end - - def quiet? - false - end - - def ask(message) - end - - def yes?(msg) - raise "Cannot ask yes? with a silent shell" - end - - def no? - raise "Cannot ask no? with a silent shell" - end - - def level=(name) - end - - def level(name = nil) - end - - def trace(message, newline = nil, force = false) - end - - def silence - yield - end - - def unprinted_warnings - @warnings - end - end - end -end diff --git a/lib/bundler/uri_credentials_filter.rb b/lib/bundler/uri_credentials_filter.rb deleted file mode 100644 index ee3692268c..0000000000 --- a/lib/bundler/uri_credentials_filter.rb +++ /dev/null @@ -1,37 +0,0 @@ -# frozen_string_literal: true - -module Bundler - module URICredentialsFilter - module_function - - def credential_filtered_uri(uri_to_anonymize) - return uri_to_anonymize if uri_to_anonymize.nil? - uri = uri_to_anonymize.dup - uri = URI(uri.to_s) unless uri.is_a?(URI) - if uri.userinfo - # oauth authentication - if uri.password == "x-oauth-basic" || uri.password == "x" - # URI as string does not display with password if no user is set - oauth_designation = uri.password - uri.user = oauth_designation - end - uri.password = nil - end - return uri if uri_to_anonymize.is_a?(URI) - return uri.to_s if uri_to_anonymize.is_a?(String) - rescue URI::InvalidURIError # uri is not canonical uri scheme - uri - end - - def credential_filtered_string(str_to_filter, uri) - return str_to_filter if uri.nil? || str_to_filter.nil? - str_with_no_credentials = str_to_filter.dup - anonymous_uri_str = credential_filtered_uri(uri).to_s - uri_str = uri.to_s - if anonymous_uri_str != uri_str - str_with_no_credentials = str_with_no_credentials.gsub(uri_str, anonymous_uri_str) - end - str_with_no_credentials - end - end -end diff --git a/lib/bundler/vendor/fileutils/lib/fileutils.rb b/lib/bundler/vendor/fileutils/lib/fileutils.rb deleted file mode 100644 index cc69740845..0000000000 --- a/lib/bundler/vendor/fileutils/lib/fileutils.rb +++ /dev/null @@ -1,1638 +0,0 @@ -# frozen_string_literal: true -# -# = fileutils.rb -# -# Copyright (c) 2000-2007 Minero Aoki -# -# This program is free software. -# You can distribute/modify this program under the same terms of ruby. -# -# == module Bundler::FileUtils -# -# Namespace for several file utility methods for copying, moving, removing, etc. -# -# === Module Functions -# -# require 'bundler/vendor/fileutils/lib/fileutils' -# -# Bundler::FileUtils.cd(dir, options) -# Bundler::FileUtils.cd(dir, options) {|dir| block } -# Bundler::FileUtils.pwd() -# Bundler::FileUtils.mkdir(dir, options) -# Bundler::FileUtils.mkdir(list, options) -# Bundler::FileUtils.mkdir_p(dir, options) -# Bundler::FileUtils.mkdir_p(list, options) -# Bundler::FileUtils.rmdir(dir, options) -# Bundler::FileUtils.rmdir(list, options) -# Bundler::FileUtils.ln(target, link, options) -# Bundler::FileUtils.ln(targets, dir, options) -# Bundler::FileUtils.ln_s(target, link, options) -# Bundler::FileUtils.ln_s(targets, dir, options) -# Bundler::FileUtils.ln_sf(target, link, options) -# Bundler::FileUtils.cp(src, dest, options) -# Bundler::FileUtils.cp(list, dir, options) -# Bundler::FileUtils.cp_r(src, dest, options) -# Bundler::FileUtils.cp_r(list, dir, options) -# Bundler::FileUtils.mv(src, dest, options) -# Bundler::FileUtils.mv(list, dir, options) -# Bundler::FileUtils.rm(list, options) -# Bundler::FileUtils.rm_r(list, options) -# Bundler::FileUtils.rm_rf(list, options) -# Bundler::FileUtils.install(src, dest, options) -# Bundler::FileUtils.chmod(mode, list, options) -# Bundler::FileUtils.chmod_R(mode, list, options) -# Bundler::FileUtils.chown(user, group, list, options) -# Bundler::FileUtils.chown_R(user, group, list, options) -# Bundler::FileUtils.touch(list, options) -# -# The options parameter is a hash of options, taken from the list -# :force, :noop, :preserve, and :verbose. -# :noop means that no changes are made. The other three are obvious. -# Each method documents the options that it honours. -# -# All methods that have the concept of a "source" file or directory can take -# either one file or a list of files in that argument. See the method -# documentation for examples. -# -# There are some `low level' methods, which do not accept any option: -# -# Bundler::FileUtils.copy_entry(src, dest, preserve = false, dereference = false) -# Bundler::FileUtils.copy_file(src, dest, preserve = false, dereference = true) -# Bundler::FileUtils.copy_stream(srcstream, deststream) -# Bundler::FileUtils.remove_entry(path, force = false) -# Bundler::FileUtils.remove_entry_secure(path, force = false) -# Bundler::FileUtils.remove_file(path, force = false) -# Bundler::FileUtils.compare_file(path_a, path_b) -# Bundler::FileUtils.compare_stream(stream_a, stream_b) -# Bundler::FileUtils.uptodate?(file, cmp_list) -# -# == module Bundler::FileUtils::Verbose -# -# This module has all methods of Bundler::FileUtils module, but it outputs messages -# before acting. This equates to passing the :verbose flag to methods -# in Bundler::FileUtils. -# -# == module Bundler::FileUtils::NoWrite -# -# This module has all methods of Bundler::FileUtils module, but never changes -# files/directories. This equates to passing the :noop flag to methods -# in Bundler::FileUtils. -# -# == module Bundler::FileUtils::DryRun -# -# This module has all methods of Bundler::FileUtils module, but never changes -# files/directories. This equates to passing the :noop and -# :verbose flags to methods in Bundler::FileUtils. -# - -module Bundler::FileUtils - - def self.private_module_function(name) #:nodoc: - module_function name - private_class_method name - end - - # - # Returns the name of the current directory. - # - def pwd - Dir.pwd - end - module_function :pwd - - alias getwd pwd - module_function :getwd - - # - # Changes the current directory to the directory +dir+. - # - # If this method is called with block, resumes to the old - # working directory after the block execution finished. - # - # Bundler::FileUtils.cd('/', :verbose => true) # chdir and report it - # - # Bundler::FileUtils.cd('/') do # chdir - # # ... # do something - # end # return to original directory - # - def cd(dir, verbose: nil, &block) # :yield: dir - fu_output_message "cd #{dir}" if verbose - Dir.chdir(dir, &block) - fu_output_message 'cd -' if verbose and block - end - module_function :cd - - alias chdir cd - module_function :chdir - - # - # Returns true if +new+ is newer than all +old_list+. - # Non-existent files are older than any file. - # - # Bundler::FileUtils.uptodate?('hello.o', %w(hello.c hello.h)) or \ - # system 'make hello.o' - # - def uptodate?(new, old_list) - return false unless File.exist?(new) - new_time = File.mtime(new) - old_list.each do |old| - if File.exist?(old) - return false unless new_time > File.mtime(old) - end - end - true - end - module_function :uptodate? - - def remove_trailing_slash(dir) #:nodoc: - dir == '/' ? dir : dir.chomp(?/) - end - private_module_function :remove_trailing_slash - - # - # Creates one or more directories. - # - # Bundler::FileUtils.mkdir 'test' - # Bundler::FileUtils.mkdir %w( tmp data ) - # Bundler::FileUtils.mkdir 'notexist', :noop => true # Does not really create. - # Bundler::FileUtils.mkdir 'tmp', :mode => 0700 - # - def mkdir(list, mode: nil, noop: nil, verbose: nil) - list = fu_list(list) - fu_output_message "mkdir #{mode ? ('-m %03o ' % mode) : ''}#{list.join ' '}" if verbose - return if noop - - list.each do |dir| - fu_mkdir dir, mode - end - end - module_function :mkdir - - # - # Creates a directory and all its parent directories. - # For example, - # - # Bundler::FileUtils.mkdir_p '/usr/local/lib/ruby' - # - # causes to make following directories, if it does not exist. - # - # * /usr - # * /usr/local - # * /usr/local/lib - # * /usr/local/lib/ruby - # - # You can pass several directories at a time in a list. - # - def mkdir_p(list, mode: nil, noop: nil, verbose: nil) - list = fu_list(list) - fu_output_message "mkdir -p #{mode ? ('-m %03o ' % mode) : ''}#{list.join ' '}" if verbose - return *list if noop - - list.map {|path| remove_trailing_slash(path)}.each do |path| - # optimize for the most common case - begin - fu_mkdir path, mode - next - rescue SystemCallError - next if File.directory?(path) - end - - stack = [] - until path == stack.last # dirname("/")=="/", dirname("C:/")=="C:/" - stack.push path - path = File.dirname(path) - end - stack.pop # root directory should exist - stack.reverse_each do |dir| - begin - fu_mkdir dir, mode - rescue SystemCallError - raise unless File.directory?(dir) - end - end - end - - return *list - end - module_function :mkdir_p - - alias mkpath mkdir_p - alias makedirs mkdir_p - module_function :mkpath - module_function :makedirs - - def fu_mkdir(path, mode) #:nodoc: - path = remove_trailing_slash(path) - if mode - Dir.mkdir path, mode - File.chmod mode, path - else - Dir.mkdir path - end - end - private_module_function :fu_mkdir - - # - # Removes one or more directories. - # - # Bundler::FileUtils.rmdir 'somedir' - # Bundler::FileUtils.rmdir %w(somedir anydir otherdir) - # # Does not really remove directory; outputs message. - # Bundler::FileUtils.rmdir 'somedir', :verbose => true, :noop => true - # - def rmdir(list, parents: nil, noop: nil, verbose: nil) - list = fu_list(list) - fu_output_message "rmdir #{parents ? '-p ' : ''}#{list.join ' '}" if verbose - return if noop - list.each do |dir| - begin - Dir.rmdir(dir = remove_trailing_slash(dir)) - if parents - until (parent = File.dirname(dir)) == '.' or parent == dir - dir = parent - Dir.rmdir(dir) - end - end - rescue Errno::ENOTEMPTY, Errno::EEXIST, Errno::ENOENT - end - end - end - module_function :rmdir - - # - # :call-seq: - # Bundler::FileUtils.ln(target, link, force: nil, noop: nil, verbose: nil) - # Bundler::FileUtils.ln(target, dir, force: nil, noop: nil, verbose: nil) - # Bundler::FileUtils.ln(targets, dir, force: nil, noop: nil, verbose: nil) - # - # In the first form, creates a hard link +link+ which points to +target+. - # If +link+ already exists, raises Errno::EEXIST. - # But if the :force option is set, overwrites +link+. - # - # Bundler::FileUtils.ln 'gcc', 'cc', verbose: true - # Bundler::FileUtils.ln '/usr/bin/emacs21', '/usr/bin/emacs' - # - # In the second form, creates a link +dir/target+ pointing to +target+. - # In the third form, creates several hard links in the directory +dir+, - # pointing to each item in +targets+. - # If +dir+ is not a directory, raises Errno::ENOTDIR. - # - # Bundler::FileUtils.cd '/sbin' - # Bundler::FileUtils.ln %w(cp mv mkdir), '/bin' # Now /sbin/cp and /bin/cp are linked. - # - def ln(src, dest, force: nil, noop: nil, verbose: nil) - fu_output_message "ln#{force ? ' -f' : ''} #{[src,dest].flatten.join ' '}" if verbose - return if noop - fu_each_src_dest0(src, dest) do |s,d| - remove_file d, true if force - File.link s, d - end - end - module_function :ln - - alias link ln - module_function :link - - # - # :call-seq: - # Bundler::FileUtils.ln_s(target, link, force: nil, noop: nil, verbose: nil) - # Bundler::FileUtils.ln_s(target, dir, force: nil, noop: nil, verbose: nil) - # Bundler::FileUtils.ln_s(targets, dir, force: nil, noop: nil, verbose: nil) - # - # In the first form, creates a symbolic link +link+ which points to +target+. - # If +link+ already exists, raises Errno::EEXIST. - # But if the :force option is set, overwrites +link+. - # - # Bundler::FileUtils.ln_s '/usr/bin/ruby', '/usr/local/bin/ruby' - # Bundler::FileUtils.ln_s 'verylongsourcefilename.c', 'c', force: true - # - # In the second form, creates a link +dir/target+ pointing to +target+. - # In the third form, creates several symbolic links in the directory +dir+, - # pointing to each item in +targets+. - # If +dir+ is not a directory, raises Errno::ENOTDIR. - # - # Bundler::FileUtils.ln_s Dir.glob('/bin/*.rb'), '/home/foo/bin' - # - def ln_s(src, dest, force: nil, noop: nil, verbose: nil) - fu_output_message "ln -s#{force ? 'f' : ''} #{[src,dest].flatten.join ' '}" if verbose - return if noop - fu_each_src_dest0(src, dest) do |s,d| - remove_file d, true if force - File.symlink s, d - end - end - module_function :ln_s - - alias symlink ln_s - module_function :symlink - - # - # :call-seq: - # Bundler::FileUtils.ln_sf(*args) - # - # Same as - # - # Bundler::FileUtils.ln_s(*args, force: true) - # - def ln_sf(src, dest, noop: nil, verbose: nil) - ln_s src, dest, force: true, noop: noop, verbose: verbose - end - module_function :ln_sf - - # - # Copies a file content +src+ to +dest+. If +dest+ is a directory, - # copies +src+ to +dest/src+. - # - # If +src+ is a list of files, then +dest+ must be a directory. - # - # Bundler::FileUtils.cp 'eval.c', 'eval.c.org' - # Bundler::FileUtils.cp %w(cgi.rb complex.rb date.rb), '/usr/lib/ruby/1.6' - # Bundler::FileUtils.cp %w(cgi.rb complex.rb date.rb), '/usr/lib/ruby/1.6', :verbose => true - # Bundler::FileUtils.cp 'symlink', 'dest' # copy content, "dest" is not a symlink - # - def cp(src, dest, preserve: nil, noop: nil, verbose: nil) - fu_output_message "cp#{preserve ? ' -p' : ''} #{[src,dest].flatten.join ' '}" if verbose - return if noop - fu_each_src_dest(src, dest) do |s, d| - copy_file s, d, preserve - end - end - module_function :cp - - alias copy cp - module_function :copy - - # - # Copies +src+ to +dest+. If +src+ is a directory, this method copies - # all its contents recursively. If +dest+ is a directory, copies - # +src+ to +dest/src+. - # - # +src+ can be a list of files. - # - # # Installing Ruby library "mylib" under the site_ruby - # Bundler::FileUtils.rm_r site_ruby + '/mylib', :force - # Bundler::FileUtils.cp_r 'lib/', site_ruby + '/mylib' - # - # # Examples of copying several files to target directory. - # Bundler::FileUtils.cp_r %w(mail.rb field.rb debug/), site_ruby + '/tmail' - # Bundler::FileUtils.cp_r Dir.glob('*.rb'), '/home/foo/lib/ruby', :noop => true, :verbose => true - # - # # If you want to copy all contents of a directory instead of the - # # directory itself, c.f. src/x -> dest/x, src/y -> dest/y, - # # use following code. - # Bundler::FileUtils.cp_r 'src/.', 'dest' # cp_r('src', 'dest') makes dest/src, - # # but this doesn't. - # - def cp_r(src, dest, preserve: nil, noop: nil, verbose: nil, - dereference_root: true, remove_destination: nil) - fu_output_message "cp -r#{preserve ? 'p' : ''}#{remove_destination ? ' --remove-destination' : ''} #{[src,dest].flatten.join ' '}" if verbose - return if noop - fu_each_src_dest(src, dest) do |s, d| - copy_entry s, d, preserve, dereference_root, remove_destination - end - end - module_function :cp_r - - # - # Copies a file system entry +src+ to +dest+. - # If +src+ is a directory, this method copies its contents recursively. - # This method preserves file types, c.f. symlink, directory... - # (FIFO, device files and etc. are not supported yet) - # - # Both of +src+ and +dest+ must be a path name. - # +src+ must exist, +dest+ must not exist. - # - # If +preserve+ is true, this method preserves owner, group, and - # modified time. Permissions are copied regardless +preserve+. - # - # If +dereference_root+ is true, this method dereference tree root. - # - # If +remove_destination+ is true, this method removes each destination file before copy. - # - def copy_entry(src, dest, preserve = false, dereference_root = false, remove_destination = false) - Entry_.new(src, nil, dereference_root).wrap_traverse(proc do |ent| - destent = Entry_.new(dest, ent.rel, false) - File.unlink destent.path if remove_destination && File.file?(destent.path) - ent.copy destent.path - end, proc do |ent| - destent = Entry_.new(dest, ent.rel, false) - ent.copy_metadata destent.path if preserve - end) - end - module_function :copy_entry - - # - # Copies file contents of +src+ to +dest+. - # Both of +src+ and +dest+ must be a path name. - # - def copy_file(src, dest, preserve = false, dereference = true) - ent = Entry_.new(src, nil, dereference) - ent.copy_file dest - ent.copy_metadata dest if preserve - end - module_function :copy_file - - # - # Copies stream +src+ to +dest+. - # +src+ must respond to #read(n) and - # +dest+ must respond to #write(str). - # - def copy_stream(src, dest) - IO.copy_stream(src, dest) - end - module_function :copy_stream - - # - # Moves file(s) +src+ to +dest+. If +file+ and +dest+ exist on the different - # disk partition, the file is copied then the original file is removed. - # - # Bundler::FileUtils.mv 'badname.rb', 'goodname.rb' - # Bundler::FileUtils.mv 'stuff.rb', '/notexist/lib/ruby', :force => true # no error - # - # Bundler::FileUtils.mv %w(junk.txt dust.txt), '/home/foo/.trash/' - # Bundler::FileUtils.mv Dir.glob('test*.rb'), 'test', :noop => true, :verbose => true - # - def mv(src, dest, force: nil, noop: nil, verbose: nil, secure: nil) - fu_output_message "mv#{force ? ' -f' : ''} #{[src,dest].flatten.join ' '}" if verbose - return if noop - fu_each_src_dest(src, dest) do |s, d| - destent = Entry_.new(d, nil, true) - begin - if destent.exist? - if destent.directory? - raise Errno::EEXIST, d - else - destent.remove_file if rename_cannot_overwrite_file? - end - end - begin - File.rename s, d - rescue Errno::EXDEV - copy_entry s, d, true - if secure - remove_entry_secure s, force - else - remove_entry s, force - end - end - rescue SystemCallError - raise unless force - end - end - end - module_function :mv - - alias move mv - module_function :move - - def rename_cannot_overwrite_file? #:nodoc: - /emx/ =~ RUBY_PLATFORM - end - private_module_function :rename_cannot_overwrite_file? - - # - # Remove file(s) specified in +list+. This method cannot remove directories. - # All StandardErrors are ignored when the :force option is set. - # - # Bundler::FileUtils.rm %w( junk.txt dust.txt ) - # Bundler::FileUtils.rm Dir.glob('*.so') - # Bundler::FileUtils.rm 'NotExistFile', :force => true # never raises exception - # - def rm(list, force: nil, noop: nil, verbose: nil) - list = fu_list(list) - fu_output_message "rm#{force ? ' -f' : ''} #{list.join ' '}" if verbose - return if noop - - list.each do |path| - remove_file path, force - end - end - module_function :rm - - alias remove rm - module_function :remove - - # - # Equivalent to - # - # Bundler::FileUtils.rm(list, :force => true) - # - def rm_f(list, noop: nil, verbose: nil) - rm list, force: true, noop: noop, verbose: verbose - end - module_function :rm_f - - alias safe_unlink rm_f - module_function :safe_unlink - - # - # remove files +list+[0] +list+[1]... If +list+[n] is a directory, - # removes its all contents recursively. This method ignores - # StandardError when :force option is set. - # - # Bundler::FileUtils.rm_r Dir.glob('/tmp/*') - # Bundler::FileUtils.rm_r 'some_dir', :force => true - # - # WARNING: This method causes local vulnerability - # if one of parent directories or removing directory tree are world - # writable (including /tmp, whose permission is 1777), and the current - # process has strong privilege such as Unix super user (root), and the - # system has symbolic link. For secure removing, read the documentation - # of #remove_entry_secure carefully, and set :secure option to true. - # Default is :secure=>false. - # - # NOTE: This method calls #remove_entry_secure if :secure option is set. - # See also #remove_entry_secure. - # - def rm_r(list, force: nil, noop: nil, verbose: nil, secure: nil) - list = fu_list(list) - fu_output_message "rm -r#{force ? 'f' : ''} #{list.join ' '}" if verbose - return if noop - list.each do |path| - if secure - remove_entry_secure path, force - else - remove_entry path, force - end - end - end - module_function :rm_r - - # - # Equivalent to - # - # Bundler::FileUtils.rm_r(list, :force => true) - # - # WARNING: This method causes local vulnerability. - # Read the documentation of #rm_r first. - # - def rm_rf(list, noop: nil, verbose: nil, secure: nil) - rm_r list, force: true, noop: noop, verbose: verbose, secure: secure - end - module_function :rm_rf - - alias rmtree rm_rf - module_function :rmtree - - # - # This method removes a file system entry +path+. +path+ shall be a - # regular file, a directory, or something. If +path+ is a directory, - # remove it recursively. This method is required to avoid TOCTTOU - # (time-of-check-to-time-of-use) local security vulnerability of #rm_r. - # #rm_r causes security hole when: - # - # * Parent directory is world writable (including /tmp). - # * Removing directory tree includes world writable directory. - # * The system has symbolic link. - # - # To avoid this security hole, this method applies special preprocess. - # If +path+ is a directory, this method chown(2) and chmod(2) all - # removing directories. This requires the current process is the - # owner of the removing whole directory tree, or is the super user (root). - # - # WARNING: You must ensure that *ALL* parent directories cannot be - # moved by other untrusted users. For example, parent directories - # should not be owned by untrusted users, and should not be world - # writable except when the sticky bit set. - # - # WARNING: Only the owner of the removing directory tree, or Unix super - # user (root) should invoke this method. Otherwise this method does not - # work. - # - # For details of this security vulnerability, see Perl's case: - # - # * http://www.cve.mitre.org/cgi-bin/cvename.cgi?name=CAN-2005-0448 - # * http://www.cve.mitre.org/cgi-bin/cvename.cgi?name=CAN-2004-0452 - # - # For fileutils.rb, this vulnerability is reported in [ruby-dev:26100]. - # - def remove_entry_secure(path, force = false) - unless fu_have_symlink? - remove_entry path, force - return - end - fullpath = File.expand_path(path) - st = File.lstat(fullpath) - unless st.directory? - File.unlink fullpath - return - end - # is a directory. - parent_st = File.stat(File.dirname(fullpath)) - unless parent_st.world_writable? - remove_entry path, force - return - end - unless parent_st.sticky? - raise ArgumentError, "parent directory is world writable, Bundler::FileUtils#remove_entry_secure does not work; abort: #{path.inspect} (parent directory mode #{'%o' % parent_st.mode})" - end - # freeze tree root - euid = Process.euid - File.open(fullpath + '/.') {|f| - unless fu_stat_identical_entry?(st, f.stat) - # symlink (TOC-to-TOU attack?) - File.unlink fullpath - return - end - f.chown euid, -1 - f.chmod 0700 - unless fu_stat_identical_entry?(st, File.lstat(fullpath)) - # TOC-to-TOU attack? - File.unlink fullpath - return - end - } - # ---- tree root is frozen ---- - root = Entry_.new(path) - root.preorder_traverse do |ent| - if ent.directory? - ent.chown euid, -1 - ent.chmod 0700 - end - end - root.postorder_traverse do |ent| - begin - ent.remove - rescue - raise unless force - end - end - rescue - raise unless force - end - module_function :remove_entry_secure - - def fu_have_symlink? #:nodoc: - File.symlink nil, nil - rescue NotImplementedError - return false - rescue TypeError - return true - end - private_module_function :fu_have_symlink? - - def fu_stat_identical_entry?(a, b) #:nodoc: - a.dev == b.dev and a.ino == b.ino - end - private_module_function :fu_stat_identical_entry? - - # - # This method removes a file system entry +path+. - # +path+ might be a regular file, a directory, or something. - # If +path+ is a directory, remove it recursively. - # - # See also #remove_entry_secure. - # - def remove_entry(path, force = false) - Entry_.new(path).postorder_traverse do |ent| - begin - ent.remove - rescue - raise unless force - end - end - rescue - raise unless force - end - module_function :remove_entry - - # - # Removes a file +path+. - # This method ignores StandardError if +force+ is true. - # - def remove_file(path, force = false) - Entry_.new(path).remove_file - rescue - raise unless force - end - module_function :remove_file - - # - # Removes a directory +dir+ and its contents recursively. - # This method ignores StandardError if +force+ is true. - # - def remove_dir(path, force = false) - remove_entry path, force # FIXME?? check if it is a directory - end - module_function :remove_dir - - # - # Returns true if the contents of a file +a+ and a file +b+ are identical. - # - # Bundler::FileUtils.compare_file('somefile', 'somefile') #=> true - # Bundler::FileUtils.compare_file('/dev/null', '/dev/urandom') #=> false - # - def compare_file(a, b) - return false unless File.size(a) == File.size(b) - File.open(a, 'rb') {|fa| - File.open(b, 'rb') {|fb| - return compare_stream(fa, fb) - } - } - end - module_function :compare_file - - alias identical? compare_file - alias cmp compare_file - module_function :identical? - module_function :cmp - - # - # Returns true if the contents of a stream +a+ and +b+ are identical. - # - def compare_stream(a, b) - bsize = fu_stream_blksize(a, b) - sa = String.new(capacity: bsize) - sb = String.new(capacity: bsize) - begin - a.read(bsize, sa) - b.read(bsize, sb) - return true if sa.empty? && sb.empty? - end while sa == sb - false - end - module_function :compare_stream - - # - # If +src+ is not same as +dest+, copies it and changes the permission - # mode to +mode+. If +dest+ is a directory, destination is +dest+/+src+. - # This method removes destination before copy. - # - # Bundler::FileUtils.install 'ruby', '/usr/local/bin/ruby', :mode => 0755, :verbose => true - # Bundler::FileUtils.install 'lib.rb', '/usr/local/lib/ruby/site_ruby', :verbose => true - # - def install(src, dest, mode: nil, owner: nil, group: nil, preserve: nil, - noop: nil, verbose: nil) - if verbose - msg = +"install -c" - msg << ' -p' if preserve - msg << ' -m ' << mode_to_s(mode) if mode - msg << " -o #{owner}" if owner - msg << " -g #{group}" if group - msg << ' ' << [src,dest].flatten.join(' ') - fu_output_message msg - end - return if noop - uid = fu_get_uid(owner) - gid = fu_get_gid(group) - fu_each_src_dest(src, dest) do |s, d| - st = File.stat(s) - unless File.exist?(d) and compare_file(s, d) - remove_file d, true - copy_file s, d - File.utime st.atime, st.mtime, d if preserve - File.chmod fu_mode(mode, st), d if mode - File.chown uid, gid, d if uid or gid - end - end - end - module_function :install - - def user_mask(target) #:nodoc: - target.each_char.inject(0) do |mask, chr| - case chr - when "u" - mask | 04700 - when "g" - mask | 02070 - when "o" - mask | 01007 - when "a" - mask | 07777 - else - raise ArgumentError, "invalid `who' symbol in file mode: #{chr}" - end - end - end - private_module_function :user_mask - - def apply_mask(mode, user_mask, op, mode_mask) #:nodoc: - case op - when '=' - (mode & ~user_mask) | (user_mask & mode_mask) - when '+' - mode | (user_mask & mode_mask) - when '-' - mode & ~(user_mask & mode_mask) - end - end - private_module_function :apply_mask - - def symbolic_modes_to_i(mode_sym, path) #:nodoc: - mode = if File::Stat === path - path.mode - else - File.stat(path).mode - end - mode_sym.split(/,/).inject(mode & 07777) do |current_mode, clause| - target, *actions = clause.split(/([=+-])/) - raise ArgumentError, "invalid file mode: #{mode_sym}" if actions.empty? - target = 'a' if target.empty? - user_mask = user_mask(target) - actions.each_slice(2) do |op, perm| - need_apply = op == '=' - mode_mask = (perm || '').each_char.inject(0) do |mask, chr| - case chr - when "r" - mask | 0444 - when "w" - mask | 0222 - when "x" - mask | 0111 - when "X" - if FileTest.directory? path - mask | 0111 - else - mask - end - when "s" - mask | 06000 - when "t" - mask | 01000 - when "u", "g", "o" - if mask.nonzero? - current_mode = apply_mask(current_mode, user_mask, op, mask) - end - need_apply = false - copy_mask = user_mask(chr) - (current_mode & copy_mask) / (copy_mask & 0111) * (user_mask & 0111) - else - raise ArgumentError, "invalid `perm' symbol in file mode: #{chr}" - end - end - - if mode_mask.nonzero? || need_apply - current_mode = apply_mask(current_mode, user_mask, op, mode_mask) - end - end - current_mode - end - end - private_module_function :symbolic_modes_to_i - - def fu_mode(mode, path) #:nodoc: - mode.is_a?(String) ? symbolic_modes_to_i(mode, path) : mode - end - private_module_function :fu_mode - - def mode_to_s(mode) #:nodoc: - mode.is_a?(String) ? mode : "%o" % mode - end - private_module_function :mode_to_s - - # - # Changes permission bits on the named files (in +list+) to the bit pattern - # represented by +mode+. - # - # +mode+ is the symbolic and absolute mode can be used. - # - # Absolute mode is - # Bundler::FileUtils.chmod 0755, 'somecommand' - # Bundler::FileUtils.chmod 0644, %w(my.rb your.rb his.rb her.rb) - # Bundler::FileUtils.chmod 0755, '/usr/bin/ruby', :verbose => true - # - # Symbolic mode is - # Bundler::FileUtils.chmod "u=wrx,go=rx", 'somecommand' - # Bundler::FileUtils.chmod "u=wr,go=rr", %w(my.rb your.rb his.rb her.rb) - # Bundler::FileUtils.chmod "u=wrx,go=rx", '/usr/bin/ruby', :verbose => true - # - # "a" :: is user, group, other mask. - # "u" :: is user's mask. - # "g" :: is group's mask. - # "o" :: is other's mask. - # "w" :: is write permission. - # "r" :: is read permission. - # "x" :: is execute permission. - # "X" :: - # is execute permission for directories only, must be used in conjunction with "+" - # "s" :: is uid, gid. - # "t" :: is sticky bit. - # "+" :: is added to a class given the specified mode. - # "-" :: Is removed from a given class given mode. - # "=" :: Is the exact nature of the class will be given a specified mode. - - def chmod(mode, list, noop: nil, verbose: nil) - list = fu_list(list) - fu_output_message sprintf('chmod %s %s', mode_to_s(mode), list.join(' ')) if verbose - return if noop - list.each do |path| - Entry_.new(path).chmod(fu_mode(mode, path)) - end - end - module_function :chmod - - # - # Changes permission bits on the named files (in +list+) - # to the bit pattern represented by +mode+. - # - # Bundler::FileUtils.chmod_R 0700, "/tmp/app.#{$$}" - # Bundler::FileUtils.chmod_R "u=wrx", "/tmp/app.#{$$}" - # - def chmod_R(mode, list, noop: nil, verbose: nil, force: nil) - list = fu_list(list) - fu_output_message sprintf('chmod -R%s %s %s', - (force ? 'f' : ''), - mode_to_s(mode), list.join(' ')) if verbose - return if noop - list.each do |root| - Entry_.new(root).traverse do |ent| - begin - ent.chmod(fu_mode(mode, ent.path)) - rescue - raise unless force - end - end - end - end - module_function :chmod_R - - # - # Changes owner and group on the named files (in +list+) - # to the user +user+ and the group +group+. +user+ and +group+ - # may be an ID (Integer/String) or a name (String). - # If +user+ or +group+ is nil, this method does not change - # the attribute. - # - # Bundler::FileUtils.chown 'root', 'staff', '/usr/local/bin/ruby' - # Bundler::FileUtils.chown nil, 'bin', Dir.glob('/usr/bin/*'), :verbose => true - # - def chown(user, group, list, noop: nil, verbose: nil) - list = fu_list(list) - fu_output_message sprintf('chown %s %s', - (group ? "#{user}:#{group}" : user || ':'), - list.join(' ')) if verbose - return if noop - uid = fu_get_uid(user) - gid = fu_get_gid(group) - list.each do |path| - Entry_.new(path).chown uid, gid - end - end - module_function :chown - - # - # Changes owner and group on the named files (in +list+) - # to the user +user+ and the group +group+ recursively. - # +user+ and +group+ may be an ID (Integer/String) or - # a name (String). If +user+ or +group+ is nil, this - # method does not change the attribute. - # - # Bundler::FileUtils.chown_R 'www', 'www', '/var/www/htdocs' - # Bundler::FileUtils.chown_R 'cvs', 'cvs', '/var/cvs', :verbose => true - # - def chown_R(user, group, list, noop: nil, verbose: nil, force: nil) - list = fu_list(list) - fu_output_message sprintf('chown -R%s %s %s', - (force ? 'f' : ''), - (group ? "#{user}:#{group}" : user || ':'), - list.join(' ')) if verbose - return if noop - uid = fu_get_uid(user) - gid = fu_get_gid(group) - list.each do |root| - Entry_.new(root).traverse do |ent| - begin - ent.chown uid, gid - rescue - raise unless force - end - end - end - end - module_function :chown_R - - begin - require 'etc' - rescue LoadError # rescue LoadError for miniruby - end - - def fu_get_uid(user) #:nodoc: - return nil unless user - case user - when Integer - user - when /\A\d+\z/ - user.to_i - else - Etc.getpwnam(user) ? Etc.getpwnam(user).uid : nil - end - end - private_module_function :fu_get_uid - - def fu_get_gid(group) #:nodoc: - return nil unless group - case group - when Integer - group - when /\A\d+\z/ - group.to_i - else - Etc.getgrnam(group) ? Etc.getgrnam(group).gid : nil - end - end - private_module_function :fu_get_gid - - # - # Updates modification time (mtime) and access time (atime) of file(s) in - # +list+. Files are created if they don't exist. - # - # Bundler::FileUtils.touch 'timestamp' - # Bundler::FileUtils.touch Dir.glob('*.c'); system 'make' - # - def touch(list, noop: nil, verbose: nil, mtime: nil, nocreate: nil) - list = fu_list(list) - t = mtime - if verbose - fu_output_message "touch #{nocreate ? '-c ' : ''}#{t ? t.strftime('-t %Y%m%d%H%M.%S ') : ''}#{list.join ' '}" - end - return if noop - list.each do |path| - created = nocreate - begin - File.utime(t, t, path) - rescue Errno::ENOENT - raise if created - File.open(path, 'a') { - ; - } - created = true - retry if t - end - end - end - module_function :touch - - private - - module StreamUtils_ - private - - def fu_windows? - /mswin|mingw|bccwin|emx/ =~ RUBY_PLATFORM - end - - def fu_copy_stream0(src, dest, blksize = nil) #:nodoc: - IO.copy_stream(src, dest) - end - - def fu_stream_blksize(*streams) - streams.each do |s| - next unless s.respond_to?(:stat) - size = fu_blksize(s.stat) - return size if size - end - fu_default_blksize() - end - - def fu_blksize(st) - s = st.blksize - return nil unless s - return nil if s == 0 - s - end - - def fu_default_blksize - 1024 - end - end - - include StreamUtils_ - extend StreamUtils_ - - class Entry_ #:nodoc: internal use only - include StreamUtils_ - - def initialize(a, b = nil, deref = false) - @prefix = @rel = @path = nil - if b - @prefix = a - @rel = b - else - @path = a - end - @deref = deref - @stat = nil - @lstat = nil - end - - def inspect - "\#<#{self.class} #{path()}>" - end - - def path - if @path - File.path(@path) - else - join(@prefix, @rel) - end - end - - def prefix - @prefix || @path - end - - def rel - @rel - end - - def dereference? - @deref - end - - def exist? - begin - lstat - true - rescue Errno::ENOENT - false - end - end - - def file? - s = lstat! - s and s.file? - end - - def directory? - s = lstat! - s and s.directory? - end - - def symlink? - s = lstat! - s and s.symlink? - end - - def chardev? - s = lstat! - s and s.chardev? - end - - def blockdev? - s = lstat! - s and s.blockdev? - end - - def socket? - s = lstat! - s and s.socket? - end - - def pipe? - s = lstat! - s and s.pipe? - end - - S_IF_DOOR = 0xD000 - - def door? - s = lstat! - s and (s.mode & 0xF000 == S_IF_DOOR) - end - - def entries - opts = {} - opts[:encoding] = ::Encoding::UTF_8 if fu_windows? - Dir.entries(path(), opts)\ - .reject {|n| n == '.' or n == '..' }\ - .map {|n| Entry_.new(prefix(), join(rel(), n.untaint)) } - end - - def stat - return @stat if @stat - if lstat() and lstat().symlink? - @stat = File.stat(path()) - else - @stat = lstat() - end - @stat - end - - def stat! - return @stat if @stat - if lstat! and lstat!.symlink? - @stat = File.stat(path()) - else - @stat = lstat! - end - @stat - rescue SystemCallError - nil - end - - def lstat - if dereference? - @lstat ||= File.stat(path()) - else - @lstat ||= File.lstat(path()) - end - end - - def lstat! - lstat() - rescue SystemCallError - nil - end - - def chmod(mode) - if symlink? - File.lchmod mode, path() if have_lchmod? - else - File.chmod mode, path() - end - end - - def chown(uid, gid) - if symlink? - File.lchown uid, gid, path() if have_lchown? - else - File.chown uid, gid, path() - end - end - - def copy(dest) - lstat - case - when file? - copy_file dest - when directory? - if !File.exist?(dest) and descendant_directory?(dest, path) - raise ArgumentError, "cannot copy directory %s to itself %s" % [path, dest] - end - begin - Dir.mkdir dest - rescue - raise unless File.directory?(dest) - end - when symlink? - File.symlink File.readlink(path()), dest - when chardev? - raise "cannot handle device file" unless File.respond_to?(:mknod) - mknod dest, ?c, 0666, lstat().rdev - when blockdev? - raise "cannot handle device file" unless File.respond_to?(:mknod) - mknod dest, ?b, 0666, lstat().rdev - when socket? - raise "cannot handle socket" unless File.respond_to?(:mknod) - mknod dest, nil, lstat().mode, 0 - when pipe? - raise "cannot handle FIFO" unless File.respond_to?(:mkfifo) - mkfifo dest, 0666 - when door? - raise "cannot handle door: #{path()}" - else - raise "unknown file type: #{path()}" - end - end - - def copy_file(dest) - File.open(path()) do |s| - File.open(dest, 'wb', s.stat.mode) do |f| - IO.copy_stream(s, f) - end - end - end - - def copy_metadata(path) - st = lstat() - if !st.symlink? - File.utime st.atime, st.mtime, path - end - mode = st.mode - begin - if st.symlink? - begin - File.lchown st.uid, st.gid, path - rescue NotImplementedError - end - else - File.chown st.uid, st.gid, path - end - rescue Errno::EPERM, Errno::EACCES - # clear setuid/setgid - mode &= 01777 - end - if st.symlink? - begin - File.lchmod mode, path - rescue NotImplementedError - end - else - File.chmod mode, path - end - end - - def remove - if directory? - remove_dir1 - else - remove_file - end - end - - def remove_dir1 - platform_support { - Dir.rmdir path().chomp(?/) - } - end - - def remove_file - platform_support { - File.unlink path - } - end - - def platform_support - return yield unless fu_windows? - first_time_p = true - begin - yield - rescue Errno::ENOENT - raise - rescue => err - if first_time_p - first_time_p = false - begin - File.chmod 0700, path() # Windows does not have symlink - retry - rescue SystemCallError - end - end - raise err - end - end - - def preorder_traverse - stack = [self] - while ent = stack.pop - yield ent - stack.concat ent.entries.reverse if ent.directory? - end - end - - alias traverse preorder_traverse - - def postorder_traverse - if directory? - entries().each do |ent| - ent.postorder_traverse do |e| - yield e - end - end - end - ensure - yield self - end - - def wrap_traverse(pre, post) - pre.call self - if directory? - entries.each do |ent| - ent.wrap_traverse pre, post - end - end - post.call self - end - - private - - $fileutils_rb_have_lchmod = nil - - def have_lchmod? - # This is not MT-safe, but it does not matter. - if $fileutils_rb_have_lchmod == nil - $fileutils_rb_have_lchmod = check_have_lchmod? - end - $fileutils_rb_have_lchmod - end - - def check_have_lchmod? - return false unless File.respond_to?(:lchmod) - File.lchmod 0 - return true - rescue NotImplementedError - return false - end - - $fileutils_rb_have_lchown = nil - - def have_lchown? - # This is not MT-safe, but it does not matter. - if $fileutils_rb_have_lchown == nil - $fileutils_rb_have_lchown = check_have_lchown? - end - $fileutils_rb_have_lchown - end - - def check_have_lchown? - return false unless File.respond_to?(:lchown) - File.lchown nil, nil - return true - rescue NotImplementedError - return false - end - - def join(dir, base) - return File.path(dir) if not base or base == '.' - return File.path(base) if not dir or dir == '.' - File.join(dir, base) - end - - if File::ALT_SEPARATOR - DIRECTORY_TERM = "(?=[/#{Regexp.quote(File::ALT_SEPARATOR)}]|\\z)" - else - DIRECTORY_TERM = "(?=/|\\z)" - end - SYSCASE = File::FNM_SYSCASE.nonzero? ? "-i" : "" - - def descendant_directory?(descendant, ascendant) - /\A(?#{SYSCASE}:#{Regexp.quote(ascendant)})#{DIRECTORY_TERM}/ =~ File.dirname(descendant) - end - end # class Entry_ - - def fu_list(arg) #:nodoc: - [arg].flatten.map {|path| File.path(path) } - end - private_module_function :fu_list - - def fu_each_src_dest(src, dest) #:nodoc: - fu_each_src_dest0(src, dest) do |s, d| - raise ArgumentError, "same file: #{s} and #{d}" if fu_same?(s, d) - yield s, d - end - end - private_module_function :fu_each_src_dest - - def fu_each_src_dest0(src, dest) #:nodoc: - if tmp = Array.try_convert(src) - tmp.each do |s| - s = File.path(s) - yield s, File.join(dest, File.basename(s)) - end - else - src = File.path(src) - if File.directory?(dest) - yield src, File.join(dest, File.basename(src)) - else - yield src, File.path(dest) - end - end - end - private_module_function :fu_each_src_dest0 - - def fu_same?(a, b) #:nodoc: - File.identical?(a, b) - end - private_module_function :fu_same? - - @fileutils_output = $stderr - @fileutils_label = '' - - def fu_output_message(msg) #:nodoc: - @fileutils_output ||= $stderr - @fileutils_label ||= '' - @fileutils_output.puts @fileutils_label + msg - end - private_module_function :fu_output_message - - # This hash table holds command options. - OPT_TABLE = {} #:nodoc: internal use only - (private_instance_methods & methods(false)).inject(OPT_TABLE) {|tbl, name| - (tbl[name.to_s] = instance_method(name).parameters).map! {|t, n| n if t == :key}.compact! - tbl - } - - # - # Returns an Array of method names which have any options. - # - # p Bundler::FileUtils.commands #=> ["chmod", "cp", "cp_r", "install", ...] - # - def self.commands - OPT_TABLE.keys - end - - # - # Returns an Array of option names. - # - # p Bundler::FileUtils.options #=> ["noop", "force", "verbose", "preserve", "mode"] - # - def self.options - OPT_TABLE.values.flatten.uniq.map {|sym| sym.to_s } - end - - # - # Returns true if the method +mid+ have an option +opt+. - # - # p Bundler::FileUtils.have_option?(:cp, :noop) #=> true - # p Bundler::FileUtils.have_option?(:rm, :force) #=> true - # p Bundler::FileUtils.have_option?(:rm, :preserve) #=> false - # - def self.have_option?(mid, opt) - li = OPT_TABLE[mid.to_s] or raise ArgumentError, "no such method: #{mid}" - li.include?(opt) - end - - # - # Returns an Array of option names of the method +mid+. - # - # p Bundler::FileUtils.options_of(:rm) #=> ["noop", "verbose", "force"] - # - def self.options_of(mid) - OPT_TABLE[mid.to_s].map {|sym| sym.to_s } - end - - # - # Returns an Array of method names which have the option +opt+. - # - # p Bundler::FileUtils.collect_method(:preserve) #=> ["cp", "cp_r", "copy", "install"] - # - def self.collect_method(opt) - OPT_TABLE.keys.select {|m| OPT_TABLE[m].include?(opt) } - end - - LOW_METHODS = singleton_methods(false) - collect_method(:noop).map(&:intern) - module LowMethods - private - def _do_nothing(*)end - ::Bundler::FileUtils::LOW_METHODS.map {|name| alias_method name, :_do_nothing} - end - - METHODS = singleton_methods() - [:private_module_function, - :commands, :options, :have_option?, :options_of, :collect_method] - - # - # This module has all methods of Bundler::FileUtils module, but it outputs messages - # before acting. This equates to passing the :verbose flag to - # methods in Bundler::FileUtils. - # - module Verbose - include Bundler::FileUtils - @fileutils_output = $stderr - @fileutils_label = '' - names = ::Bundler::FileUtils.collect_method(:verbose) - names.each do |name| - module_eval(<<-EOS, __FILE__, __LINE__ + 1) - def #{name}(*args, **options) - super(*args, **options, verbose: true) - end - EOS - end - private(*names) - extend self - class << self - public(*::Bundler::FileUtils::METHODS) - end - end - - # - # This module has all methods of Bundler::FileUtils module, but never changes - # files/directories. This equates to passing the :noop flag - # to methods in Bundler::FileUtils. - # - module NoWrite - include Bundler::FileUtils - include LowMethods - @fileutils_output = $stderr - @fileutils_label = '' - names = ::Bundler::FileUtils.collect_method(:noop) - names.each do |name| - module_eval(<<-EOS, __FILE__, __LINE__ + 1) - def #{name}(*args, **options) - super(*args, **options, noop: true) - end - EOS - end - private(*names) - extend self - class << self - public(*::Bundler::FileUtils::METHODS) - end - end - - # - # This module has all methods of Bundler::FileUtils module, but never changes - # files/directories, with printing message before acting. - # This equates to passing the :noop and :verbose flag - # to methods in Bundler::FileUtils. - # - module DryRun - include Bundler::FileUtils - include LowMethods - @fileutils_output = $stderr - @fileutils_label = '' - names = ::Bundler::FileUtils.collect_method(:noop) - names.each do |name| - module_eval(<<-EOS, __FILE__, __LINE__ + 1) - def #{name}(*args, **options) - super(*args, **options, noop: true, verbose: true) - end - EOS - end - private(*names) - extend self - class << self - public(*::Bundler::FileUtils::METHODS) - end - end - -end diff --git a/lib/bundler/vendor/molinillo/lib/molinillo.rb b/lib/bundler/vendor/molinillo/lib/molinillo.rb deleted file mode 100644 index 9e2867144f..0000000000 --- a/lib/bundler/vendor/molinillo/lib/molinillo.rb +++ /dev/null @@ -1,12 +0,0 @@ -# frozen_string_literal: true - -require 'bundler/vendor/molinillo/lib/molinillo/compatibility' -require 'bundler/vendor/molinillo/lib/molinillo/gem_metadata' -require 'bundler/vendor/molinillo/lib/molinillo/errors' -require 'bundler/vendor/molinillo/lib/molinillo/resolver' -require 'bundler/vendor/molinillo/lib/molinillo/modules/ui' -require 'bundler/vendor/molinillo/lib/molinillo/modules/specification_provider' - -# Bundler::Molinillo is a generic dependency resolution algorithm. -module Bundler::Molinillo -end diff --git a/lib/bundler/vendor/molinillo/lib/molinillo/compatibility.rb b/lib/bundler/vendor/molinillo/lib/molinillo/compatibility.rb deleted file mode 100644 index 3eba8e4083..0000000000 --- a/lib/bundler/vendor/molinillo/lib/molinillo/compatibility.rb +++ /dev/null @@ -1,26 +0,0 @@ -# frozen_string_literal: true - -module Bundler::Molinillo - # Hacks needed for old Ruby versions. - module Compatibility - module_function - - if [].respond_to?(:flat_map) - # Flat map - # @param [Enumerable] enum an enumerable object - # @block the block to flat-map with - # @return The enum, flat-mapped - def flat_map(enum, &blk) - enum.flat_map(&blk) - end - else - # Flat map - # @param [Enumerable] enum an enumerable object - # @block the block to flat-map with - # @return The enum, flat-mapped - def flat_map(enum, &blk) - enum.map(&blk).flatten(1) - end - end - end -end diff --git a/lib/bundler/vendor/molinillo/lib/molinillo/delegates/resolution_state.rb b/lib/bundler/vendor/molinillo/lib/molinillo/delegates/resolution_state.rb deleted file mode 100644 index bcacf35243..0000000000 --- a/lib/bundler/vendor/molinillo/lib/molinillo/delegates/resolution_state.rb +++ /dev/null @@ -1,57 +0,0 @@ -# frozen_string_literal: true - -module Bundler::Molinillo - # @!visibility private - module Delegates - # Delegates all {Bundler::Molinillo::ResolutionState} methods to a `#state` property. - module ResolutionState - # (see Bundler::Molinillo::ResolutionState#name) - def name - current_state = state || Bundler::Molinillo::ResolutionState.empty - current_state.name - end - - # (see Bundler::Molinillo::ResolutionState#requirements) - def requirements - current_state = state || Bundler::Molinillo::ResolutionState.empty - current_state.requirements - end - - # (see Bundler::Molinillo::ResolutionState#activated) - def activated - current_state = state || Bundler::Molinillo::ResolutionState.empty - current_state.activated - end - - # (see Bundler::Molinillo::ResolutionState#requirement) - def requirement - current_state = state || Bundler::Molinillo::ResolutionState.empty - current_state.requirement - end - - # (see Bundler::Molinillo::ResolutionState#possibilities) - def possibilities - current_state = state || Bundler::Molinillo::ResolutionState.empty - current_state.possibilities - end - - # (see Bundler::Molinillo::ResolutionState#depth) - def depth - current_state = state || Bundler::Molinillo::ResolutionState.empty - current_state.depth - end - - # (see Bundler::Molinillo::ResolutionState#conflicts) - def conflicts - current_state = state || Bundler::Molinillo::ResolutionState.empty - current_state.conflicts - end - - # (see Bundler::Molinillo::ResolutionState#unused_unwind_options) - def unused_unwind_options - current_state = state || Bundler::Molinillo::ResolutionState.empty - current_state.unused_unwind_options - end - end - end -end diff --git a/lib/bundler/vendor/molinillo/lib/molinillo/delegates/specification_provider.rb b/lib/bundler/vendor/molinillo/lib/molinillo/delegates/specification_provider.rb deleted file mode 100644 index ec9c770a28..0000000000 --- a/lib/bundler/vendor/molinillo/lib/molinillo/delegates/specification_provider.rb +++ /dev/null @@ -1,81 +0,0 @@ -# frozen_string_literal: true - -module Bundler::Molinillo - module Delegates - # Delegates all {Bundler::Molinillo::SpecificationProvider} methods to a - # `#specification_provider` property. - module SpecificationProvider - # (see Bundler::Molinillo::SpecificationProvider#search_for) - def search_for(dependency) - with_no_such_dependency_error_handling do - specification_provider.search_for(dependency) - end - end - - # (see Bundler::Molinillo::SpecificationProvider#dependencies_for) - def dependencies_for(specification) - with_no_such_dependency_error_handling do - specification_provider.dependencies_for(specification) - end - end - - # (see Bundler::Molinillo::SpecificationProvider#requirement_satisfied_by?) - def requirement_satisfied_by?(requirement, activated, spec) - with_no_such_dependency_error_handling do - specification_provider.requirement_satisfied_by?(requirement, activated, spec) - end - end - - # (see Bundler::Molinillo::SpecificationProvider#name_for) - def name_for(dependency) - with_no_such_dependency_error_handling do - specification_provider.name_for(dependency) - end - end - - # (see Bundler::Molinillo::SpecificationProvider#name_for_explicit_dependency_source) - def name_for_explicit_dependency_source - with_no_such_dependency_error_handling do - specification_provider.name_for_explicit_dependency_source - end - end - - # (see Bundler::Molinillo::SpecificationProvider#name_for_locking_dependency_source) - def name_for_locking_dependency_source - with_no_such_dependency_error_handling do - specification_provider.name_for_locking_dependency_source - end - end - - # (see Bundler::Molinillo::SpecificationProvider#sort_dependencies) - def sort_dependencies(dependencies, activated, conflicts) - with_no_such_dependency_error_handling do - specification_provider.sort_dependencies(dependencies, activated, conflicts) - end - end - - # (see Bundler::Molinillo::SpecificationProvider#allow_missing?) - def allow_missing?(dependency) - with_no_such_dependency_error_handling do - specification_provider.allow_missing?(dependency) - end - end - - private - - # Ensures any raised {NoSuchDependencyError} has its - # {NoSuchDependencyError#required_by} set. - # @yield - def with_no_such_dependency_error_handling - yield - rescue NoSuchDependencyError => error - if state - vertex = activated.vertex_named(name_for(error.dependency)) - error.required_by += vertex.incoming_edges.map { |e| e.origin.name } - error.required_by << name_for_explicit_dependency_source unless vertex.explicit_requirements.empty? - end - raise - end - end - end -end diff --git a/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb b/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb deleted file mode 100644 index 677a8bd916..0000000000 --- a/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb +++ /dev/null @@ -1,223 +0,0 @@ -# frozen_string_literal: true - -require 'set' -require 'tsort' - -require 'bundler/vendor/molinillo/lib/molinillo/dependency_graph/log' -require 'bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex' - -module Bundler::Molinillo - # A directed acyclic graph that is tuned to hold named dependencies - class DependencyGraph - include Enumerable - - # Enumerates through the vertices of the graph. - # @return [Array] The graph's vertices. - def each - return vertices.values.each unless block_given? - vertices.values.each { |v| yield v } - end - - include TSort - - # @!visibility private - alias tsort_each_node each - - # @!visibility private - def tsort_each_child(vertex, &block) - vertex.successors.each(&block) - end - - # Topologically sorts the given vertices. - # @param [Enumerable] vertices the vertices to be sorted, which must - # all belong to the same graph. - # @return [Array] The sorted vertices. - def self.tsort(vertices) - TSort.tsort( - lambda { |b| vertices.each(&b) }, - lambda { |v, &b| (v.successors & vertices).each(&b) } - ) - end - - # A directed edge of a {DependencyGraph} - # @attr [Vertex] origin The origin of the directed edge - # @attr [Vertex] destination The destination of the directed edge - # @attr [Object] requirement The requirement the directed edge represents - Edge = Struct.new(:origin, :destination, :requirement) - - # @return [{String => Vertex}] the vertices of the dependency graph, keyed - # by {Vertex#name} - attr_reader :vertices - - # @return [Log] the op log for this graph - attr_reader :log - - # Initializes an empty dependency graph - def initialize - @vertices = {} - @log = Log.new - end - - # Tags the current state of the dependency as the given tag - # @param [Object] tag an opaque tag for the current state of the graph - # @return [Void] - def tag(tag) - log.tag(self, tag) - end - - # Rewinds the graph to the state tagged as `tag` - # @param [Object] tag the tag to rewind to - # @return [Void] - def rewind_to(tag) - log.rewind_to(self, tag) - end - - # Initializes a copy of a {DependencyGraph}, ensuring that all {#vertices} - # are properly copied. - # @param [DependencyGraph] other the graph to copy. - def initialize_copy(other) - super - @vertices = {} - @log = other.log.dup - traverse = lambda do |new_v, old_v| - return if new_v.outgoing_edges.size == old_v.outgoing_edges.size - old_v.outgoing_edges.each do |edge| - destination = add_vertex(edge.destination.name, edge.destination.payload) - add_edge_no_circular(new_v, destination, edge.requirement) - traverse.call(destination, edge.destination) - end - end - other.vertices.each do |name, vertex| - new_vertex = add_vertex(name, vertex.payload, vertex.root?) - new_vertex.explicit_requirements.replace(vertex.explicit_requirements) - traverse.call(new_vertex, vertex) - end - end - - # @return [String] a string suitable for debugging - def inspect - "#{self.class}:#{vertices.values.inspect}" - end - - # @param [Hash] options options for dot output. - # @return [String] Returns a dot format representation of the graph - def to_dot(options = {}) - edge_label = options.delete(:edge_label) - raise ArgumentError, "Unknown options: #{options.keys}" unless options.empty? - - dot_vertices = [] - dot_edges = [] - vertices.each do |n, v| - dot_vertices << " #{n} [label=\"{#{n}|#{v.payload}}\"]" - v.outgoing_edges.each do |e| - label = edge_label ? edge_label.call(e) : e.requirement - dot_edges << " #{e.origin.name} -> #{e.destination.name} [label=#{label.to_s.dump}]" - end - end - - dot_vertices.uniq! - dot_vertices.sort! - dot_edges.uniq! - dot_edges.sort! - - dot = dot_vertices.unshift('digraph G {').push('') + dot_edges.push('}') - dot.join("\n") - end - - # @return [Boolean] whether the two dependency graphs are equal, determined - # by a recursive traversal of each {#root_vertices} and its - # {Vertex#successors} - def ==(other) - return false unless other - return true if equal?(other) - vertices.each do |name, vertex| - other_vertex = other.vertex_named(name) - return false unless other_vertex - return false unless vertex.payload == other_vertex.payload - return false unless other_vertex.successors.to_set == vertex.successors.to_set - end - end - - # @param [String] name - # @param [Object] payload - # @param [Array] parent_names - # @param [Object] requirement the requirement that is requiring the child - # @return [void] - def add_child_vertex(name, payload, parent_names, requirement) - root = !parent_names.delete(nil) { true } - vertex = add_vertex(name, payload, root) - vertex.explicit_requirements << requirement if root - parent_names.each do |parent_name| - parent_vertex = vertex_named(parent_name) - add_edge(parent_vertex, vertex, requirement) - end - vertex - end - - # Adds a vertex with the given name, or updates the existing one. - # @param [String] name - # @param [Object] payload - # @return [Vertex] the vertex that was added to `self` - def add_vertex(name, payload, root = false) - log.add_vertex(self, name, payload, root) - end - - # Detaches the {#vertex_named} `name` {Vertex} from the graph, recursively - # removing any non-root vertices that were orphaned in the process - # @param [String] name - # @return [Array] the vertices which have been detached - def detach_vertex_named(name) - log.detach_vertex_named(self, name) - end - - # @param [String] name - # @return [Vertex,nil] the vertex with the given name - def vertex_named(name) - vertices[name] - end - - # @param [String] name - # @return [Vertex,nil] the root vertex with the given name - def root_vertex_named(name) - vertex = vertex_named(name) - vertex if vertex && vertex.root? - end - - # Adds a new {Edge} to the dependency graph - # @param [Vertex] origin - # @param [Vertex] destination - # @param [Object] requirement the requirement that this edge represents - # @return [Edge] the added edge - def add_edge(origin, destination, requirement) - if destination.path_to?(origin) - raise CircularDependencyError.new([origin, destination]) - end - add_edge_no_circular(origin, destination, requirement) - end - - # Deletes an {Edge} from the dependency graph - # @param [Edge] edge - # @return [Void] - def delete_edge(edge) - log.delete_edge(self, edge.origin.name, edge.destination.name, edge.requirement) - end - - # Sets the payload of the vertex with the given name - # @param [String] name the name of the vertex - # @param [Object] payload the payload - # @return [Void] - def set_payload(name, payload) - log.set_payload(self, name, payload) - end - - private - - # Adds a new {Edge} to the dependency graph without checking for - # circularity. - # @param (see #add_edge) - # @return (see #add_edge) - def add_edge_no_circular(origin, destination, requirement) - log.add_edge_no_circular(self, origin.name, destination.name, requirement) - end - end -end diff --git a/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/action.rb b/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/action.rb deleted file mode 100644 index c04c7eec9c..0000000000 --- a/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/action.rb +++ /dev/null @@ -1,36 +0,0 @@ -# frozen_string_literal: true - -module Bundler::Molinillo - class DependencyGraph - # An action that modifies a {DependencyGraph} that is reversible. - # @abstract - class Action - # rubocop:disable Lint/UnusedMethodArgument - - # @return [Symbol] The name of the action. - def self.action_name - raise 'Abstract' - end - - # Performs the action on the given graph. - # @param [DependencyGraph] graph the graph to perform the action on. - # @return [Void] - def up(graph) - raise 'Abstract' - end - - # Reverses the action on the given graph. - # @param [DependencyGraph] graph the graph to reverse the action on. - # @return [Void] - def down(graph) - raise 'Abstract' - end - - # @return [Action,Nil] The previous action - attr_accessor :previous - - # @return [Action,Nil] The next action - attr_accessor :next - end - end -end diff --git a/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb b/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb deleted file mode 100644 index 9849aea2fe..0000000000 --- a/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +++ /dev/null @@ -1,66 +0,0 @@ -# frozen_string_literal: true - -require 'bundler/vendor/molinillo/lib/molinillo/dependency_graph/action' -module Bundler::Molinillo - class DependencyGraph - # @!visibility private - # (see DependencyGraph#add_edge_no_circular) - class AddEdgeNoCircular < Action - # @!group Action - - # (see Action.action_name) - def self.action_name - :add_vertex - end - - # (see Action#up) - def up(graph) - edge = make_edge(graph) - edge.origin.outgoing_edges << edge - edge.destination.incoming_edges << edge - edge - end - - # (see Action#down) - def down(graph) - edge = make_edge(graph) - delete_first(edge.origin.outgoing_edges, edge) - delete_first(edge.destination.incoming_edges, edge) - end - - # @!group AddEdgeNoCircular - - # @return [String] the name of the origin of the edge - attr_reader :origin - - # @return [String] the name of the destination of the edge - attr_reader :destination - - # @return [Object] the requirement that the edge represents - attr_reader :requirement - - # @param [DependencyGraph] graph the graph to find vertices from - # @return [Edge] The edge this action adds - def make_edge(graph) - Edge.new(graph.vertex_named(origin), graph.vertex_named(destination), requirement) - end - - # Initialize an action to add an edge to a dependency graph - # @param [String] origin the name of the origin of the edge - # @param [String] destination the name of the destination of the edge - # @param [Object] requirement the requirement that the edge represents - def initialize(origin, destination, requirement) - @origin = origin - @destination = destination - @requirement = requirement - end - - private - - def delete_first(array, item) - return unless index = array.index(item) - array.delete_at(index) - end - end - end -end diff --git a/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_vertex.rb b/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_vertex.rb deleted file mode 100644 index 0a1e08255b..0000000000 --- a/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +++ /dev/null @@ -1,62 +0,0 @@ -# frozen_string_literal: true - -require 'bundler/vendor/molinillo/lib/molinillo/dependency_graph/action' -module Bundler::Molinillo - class DependencyGraph - # @!visibility private - # (see DependencyGraph#add_vertex) - class AddVertex < Action # :nodoc: - # @!group Action - - # (see Action.action_name) - def self.action_name - :add_vertex - end - - # (see Action#up) - def up(graph) - if existing = graph.vertices[name] - @existing_payload = existing.payload - @existing_root = existing.root - end - vertex = existing || Vertex.new(name, payload) - graph.vertices[vertex.name] = vertex - vertex.payload ||= payload - vertex.root ||= root - vertex - end - - # (see Action#down) - def down(graph) - if defined?(@existing_payload) - vertex = graph.vertices[name] - vertex.payload = @existing_payload - vertex.root = @existing_root - else - graph.vertices.delete(name) - end - end - - # @!group AddVertex - - # @return [String] the name of the vertex - attr_reader :name - - # @return [Object] the payload for the vertex - attr_reader :payload - - # @return [Boolean] whether the vertex is root or not - attr_reader :root - - # Initialize an action to add a vertex to a dependency graph - # @param [String] name the name of the vertex - # @param [Object] payload the payload for the vertex - # @param [Boolean] root whether the vertex is root or not - def initialize(name, payload, root) - @name = name - @payload = payload - @root = root - end - end - end -end diff --git a/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/delete_edge.rb b/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/delete_edge.rb deleted file mode 100644 index 1d9f4b327d..0000000000 --- a/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +++ /dev/null @@ -1,63 +0,0 @@ -# frozen_string_literal: true - -require 'bundler/vendor/molinillo/lib/molinillo/dependency_graph/action' -module Bundler::Molinillo - class DependencyGraph - # @!visibility private - # (see DependencyGraph#delete_edge) - class DeleteEdge < Action - # @!group Action - - # (see Action.action_name) - def self.action_name - :delete_edge - end - - # (see Action#up) - def up(graph) - edge = make_edge(graph) - edge.origin.outgoing_edges.delete(edge) - edge.destination.incoming_edges.delete(edge) - end - - # (see Action#down) - def down(graph) - edge = make_edge(graph) - edge.origin.outgoing_edges << edge - edge.destination.incoming_edges << edge - edge - end - - # @!group DeleteEdge - - # @return [String] the name of the origin of the edge - attr_reader :origin_name - - # @return [String] the name of the destination of the edge - attr_reader :destination_name - - # @return [Object] the requirement that the edge represents - attr_reader :requirement - - # @param [DependencyGraph] graph the graph to find vertices from - # @return [Edge] The edge this action adds - def make_edge(graph) - Edge.new( - graph.vertex_named(origin_name), - graph.vertex_named(destination_name), - requirement - ) - end - - # Initialize an action to add an edge to a dependency graph - # @param [String] origin_name the name of the origin of the edge - # @param [String] destination_name the name of the destination of the edge - # @param [Object] requirement the requirement that the edge represents - def initialize(origin_name, destination_name, requirement) - @origin_name = origin_name - @destination_name = destination_name - @requirement = requirement - end - end - end -end diff --git a/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb b/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb deleted file mode 100644 index 385dcbdd06..0000000000 --- a/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +++ /dev/null @@ -1,61 +0,0 @@ -# frozen_string_literal: true - -require 'bundler/vendor/molinillo/lib/molinillo/dependency_graph/action' -module Bundler::Molinillo - class DependencyGraph - # @!visibility private - # @see DependencyGraph#detach_vertex_named - class DetachVertexNamed < Action - # @!group Action - - # (see Action#name) - def self.action_name - :add_vertex - end - - # (see Action#up) - def up(graph) - return [] unless @vertex = graph.vertices.delete(name) - - removed_vertices = [@vertex] - @vertex.outgoing_edges.each do |e| - v = e.destination - v.incoming_edges.delete(e) - if !v.root? && v.incoming_edges.empty? - removed_vertices.concat graph.detach_vertex_named(v.name) - end - end - - @vertex.incoming_edges.each do |e| - v = e.origin - v.outgoing_edges.delete(e) - end - - removed_vertices - end - - # (see Action#down) - def down(graph) - return unless @vertex - graph.vertices[@vertex.name] = @vertex - @vertex.outgoing_edges.each do |e| - e.destination.incoming_edges << e - end - @vertex.incoming_edges.each do |e| - e.origin.outgoing_edges << e - end - end - - # @!group DetachVertexNamed - - # @return [String] the name of the vertex to detach - attr_reader :name - - # Initialize an action to detach a vertex from a dependency graph - # @param [String] name the name of the vertex to detach - def initialize(name) - @name = name - end - end - end -end diff --git a/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/log.rb b/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/log.rb deleted file mode 100644 index 8582dd19c1..0000000000 --- a/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/log.rb +++ /dev/null @@ -1,126 +0,0 @@ -# frozen_string_literal: true - -require 'bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular' -require 'bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_vertex' -require 'bundler/vendor/molinillo/lib/molinillo/dependency_graph/delete_edge' -require 'bundler/vendor/molinillo/lib/molinillo/dependency_graph/detach_vertex_named' -require 'bundler/vendor/molinillo/lib/molinillo/dependency_graph/set_payload' -require 'bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag' - -module Bundler::Molinillo - class DependencyGraph - # A log for dependency graph actions - class Log - # Initializes an empty log - def initialize - @current_action = @first_action = nil - end - - # @!macro [new] action - # {include:DependencyGraph#$0} - # @param [Graph] graph the graph to perform the action on - # @param (see DependencyGraph#$0) - # @return (see DependencyGraph#$0) - - # @macro action - def tag(graph, tag) - push_action(graph, Tag.new(tag)) - end - - # @macro action - def add_vertex(graph, name, payload, root) - push_action(graph, AddVertex.new(name, payload, root)) - end - - # @macro action - def detach_vertex_named(graph, name) - push_action(graph, DetachVertexNamed.new(name)) - end - - # @macro action - def add_edge_no_circular(graph, origin, destination, requirement) - push_action(graph, AddEdgeNoCircular.new(origin, destination, requirement)) - end - - # {include:DependencyGraph#delete_edge} - # @param [Graph] graph the graph to perform the action on - # @param [String] origin_name - # @param [String] destination_name - # @param [Object] requirement - # @return (see DependencyGraph#delete_edge) - def delete_edge(graph, origin_name, destination_name, requirement) - push_action(graph, DeleteEdge.new(origin_name, destination_name, requirement)) - end - - # @macro action - def set_payload(graph, name, payload) - push_action(graph, SetPayload.new(name, payload)) - end - - # Pops the most recent action from the log and undoes the action - # @param [DependencyGraph] graph - # @return [Action] the action that was popped off the log - def pop!(graph) - return unless action = @current_action - unless @current_action = action.previous - @first_action = nil - end - action.down(graph) - action - end - - extend Enumerable - - # @!visibility private - # Enumerates each action in the log - # @yield [Action] - def each - return enum_for unless block_given? - action = @first_action - loop do - break unless action - yield action - action = action.next - end - self - end - - # @!visibility private - # Enumerates each action in the log in reverse order - # @yield [Action] - def reverse_each - return enum_for(:reverse_each) unless block_given? - action = @current_action - loop do - break unless action - yield action - action = action.previous - end - self - end - - # @macro action - def rewind_to(graph, tag) - loop do - action = pop!(graph) - raise "No tag #{tag.inspect} found" unless action - break if action.class.action_name == :tag && action.tag == tag - end - end - - private - - # Adds the given action to the log, running the action - # @param [DependencyGraph] graph - # @param [Action] action - # @return The value returned by `action.up` - def push_action(graph, action) - action.previous = @current_action - @current_action.next = action if @current_action - @current_action = action - @first_action ||= action - action.up(graph) - end - end - end -end diff --git a/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/set_payload.rb b/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/set_payload.rb deleted file mode 100644 index 37286d104a..0000000000 --- a/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/set_payload.rb +++ /dev/null @@ -1,46 +0,0 @@ -# frozen_string_literal: true - -require 'bundler/vendor/molinillo/lib/molinillo/dependency_graph/action' -module Bundler::Molinillo - class DependencyGraph - # @!visibility private - # @see DependencyGraph#set_payload - class SetPayload < Action # :nodoc: - # @!group Action - - # (see Action.action_name) - def self.action_name - :set_payload - end - - # (see Action#up) - def up(graph) - vertex = graph.vertex_named(name) - @old_payload = vertex.payload - vertex.payload = payload - end - - # (see Action#down) - def down(graph) - graph.vertex_named(name).payload = @old_payload - end - - # @!group SetPayload - - # @return [String] the name of the vertex - attr_reader :name - - # @return [Object] the payload for the vertex - attr_reader :payload - - # Initialize an action to add set the payload for a vertex in a dependency - # graph - # @param [String] name the name of the vertex - # @param [Object] payload the payload for the vertex - def initialize(name, payload) - @name = name - @payload = payload - end - end - end -end diff --git a/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb b/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb deleted file mode 100644 index d6ad16e07a..0000000000 --- a/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb +++ /dev/null @@ -1,36 +0,0 @@ -# frozen_string_literal: true - -require 'bundler/vendor/molinillo/lib/molinillo/dependency_graph/action' -module Bundler::Molinillo - class DependencyGraph - # @!visibility private - # @see DependencyGraph#tag - class Tag < Action - # @!group Action - - # (see Action.action_name) - def self.action_name - :tag - end - - # (see Action#up) - def up(_graph) - end - - # (see Action#down) - def down(_graph) - end - - # @!group Tag - - # @return [Object] An opaque tag - attr_reader :tag - - # Initialize an action to tag a state of a dependency graph - # @param [Object] tag an opaque tag - def initialize(tag) - @tag = tag - end - end - end -end diff --git a/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb b/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb deleted file mode 100644 index e4d016de24..0000000000 --- a/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb +++ /dev/null @@ -1,126 +0,0 @@ -# frozen_string_literal: true - -module Bundler::Molinillo - class DependencyGraph - # A vertex in a {DependencyGraph} that encapsulates a {#name} and a - # {#payload} - class Vertex - # @return [String] the name of the vertex - attr_accessor :name - - # @return [Object] the payload the vertex holds - attr_accessor :payload - - # @return [Array] the explicit requirements that required - # this vertex - attr_reader :explicit_requirements - - # @return [Boolean] whether the vertex is considered a root vertex - attr_accessor :root - alias root? root - - # Initializes a vertex with the given name and payload. - # @param [String] name see {#name} - # @param [Object] payload see {#payload} - def initialize(name, payload) - @name = name.frozen? ? name : name.dup.freeze - @payload = payload - @explicit_requirements = [] - @outgoing_edges = [] - @incoming_edges = [] - end - - # @return [Array] all of the requirements that required - # this vertex - def requirements - (incoming_edges.map(&:requirement) + explicit_requirements).uniq - end - - # @return [Array] the edges of {#graph} that have `self` as their - # {Edge#origin} - attr_accessor :outgoing_edges - - # @return [Array] the edges of {#graph} that have `self` as their - # {Edge#destination} - attr_accessor :incoming_edges - - # @return [Array] the vertices of {#graph} that have an edge with - # `self` as their {Edge#destination} - def predecessors - incoming_edges.map(&:origin) - end - - # @return [Array] the vertices of {#graph} where `self` is a - # {#descendent?} - def recursive_predecessors - vertices = predecessors - vertices += Compatibility.flat_map(vertices, &:recursive_predecessors) - vertices.uniq! - vertices - end - - # @return [Array] the vertices of {#graph} that have an edge with - # `self` as their {Edge#origin} - def successors - outgoing_edges.map(&:destination) - end - - # @return [Array] the vertices of {#graph} where `self` is an - # {#ancestor?} - def recursive_successors - vertices = successors - vertices += Compatibility.flat_map(vertices, &:recursive_successors) - vertices.uniq! - vertices - end - - # @return [String] a string suitable for debugging - def inspect - "#{self.class}:#{name}(#{payload.inspect})" - end - - # @return [Boolean] whether the two vertices are equal, determined - # by a recursive traversal of each {Vertex#successors} - def ==(other) - return true if equal?(other) - shallow_eql?(other) && - successors.to_set == other.successors.to_set - end - - # @param [Vertex] other the other vertex to compare to - # @return [Boolean] whether the two vertices are equal, determined - # solely by {#name} and {#payload} equality - def shallow_eql?(other) - return true if equal?(other) - other && - name == other.name && - payload == other.payload - end - - alias eql? == - - # @return [Fixnum] a hash for the vertex based upon its {#name} - def hash - name.hash - end - - # Is there a path from `self` to `other` following edges in the - # dependency graph? - # @return true iff there is a path following edges within this {#graph} - def path_to?(other) - equal?(other) || successors.any? { |v| v.path_to?(other) } - end - - alias descendent? path_to? - - # Is there a path from `other` to `self` following edges in the - # dependency graph? - # @return true iff there is a path following edges within this {#graph} - def ancestor?(other) - other.path_to?(self) - end - - alias is_reachable_from? ancestor? - end - end -end diff --git a/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb b/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb deleted file mode 100644 index fb343250b1..0000000000 --- a/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +++ /dev/null @@ -1,138 +0,0 @@ -# frozen_string_literal: true - -module Bundler::Molinillo - # An error that occurred during the resolution process - class ResolverError < StandardError; end - - # An error caused by searching for a dependency that is completely unknown, - # i.e. has no versions available whatsoever. - class NoSuchDependencyError < ResolverError - # @return [Object] the dependency that could not be found - attr_accessor :dependency - - # @return [Array] the specifications that depended upon {#dependency} - attr_accessor :required_by - - # Initializes a new error with the given missing dependency. - # @param [Object] dependency @see {#dependency} - # @param [Array] required_by @see {#required_by} - def initialize(dependency, required_by = []) - @dependency = dependency - @required_by = required_by - super() - end - - # The error message for the missing dependency, including the specifications - # that had this dependency. - def message - sources = required_by.map { |r| "`#{r}`" }.join(' and ') - message = "Unable to find a specification for `#{dependency}`" - message += " depended upon by #{sources}" unless sources.empty? - message - end - end - - # An error caused by attempting to fulfil a dependency that was circular - # - # @note This exception will be thrown iff a {Vertex} is added to a - # {DependencyGraph} that has a {DependencyGraph::Vertex#path_to?} an - # existing {DependencyGraph::Vertex} - class CircularDependencyError < ResolverError - # [Set] the dependencies responsible for causing the error - attr_reader :dependencies - - # Initializes a new error with the given circular vertices. - # @param [Array] vertices the vertices in the dependency - # that caused the error - def initialize(vertices) - super "There is a circular dependency between #{vertices.map(&:name).join(' and ')}" - @dependencies = vertices.map { |vertex| vertex.payload.possibilities.last }.to_set - end - end - - # An error caused by conflicts in version - class VersionConflict < ResolverError - # @return [{String => Resolution::Conflict}] the conflicts that caused - # resolution to fail - attr_reader :conflicts - - # @return [SpecificationProvider] the specification provider used during - # resolution - attr_reader :specification_provider - - # Initializes a new error with the given version conflicts. - # @param [{String => Resolution::Conflict}] conflicts see {#conflicts} - # @param [SpecificationProvider] specification_provider see {#specification_provider} - def initialize(conflicts, specification_provider) - pairs = [] - Compatibility.flat_map(conflicts.values.flatten, &:requirements).each do |conflicting| - conflicting.each do |source, conflict_requirements| - conflict_requirements.each do |c| - pairs << [c, source] - end - end - end - - super "Unable to satisfy the following requirements:\n\n" \ - "#{pairs.map { |r, d| "- `#{r}` required by `#{d}`" }.join("\n")}" - - @conflicts = conflicts - @specification_provider = specification_provider - end - - require 'bundler/vendor/molinillo/lib/molinillo/delegates/specification_provider' - include Delegates::SpecificationProvider - - # @return [String] An error message that includes requirement trees, - # which is much more detailed & customizable than the default message - # @param [Hash] opts the options to create a message with. - # @option opts [String] :solver_name The user-facing name of the solver - # @option opts [String] :possibility_type The generic name of a possibility - # @option opts [Proc] :reduce_trees A proc that reduced the list of requirement trees - # @option opts [Proc] :printable_requirement A proc that pretty-prints requirements - # @option opts [Proc] :additional_message_for_conflict A proc that appends additional - # messages for each conflict - # @option opts [Proc] :version_for_spec A proc that returns the version number for a - # possibility - def message_with_trees(opts = {}) - solver_name = opts.delete(:solver_name) { self.class.name.split('::').first } - possibility_type = opts.delete(:possibility_type) { 'possibility named' } - reduce_trees = opts.delete(:reduce_trees) { proc { |trees| trees.uniq.sort_by(&:to_s) } } - printable_requirement = opts.delete(:printable_requirement) { proc { |req| req.to_s } } - additional_message_for_conflict = opts.delete(:additional_message_for_conflict) { proc {} } - version_for_spec = opts.delete(:version_for_spec) { proc(&:to_s) } - - conflicts.sort.reduce(''.dup) do |o, (name, conflict)| - o << %(\n#{solver_name} could not find compatible versions for #{possibility_type} "#{name}":\n) - if conflict.locked_requirement - o << %( In snapshot (#{name_for_locking_dependency_source}):\n) - o << %( #{printable_requirement.call(conflict.locked_requirement)}\n) - o << %(\n) - end - o << %( In #{name_for_explicit_dependency_source}:\n) - trees = reduce_trees.call(conflict.requirement_trees) - - o << trees.map do |tree| - t = ''.dup - depth = 2 - tree.each do |req| - t << ' ' * depth << req.to_s - unless tree.last == req - if spec = conflict.activated_by_name[name_for(req)] - t << %( was resolved to #{version_for_spec.call(spec)}, which) - end - t << %( depends on) - end - t << %(\n) - depth += 1 - end - t - end.join("\n") - - additional_message_for_conflict.call(o, name, conflict) - - o - end.strip - end - end -end diff --git a/lib/bundler/vendor/molinillo/lib/molinillo/gem_metadata.rb b/lib/bundler/vendor/molinillo/lib/molinillo/gem_metadata.rb deleted file mode 100644 index 3feb7be9b5..0000000000 --- a/lib/bundler/vendor/molinillo/lib/molinillo/gem_metadata.rb +++ /dev/null @@ -1,6 +0,0 @@ -# frozen_string_literal: true - -module Bundler::Molinillo - # The version of Bundler::Molinillo. - VERSION = '0.6.4'.freeze -end diff --git a/lib/bundler/vendor/molinillo/lib/molinillo/modules/specification_provider.rb b/lib/bundler/vendor/molinillo/lib/molinillo/modules/specification_provider.rb deleted file mode 100644 index fa094c1981..0000000000 --- a/lib/bundler/vendor/molinillo/lib/molinillo/modules/specification_provider.rb +++ /dev/null @@ -1,101 +0,0 @@ -# frozen_string_literal: true - -module Bundler::Molinillo - # Provides information about specifcations and dependencies to the resolver, - # allowing the {Resolver} class to remain generic while still providing power - # and flexibility. - # - # This module contains the methods that users of Bundler::Molinillo must to implement, - # using knowledge of their own model classes. - module SpecificationProvider - # Search for the specifications that match the given dependency. - # The specifications in the returned array will be considered in reverse - # order, so the latest version ought to be last. - # @note This method should be 'pure', i.e. the return value should depend - # only on the `dependency` parameter. - # - # @param [Object] dependency - # @return [Array] the specifications that satisfy the given - # `dependency`. - def search_for(dependency) - [] - end - - # Returns the dependencies of `specification`. - # @note This method should be 'pure', i.e. the return value should depend - # only on the `specification` parameter. - # - # @param [Object] specification - # @return [Array] the dependencies that are required by the given - # `specification`. - def dependencies_for(specification) - [] - end - - # Determines whether the given `requirement` is satisfied by the given - # `spec`, in the context of the current `activated` dependency graph. - # - # @param [Object] requirement - # @param [DependencyGraph] activated the current dependency graph in the - # resolution process. - # @param [Object] spec - # @return [Boolean] whether `requirement` is satisfied by `spec` in the - # context of the current `activated` dependency graph. - def requirement_satisfied_by?(requirement, activated, spec) - true - end - - # Returns the name for the given `dependency`. - # @note This method should be 'pure', i.e. the return value should depend - # only on the `dependency` parameter. - # - # @param [Object] dependency - # @return [String] the name for the given `dependency`. - def name_for(dependency) - dependency.to_s - end - - # @return [String] the name of the source of explicit dependencies, i.e. - # those passed to {Resolver#resolve} directly. - def name_for_explicit_dependency_source - 'user-specified dependency' - end - - # @return [String] the name of the source of 'locked' dependencies, i.e. - # those passed to {Resolver#resolve} directly as the `base` - def name_for_locking_dependency_source - 'Lockfile' - end - - # Sort dependencies so that the ones that are easiest to resolve are first. - # Easiest to resolve is (usually) defined by: - # 1) Is this dependency already activated? - # 2) How relaxed are the requirements? - # 3) Are there any conflicts for this dependency? - # 4) How many possibilities are there to satisfy this dependency? - # - # @param [Array] dependencies - # @param [DependencyGraph] activated the current dependency graph in the - # resolution process. - # @param [{String => Array}] conflicts - # @return [Array] a sorted copy of `dependencies`. - def sort_dependencies(dependencies, activated, conflicts) - dependencies.sort_by do |dependency| - name = name_for(dependency) - [ - activated.vertex_named(name).payload ? 0 : 1, - conflicts[name] ? 0 : 1, - ] - end - end - - # Returns whether this dependency, which has no possible matching - # specifications, can safely be ignored. - # - # @param [Object] dependency - # @return [Boolean] whether this dependency can safely be skipped. - def allow_missing?(dependency) - false - end - end -end diff --git a/lib/bundler/vendor/molinillo/lib/molinillo/modules/ui.rb b/lib/bundler/vendor/molinillo/lib/molinillo/modules/ui.rb deleted file mode 100644 index a166bc6991..0000000000 --- a/lib/bundler/vendor/molinillo/lib/molinillo/modules/ui.rb +++ /dev/null @@ -1,67 +0,0 @@ -# frozen_string_literal: true - -module Bundler::Molinillo - # Conveys information about the resolution process to a user. - module UI - # The {IO} object that should be used to print output. `STDOUT`, by default. - # - # @return [IO] - def output - STDOUT - end - - # Called roughly every {#progress_rate}, this method should convey progress - # to the user. - # - # @return [void] - def indicate_progress - output.print '.' unless debug? - end - - # How often progress should be conveyed to the user via - # {#indicate_progress}, in seconds. A third of a second, by default. - # - # @return [Float] - def progress_rate - 0.33 - end - - # Called before resolution begins. - # - # @return [void] - def before_resolution - output.print 'Resolving dependencies...' - end - - # Called after resolution ends (either successfully or with an error). - # By default, prints a newline. - # - # @return [void] - def after_resolution - output.puts - end - - # Conveys debug information to the user. - # - # @param [Integer] depth the current depth of the resolution process. - # @return [void] - def debug(depth = 0) - if debug? - debug_info = yield - debug_info = debug_info.inspect unless debug_info.is_a?(String) - debug_info = debug_info.split("\n").map { |s| ":#{depth.to_s.rjust 4}: #{s}" } - output.puts debug_info - end - end - - # Whether or not debug messages should be printed. - # By default, whether or not the `MOLINILLO_DEBUG` environment variable is - # set. - # - # @return [Boolean] - def debug? - return @debug_mode if defined?(@debug_mode) - @debug_mode = ENV['MOLINILLO_DEBUG'] - end - end -end diff --git a/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb b/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb deleted file mode 100644 index 0eb665d17a..0000000000 --- a/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb +++ /dev/null @@ -1,837 +0,0 @@ -# frozen_string_literal: true - -module Bundler::Molinillo - class Resolver - # A specific resolution from a given {Resolver} - class Resolution - # A conflict that the resolution process encountered - # @attr [Object] requirement the requirement that immediately led to the conflict - # @attr [{String,Nil=>[Object]}] requirements the requirements that caused the conflict - # @attr [Object, nil] existing the existing spec that was in conflict with - # the {#possibility} - # @attr [Object] possibility_set the set of specs that was unable to be - # activated due to a conflict. - # @attr [Object] locked_requirement the relevant locking requirement. - # @attr [Array>] requirement_trees the different requirement - # trees that led to every requirement for the conflicting name. - # @attr [{String=>Object}] activated_by_name the already-activated specs. - # @attr [Object] underlying_error an error that has occurred during resolution, and - # will be raised at the end of it if no resolution is found. - Conflict = Struct.new( - :requirement, - :requirements, - :existing, - :possibility_set, - :locked_requirement, - :requirement_trees, - :activated_by_name, - :underlying_error - ) - - class Conflict - # @return [Object] a spec that was unable to be activated due to a conflict - def possibility - possibility_set && possibility_set.latest_version - end - end - - # A collection of possibility states that share the same dependencies - # @attr [Array] dependencies the dependencies for this set of possibilities - # @attr [Array] possibilities the possibilities - PossibilitySet = Struct.new(:dependencies, :possibilities) - - class PossibilitySet - # String representation of the possibility set, for debugging - def to_s - "[#{possibilities.join(', ')}]" - end - - # @return [Object] most up-to-date dependency in the possibility set - def latest_version - possibilities.last - end - end - - # Details of the state to unwind to when a conflict occurs, and the cause of the unwind - # @attr [Integer] state_index the index of the state to unwind to - # @attr [Object] state_requirement the requirement of the state we're unwinding to - # @attr [Array] requirement_tree for the requirement we're relaxing - # @attr [Array] conflicting_requirements the requirements that combined to cause the conflict - # @attr [Array] requirement_trees for the conflict - # @attr [Array] requirements_unwound_to_instead array of unwind requirements that were chosen over this unwind - UnwindDetails = Struct.new( - :state_index, - :state_requirement, - :requirement_tree, - :conflicting_requirements, - :requirement_trees, - :requirements_unwound_to_instead - ) - - class UnwindDetails - include Comparable - - # We compare UnwindDetails when choosing which state to unwind to. If - # two options have the same state_index we prefer the one most - # removed from a requirement that caused the conflict. Both options - # would unwind to the same state, but a `grandparent` option will - # filter out fewer of its possibilities after doing so - where a state - # is both a `parent` and a `grandparent` to requirements that have - # caused a conflict this is the correct behaviour. - # @param [UnwindDetail] other UnwindDetail to be compared - # @return [Integer] integer specifying ordering - def <=>(other) - if state_index > other.state_index - 1 - elsif state_index == other.state_index - reversed_requirement_tree_index <=> other.reversed_requirement_tree_index - else - -1 - end - end - - # @return [Integer] index of state requirement in reversed requirement tree - # (the conflicting requirement itself will be at position 0) - def reversed_requirement_tree_index - @reversed_requirement_tree_index ||= - if state_requirement - requirement_tree.reverse.index(state_requirement) - else - 999_999 - end - end - - # @return [Boolean] where the requirement of the state we're unwinding - # to directly caused the conflict. Note: in this case, it is - # impossible for the state we're unwinding to to be a parent of - # any of the other conflicting requirements (or we would have - # circularity) - def unwinding_to_primary_requirement? - requirement_tree.last == state_requirement - end - - # @return [Array] array of sub-dependencies to avoid when choosing a - # new possibility for the state we've unwound to. Only relevant for - # non-primary unwinds - def sub_dependencies_to_avoid - @requirements_to_avoid ||= - requirement_trees.map do |tree| - index = tree.index(state_requirement) - tree[index + 1] if index - end.compact - end - - # @return [Array] array of all the requirements that led to the need for - # this unwind - def all_requirements - @all_requirements ||= requirement_trees.flatten(1) - end - end - - # @return [SpecificationProvider] the provider that knows about - # dependencies, requirements, specifications, versions, etc. - attr_reader :specification_provider - - # @return [UI] the UI that knows how to communicate feedback about the - # resolution process back to the user - attr_reader :resolver_ui - - # @return [DependencyGraph] the base dependency graph to which - # dependencies should be 'locked' - attr_reader :base - - # @return [Array] the dependencies that were explicitly required - attr_reader :original_requested - - # Initializes a new resolution. - # @param [SpecificationProvider] specification_provider - # see {#specification_provider} - # @param [UI] resolver_ui see {#resolver_ui} - # @param [Array] requested see {#original_requested} - # @param [DependencyGraph] base see {#base} - def initialize(specification_provider, resolver_ui, requested, base) - @specification_provider = specification_provider - @resolver_ui = resolver_ui - @original_requested = requested - @base = base - @states = [] - @iteration_counter = 0 - @parents_of = Hash.new { |h, k| h[k] = [] } - end - - # Resolves the {#original_requested} dependencies into a full dependency - # graph - # @raise [ResolverError] if successful resolution is impossible - # @return [DependencyGraph] the dependency graph of successfully resolved - # dependencies - def resolve - start_resolution - - while state - break if !state.requirement && state.requirements.empty? - indicate_progress - if state.respond_to?(:pop_possibility_state) # DependencyState - debug(depth) { "Creating possibility state for #{requirement} (#{possibilities.count} remaining)" } - state.pop_possibility_state.tap do |s| - if s - states.push(s) - activated.tag(s) - end - end - end - process_topmost_state - end - - resolve_activated_specs - ensure - end_resolution - end - - # @return [Integer] the number of resolver iterations in between calls to - # {#resolver_ui}'s {UI#indicate_progress} method - attr_accessor :iteration_rate - private :iteration_rate - - # @return [Time] the time at which resolution began - attr_accessor :started_at - private :started_at - - # @return [Array] the stack of states for the resolution - attr_accessor :states - private :states - - private - - # Sets up the resolution process - # @return [void] - def start_resolution - @started_at = Time.now - - handle_missing_or_push_dependency_state(initial_state) - - debug { "Starting resolution (#{@started_at})\nUser-requested dependencies: #{original_requested}" } - resolver_ui.before_resolution - end - - def resolve_activated_specs - activated.vertices.each do |_, vertex| - next unless vertex.payload - - latest_version = vertex.payload.possibilities.reverse_each.find do |possibility| - vertex.requirements.all? { |req| requirement_satisfied_by?(req, activated, possibility) } - end - - activated.set_payload(vertex.name, latest_version) - end - activated.freeze - end - - # Ends the resolution process - # @return [void] - def end_resolution - resolver_ui.after_resolution - debug do - "Finished resolution (#{@iteration_counter} steps) " \ - "(Took #{(ended_at = Time.now) - @started_at} seconds) (#{ended_at})" - end - debug { 'Unactivated: ' + Hash[activated.vertices.reject { |_n, v| v.payload }].keys.join(', ') } if state - debug { 'Activated: ' + Hash[activated.vertices.select { |_n, v| v.payload }].keys.join(', ') } if state - end - - require 'bundler/vendor/molinillo/lib/molinillo/state' - require 'bundler/vendor/molinillo/lib/molinillo/modules/specification_provider' - - require 'bundler/vendor/molinillo/lib/molinillo/delegates/resolution_state' - require 'bundler/vendor/molinillo/lib/molinillo/delegates/specification_provider' - - include Bundler::Molinillo::Delegates::ResolutionState - include Bundler::Molinillo::Delegates::SpecificationProvider - - # Processes the topmost available {RequirementState} on the stack - # @return [void] - def process_topmost_state - if possibility - attempt_to_activate - else - create_conflict - unwind_for_conflict - end - rescue CircularDependencyError => underlying_error - create_conflict(underlying_error) - unwind_for_conflict - end - - # @return [Object] the current possibility that the resolution is trying - # to activate - def possibility - possibilities.last - end - - # @return [RequirementState] the current state the resolution is - # operating upon - def state - states.last - end - - # Creates the initial state for the resolution, based upon the - # {#requested} dependencies - # @return [DependencyState] the initial state for the resolution - def initial_state - graph = DependencyGraph.new.tap do |dg| - original_requested.each do |requested| - vertex = dg.add_vertex(name_for(requested), nil, true) - vertex.explicit_requirements << requested - end - dg.tag(:initial_state) - end - - requirements = sort_dependencies(original_requested, graph, {}) - initial_requirement = requirements.shift - DependencyState.new( - initial_requirement && name_for(initial_requirement), - requirements, - graph, - initial_requirement, - possibilities_for_requirement(initial_requirement, graph), - 0, - {}, - [] - ) - end - - # Unwinds the states stack because a conflict has been encountered - # @return [void] - def unwind_for_conflict - details_for_unwind = build_details_for_unwind - unwind_options = unused_unwind_options - debug(depth) { "Unwinding for conflict: #{requirement} to #{details_for_unwind.state_index / 2}" } - conflicts.tap do |c| - sliced_states = states.slice!((details_for_unwind.state_index + 1)..-1) - raise_error_unless_state(c) - activated.rewind_to(sliced_states.first || :initial_state) if sliced_states - state.conflicts = c - state.unused_unwind_options = unwind_options - filter_possibilities_after_unwind(details_for_unwind) - index = states.size - 1 - @parents_of.each { |_, a| a.reject! { |i| i >= index } } - state.unused_unwind_options.reject! { |uw| uw.state_index >= index } - end - end - - # Raises a VersionConflict error, or any underlying error, if there is no - # current state - # @return [void] - def raise_error_unless_state(conflicts) - return if state - - error = conflicts.values.map(&:underlying_error).compact.first - raise error || VersionConflict.new(conflicts, specification_provider) - end - - # @return [UnwindDetails] Details of the nearest index to which we could unwind - def build_details_for_unwind - # Get the possible unwinds for the current conflict - current_conflict = conflicts[name] - binding_requirements = binding_requirements_for_conflict(current_conflict) - unwind_details = unwind_options_for_requirements(binding_requirements) - - last_detail_for_current_unwind = unwind_details.sort.last - current_detail = last_detail_for_current_unwind - - # Look for past conflicts that could be unwound to affect the - # requirement tree for the current conflict - relevant_unused_unwinds = unused_unwind_options.select do |alternative| - intersecting_requirements = - last_detail_for_current_unwind.all_requirements & - alternative.requirements_unwound_to_instead - next if intersecting_requirements.empty? - # Find the highest index unwind whilst looping through - current_detail = alternative if alternative > current_detail - alternative - end - - # Add the current unwind options to the `unused_unwind_options` array. - # The "used" option will be filtered out during `unwind_for_conflict`. - state.unused_unwind_options += unwind_details.reject { |detail| detail.state_index == -1 } - - # Update the requirements_unwound_to_instead on any relevant unused unwinds - relevant_unused_unwinds.each { |d| d.requirements_unwound_to_instead << current_detail.state_requirement } - unwind_details.each { |d| d.requirements_unwound_to_instead << current_detail.state_requirement } - - current_detail - end - - # @param [Array] array of requirements that combine to create a conflict - # @return [Array] array of UnwindDetails that have a chance - # of resolving the passed requirements - def unwind_options_for_requirements(binding_requirements) - unwind_details = [] - - trees = [] - binding_requirements.reverse_each do |r| - partial_tree = [r] - trees << partial_tree - unwind_details << UnwindDetails.new(-1, nil, partial_tree, binding_requirements, trees, []) - - # If this requirement has alternative possibilities, check if any would - # satisfy the other requirements that created this conflict - requirement_state = find_state_for(r) - if conflict_fixing_possibilities?(requirement_state, binding_requirements) - unwind_details << UnwindDetails.new( - states.index(requirement_state), - r, - partial_tree, - binding_requirements, - trees, - [] - ) - end - - # Next, look at the parent of this requirement, and check if the requirement - # could have been avoided if an alternative PossibilitySet had been chosen - parent_r = parent_of(r) - next if parent_r.nil? - partial_tree.unshift(parent_r) - requirement_state = find_state_for(parent_r) - if requirement_state.possibilities.any? { |set| !set.dependencies.include?(r) } - unwind_details << UnwindDetails.new( - states.index(requirement_state), - parent_r, - partial_tree, - binding_requirements, - trees, - [] - ) - end - - # Finally, look at the grandparent and up of this requirement, looking - # for any possibilities that wouldn't create their parent requirement - grandparent_r = parent_of(parent_r) - until grandparent_r.nil? - partial_tree.unshift(grandparent_r) - requirement_state = find_state_for(grandparent_r) - if requirement_state.possibilities.any? { |set| !set.dependencies.include?(parent_r) } - unwind_details << UnwindDetails.new( - states.index(requirement_state), - grandparent_r, - partial_tree, - binding_requirements, - trees, - [] - ) - end - parent_r = grandparent_r - grandparent_r = parent_of(parent_r) - end - end - - unwind_details - end - - # @param [DependencyState] state - # @param [Array] array of requirements - # @return [Boolean] whether or not the given state has any possibilities - # that could satisfy the given requirements - def conflict_fixing_possibilities?(state, binding_requirements) - return false unless state - - state.possibilities.any? do |possibility_set| - possibility_set.possibilities.any? do |poss| - possibility_satisfies_requirements?(poss, binding_requirements) - end - end - end - - # Filter's a state's possibilities to remove any that would not fix the - # conflict we've just rewound from - # @param [UnwindDetails] details of the conflict just unwound from - # @return [void] - def filter_possibilities_after_unwind(unwind_details) - return unless state && !state.possibilities.empty? - - if unwind_details.unwinding_to_primary_requirement? - filter_possibilities_for_primary_unwind(unwind_details) - else - filter_possibilities_for_parent_unwind(unwind_details) - end - end - - # Filter's a state's possibilities to remove any that would not satisfy - # the requirements in the conflict we've just rewound from - # @param [UnwindDetails] details of the conflict just unwound from - # @return [void] - def filter_possibilities_for_primary_unwind(unwind_details) - unwinds_to_state = unused_unwind_options.select { |uw| uw.state_index == unwind_details.state_index } - unwinds_to_state << unwind_details - unwind_requirement_sets = unwinds_to_state.map(&:conflicting_requirements) - - state.possibilities.reject! do |possibility_set| - possibility_set.possibilities.none? do |poss| - unwind_requirement_sets.any? do |requirements| - possibility_satisfies_requirements?(poss, requirements) - end - end - end - end - - # @param [Object] possibility a single possibility - # @param [Array] requirements an array of requirements - # @return [Boolean] whether the possibility satisfies all of the - # given requirements - def possibility_satisfies_requirements?(possibility, requirements) - name = name_for(possibility) - - activated.tag(:swap) - activated.set_payload(name, possibility) if activated.vertex_named(name) - satisfied = requirements.all? { |r| requirement_satisfied_by?(r, activated, possibility) } - activated.rewind_to(:swap) - - satisfied - end - - # Filter's a state's possibilities to remove any that would (eventually) - # create a requirement in the conflict we've just rewound from - # @param [UnwindDetails] details of the conflict just unwound from - # @return [void] - def filter_possibilities_for_parent_unwind(unwind_details) - unwinds_to_state = unused_unwind_options.select { |uw| uw.state_index == unwind_details.state_index } - unwinds_to_state << unwind_details - - primary_unwinds = unwinds_to_state.select(&:unwinding_to_primary_requirement?).uniq - parent_unwinds = unwinds_to_state.uniq - primary_unwinds - - allowed_possibility_sets = Compatibility.flat_map(primary_unwinds) do |unwind| - states[unwind.state_index].possibilities.select do |possibility_set| - possibility_set.possibilities.any? do |poss| - possibility_satisfies_requirements?(poss, unwind.conflicting_requirements) - end - end - end - - requirements_to_avoid = Compatibility.flat_map(parent_unwinds, &:sub_dependencies_to_avoid) - - state.possibilities.reject! do |possibility_set| - !allowed_possibility_sets.include?(possibility_set) && - (requirements_to_avoid - possibility_set.dependencies).empty? - end - end - - # @param [Conflict] conflict - # @return [Array] minimal array of requirements that would cause the passed - # conflict to occur. - def binding_requirements_for_conflict(conflict) - return [conflict.requirement] if conflict.possibility.nil? - - possible_binding_requirements = conflict.requirements.values.flatten(1).uniq - - # When there’s a `CircularDependency` error the conflicting requirement - # (the one causing the circular) won’t be `conflict.requirement` - # (which won’t be for the right state, because we won’t have created it, - # because it’s circular). - # We need to make sure we have that requirement in the conflict’s list, - # otherwise we won’t be able to unwind properly, so we just return all - # the requirements for the conflict. - return possible_binding_requirements if conflict.underlying_error - - possibilities = search_for(conflict.requirement) - - # If all the requirements together don't filter out all possibilities, - # then the only two requirements we need to consider are the initial one - # (where the dependency's version was first chosen) and the last - if binding_requirement_in_set?(nil, possible_binding_requirements, possibilities) - return [conflict.requirement, requirement_for_existing_name(name_for(conflict.requirement))].compact - end - - # Loop through the possible binding requirements, removing each one - # that doesn't bind. Use a `reverse_each` as we want the earliest set of - # binding requirements, and don't use `reject!` as we wish to refine the - # array *on each iteration*. - binding_requirements = possible_binding_requirements.dup - possible_binding_requirements.reverse_each do |req| - next if req == conflict.requirement - unless binding_requirement_in_set?(req, binding_requirements, possibilities) - binding_requirements -= [req] - end - end - - binding_requirements - end - - # @param [Object] requirement we wish to check - # @param [Array] array of requirements - # @param [Array] array of possibilities the requirements will be used to filter - # @return [Boolean] whether or not the given requirement is required to filter - # out all elements of the array of possibilities. - def binding_requirement_in_set?(requirement, possible_binding_requirements, possibilities) - possibilities.any? do |poss| - possibility_satisfies_requirements?(poss, possible_binding_requirements - [requirement]) - end - end - - # @return [Object] the requirement that led to `requirement` being added - # to the list of requirements. - def parent_of(requirement) - return unless requirement - return unless index = @parents_of[requirement].last - return unless parent_state = @states[index] - parent_state.requirement - end - - # @return [Object] the requirement that led to a version of a possibility - # with the given name being activated. - def requirement_for_existing_name(name) - return nil unless vertex = activated.vertex_named(name) - return nil unless vertex.payload - states.find { |s| s.name == name }.requirement - end - - # @return [ResolutionState] the state whose `requirement` is the given - # `requirement`. - def find_state_for(requirement) - return nil unless requirement - states.find { |i| requirement == i.requirement } - end - - # @return [Conflict] a {Conflict} that reflects the failure to activate - # the {#possibility} in conjunction with the current {#state} - def create_conflict(underlying_error = nil) - vertex = activated.vertex_named(name) - locked_requirement = locked_requirement_named(name) - - requirements = {} - unless vertex.explicit_requirements.empty? - requirements[name_for_explicit_dependency_source] = vertex.explicit_requirements - end - requirements[name_for_locking_dependency_source] = [locked_requirement] if locked_requirement - vertex.incoming_edges.each do |edge| - (requirements[edge.origin.payload.latest_version] ||= []).unshift(edge.requirement) - end - - activated_by_name = {} - activated.each { |v| activated_by_name[v.name] = v.payload.latest_version if v.payload } - conflicts[name] = Conflict.new( - requirement, - requirements, - vertex.payload && vertex.payload.latest_version, - possibility, - locked_requirement, - requirement_trees, - activated_by_name, - underlying_error - ) - end - - # @return [Array>] The different requirement - # trees that led to every requirement for the current spec. - def requirement_trees - vertex = activated.vertex_named(name) - vertex.requirements.map { |r| requirement_tree_for(r) } - end - - # @return [Array] the list of requirements that led to - # `requirement` being required. - def requirement_tree_for(requirement) - tree = [] - while requirement - tree.unshift(requirement) - requirement = parent_of(requirement) - end - tree - end - - # Indicates progress roughly once every second - # @return [void] - def indicate_progress - @iteration_counter += 1 - @progress_rate ||= resolver_ui.progress_rate - if iteration_rate.nil? - if Time.now - started_at >= @progress_rate - self.iteration_rate = @iteration_counter - end - end - - if iteration_rate && (@iteration_counter % iteration_rate) == 0 - resolver_ui.indicate_progress - end - end - - # Calls the {#resolver_ui}'s {UI#debug} method - # @param [Integer] depth the depth of the {#states} stack - # @param [Proc] block a block that yields a {#to_s} - # @return [void] - def debug(depth = 0, &block) - resolver_ui.debug(depth, &block) - end - - # Attempts to activate the current {#possibility} - # @return [void] - def attempt_to_activate - debug(depth) { 'Attempting to activate ' + possibility.to_s } - existing_vertex = activated.vertex_named(name) - if existing_vertex.payload - debug(depth) { "Found existing spec (#{existing_vertex.payload})" } - attempt_to_filter_existing_spec(existing_vertex) - else - latest = possibility.latest_version - # use reject!(!satisfied) for 1.8.7 compatibility - possibility.possibilities.reject! do |possibility| - !requirement_satisfied_by?(requirement, activated, possibility) - end - if possibility.latest_version.nil? - # ensure there's a possibility for better error messages - possibility.possibilities << latest if latest - create_conflict - unwind_for_conflict - else - activate_new_spec - end - end - end - - # Attempts to update the existing vertex's `PossibilitySet` with a filtered version - # @return [void] - def attempt_to_filter_existing_spec(vertex) - filtered_set = filtered_possibility_set(vertex) - if !filtered_set.possibilities.empty? - activated.set_payload(name, filtered_set) - new_requirements = requirements.dup - push_state_for_requirements(new_requirements, false) - else - create_conflict - debug(depth) { "Unsatisfied by existing spec (#{vertex.payload})" } - unwind_for_conflict - end - end - - # Generates a filtered version of the existing vertex's `PossibilitySet` using the - # current state's `requirement` - # @param [Object] existing vertex - # @return [PossibilitySet] filtered possibility set - def filtered_possibility_set(vertex) - PossibilitySet.new(vertex.payload.dependencies, vertex.payload.possibilities & possibility.possibilities) - end - - # @param [String] requirement_name the spec name to search for - # @return [Object] the locked spec named `requirement_name`, if one - # is found on {#base} - def locked_requirement_named(requirement_name) - vertex = base.vertex_named(requirement_name) - vertex && vertex.payload - end - - # Add the current {#possibility} to the dependency graph of the current - # {#state} - # @return [void] - def activate_new_spec - conflicts.delete(name) - debug(depth) { "Activated #{name} at #{possibility}" } - activated.set_payload(name, possibility) - require_nested_dependencies_for(possibility) - end - - # Requires the dependencies that the recently activated spec has - # @param [Object] activated_possibility the PossibilitySet that has just been - # activated - # @return [void] - def require_nested_dependencies_for(possibility_set) - nested_dependencies = dependencies_for(possibility_set.latest_version) - debug(depth) { "Requiring nested dependencies (#{nested_dependencies.join(', ')})" } - nested_dependencies.each do |d| - activated.add_child_vertex(name_for(d), nil, [name_for(possibility_set.latest_version)], d) - parent_index = states.size - 1 - parents = @parents_of[d] - parents << parent_index if parents.empty? - end - - push_state_for_requirements(requirements + nested_dependencies, !nested_dependencies.empty?) - end - - # Pushes a new {DependencyState} that encapsulates both existing and new - # requirements - # @param [Array] new_requirements - # @return [void] - def push_state_for_requirements(new_requirements, requires_sort = true, new_activated = activated) - new_requirements = sort_dependencies(new_requirements.uniq, new_activated, conflicts) if requires_sort - new_requirement = nil - loop do - new_requirement = new_requirements.shift - break if new_requirement.nil? || states.none? { |s| s.requirement == new_requirement } - end - new_name = new_requirement ? name_for(new_requirement) : ''.freeze - possibilities = possibilities_for_requirement(new_requirement) - handle_missing_or_push_dependency_state DependencyState.new( - new_name, new_requirements, new_activated, - new_requirement, possibilities, depth, conflicts.dup, unused_unwind_options.dup - ) - end - - # Checks a proposed requirement with any existing locked requirement - # before generating an array of possibilities for it. - # @param [Object] the proposed requirement - # @return [Array] possibilities - def possibilities_for_requirement(requirement, activated = self.activated) - return [] unless requirement - if locked_requirement_named(name_for(requirement)) - return locked_requirement_possibility_set(requirement, activated) - end - - group_possibilities(search_for(requirement)) - end - - # @param [Object] the proposed requirement - # @return [Array] possibility set containing only the locked requirement, if any - def locked_requirement_possibility_set(requirement, activated = self.activated) - all_possibilities = search_for(requirement) - locked_requirement = locked_requirement_named(name_for(requirement)) - - # Longwinded way to build a possibilities array with either the locked - # requirement or nothing in it. Required, since the API for - # locked_requirement isn't guaranteed. - locked_possibilities = all_possibilities.select do |possibility| - requirement_satisfied_by?(locked_requirement, activated, possibility) - end - - group_possibilities(locked_possibilities) - end - - # Build an array of PossibilitySets, with each element representing a group of - # dependency versions that all have the same sub-dependency version constraints - # and are contiguous. - # @param [Array] an array of possibilities - # @return [Array] an array of possibility sets - def group_possibilities(possibilities) - possibility_sets = [] - current_possibility_set = nil - - possibilities.reverse_each do |possibility| - dependencies = dependencies_for(possibility) - if current_possibility_set && current_possibility_set.dependencies == dependencies - current_possibility_set.possibilities.unshift(possibility) - else - possibility_sets.unshift(PossibilitySet.new(dependencies, [possibility])) - current_possibility_set = possibility_sets.first - end - end - - possibility_sets - end - - # Pushes a new {DependencyState}. - # If the {#specification_provider} says to - # {SpecificationProvider#allow_missing?} that particular requirement, and - # there are no possibilities for that requirement, then `state` is not - # pushed, and the vertex in {#activated} is removed, and we continue - # resolving the remaining requirements. - # @param [DependencyState] state - # @return [void] - def handle_missing_or_push_dependency_state(state) - if state.requirement && state.possibilities.empty? && allow_missing?(state.requirement) - state.activated.detach_vertex_named(state.name) - push_state_for_requirements(state.requirements.dup, false, state.activated) - else - states.push(state).tap { activated.tag(state) } - end - end - end - end -end diff --git a/lib/bundler/vendor/molinillo/lib/molinillo/resolver.rb b/lib/bundler/vendor/molinillo/lib/molinillo/resolver.rb deleted file mode 100644 index 7d36858778..0000000000 --- a/lib/bundler/vendor/molinillo/lib/molinillo/resolver.rb +++ /dev/null @@ -1,46 +0,0 @@ -# frozen_string_literal: true - -require 'bundler/vendor/molinillo/lib/molinillo/dependency_graph' - -module Bundler::Molinillo - # This class encapsulates a dependency resolver. - # The resolver is responsible for determining which set of dependencies to - # activate, with feedback from the {#specification_provider} - # - # - class Resolver - require 'bundler/vendor/molinillo/lib/molinillo/resolution' - - # @return [SpecificationProvider] the specification provider used - # in the resolution process - attr_reader :specification_provider - - # @return [UI] the UI module used to communicate back to the user - # during the resolution process - attr_reader :resolver_ui - - # Initializes a new resolver. - # @param [SpecificationProvider] specification_provider - # see {#specification_provider} - # @param [UI] resolver_ui - # see {#resolver_ui} - def initialize(specification_provider, resolver_ui) - @specification_provider = specification_provider - @resolver_ui = resolver_ui - end - - # Resolves the requested dependencies into a {DependencyGraph}, - # locking to the base dependency graph (if specified) - # @param [Array] requested an array of 'requested' dependencies that the - # {#specification_provider} can understand - # @param [DependencyGraph,nil] base the base dependency graph to which - # dependencies should be 'locked' - def resolve(requested, base = DependencyGraph.new) - Resolution.new(specification_provider, - resolver_ui, - requested, - base). - resolve - end - end -end diff --git a/lib/bundler/vendor/molinillo/lib/molinillo/state.rb b/lib/bundler/vendor/molinillo/lib/molinillo/state.rb deleted file mode 100644 index 68fa1f54e3..0000000000 --- a/lib/bundler/vendor/molinillo/lib/molinillo/state.rb +++ /dev/null @@ -1,58 +0,0 @@ -# frozen_string_literal: true - -module Bundler::Molinillo - # A state that a {Resolution} can be in - # @attr [String] name the name of the current requirement - # @attr [Array] requirements currently unsatisfied requirements - # @attr [DependencyGraph] activated the graph of activated dependencies - # @attr [Object] requirement the current requirement - # @attr [Object] possibilities the possibilities to satisfy the current requirement - # @attr [Integer] depth the depth of the resolution - # @attr [Hash] conflicts unresolved conflicts, indexed by dependency name - # @attr [Array] unused_unwind_options unwinds for previous conflicts that weren't explored - ResolutionState = Struct.new( - :name, - :requirements, - :activated, - :requirement, - :possibilities, - :depth, - :conflicts, - :unused_unwind_options - ) - - class ResolutionState - # Returns an empty resolution state - # @return [ResolutionState] an empty state - def self.empty - new(nil, [], DependencyGraph.new, nil, nil, 0, {}, []) - end - end - - # A state that encapsulates a set of {#requirements} with an {Array} of - # possibilities - class DependencyState < ResolutionState - # Removes a possibility from `self` - # @return [PossibilityState] a state with a single possibility, - # the possibility that was removed from `self` - def pop_possibility_state - PossibilityState.new( - name, - requirements.dup, - activated, - requirement, - [possibilities.pop], - depth + 1, - conflicts.dup, - unused_unwind_options.dup - ).tap do |state| - state.activated.tag(state) - end - end - end - - # A state that encapsulates a single possibility to fulfill the given - # {#requirement} - class PossibilityState < ResolutionState - end -end diff --git a/lib/bundler/vendor/net-http-persistent/lib/net/http/faster.rb b/lib/bundler/vendor/net-http-persistent/lib/net/http/faster.rb deleted file mode 100644 index e5e09080c2..0000000000 --- a/lib/bundler/vendor/net-http-persistent/lib/net/http/faster.rb +++ /dev/null @@ -1,27 +0,0 @@ -require 'net/protocol' - -## -# Aaron Patterson's monkeypatch (accepted into 1.9.1) to fix Net::HTTP's speed -# problems. -# -# http://gist.github.com/251244 - -class Net::BufferedIO #:nodoc: - alias :old_rbuf_fill :rbuf_fill - - def rbuf_fill - if @io.respond_to? :read_nonblock then - begin - @rbuf << @io.read_nonblock(65536) - rescue Errno::EWOULDBLOCK, Errno::EAGAIN => e - retry if IO.select [@io], nil, nil, @read_timeout - raise Timeout::Error, e.message - end - else # SSL sockets do not have read_nonblock - timeout @read_timeout do - @rbuf << @io.sysread(65536) - end - end - end -end if RUBY_VERSION < '1.9' - diff --git a/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb b/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb deleted file mode 100644 index 7cbca5bc06..0000000000 --- a/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +++ /dev/null @@ -1,1233 +0,0 @@ -require 'net/http' -begin - require 'net/https' -rescue LoadError - # net/https or openssl -end if RUBY_VERSION < '1.9' # but only for 1.8 -require 'bundler/vendor/net-http-persistent/lib/net/http/faster' -require 'uri' -require 'cgi' # for escaping - -begin - require 'net/http/pipeline' -rescue LoadError -end - -autoload :OpenSSL, 'openssl' - -## -# Persistent connections for Net::HTTP -# -# Bundler::Persistent::Net::HTTP::Persistent maintains persistent connections across all the -# servers you wish to talk to. For each host:port you communicate with a -# single persistent connection is created. -# -# Multiple Bundler::Persistent::Net::HTTP::Persistent objects will share the same set of -# connections. -# -# For each thread you start a new connection will be created. A -# Bundler::Persistent::Net::HTTP::Persistent connection will not be shared across threads. -# -# You can shut down the HTTP connections when done by calling #shutdown. You -# should name your Bundler::Persistent::Net::HTTP::Persistent object if you intend to call this -# method. -# -# Example: -# -# require 'bundler/vendor/net-http-persistent/lib/net/http/persistent' -# -# uri = URI 'http://example.com/awesome/web/service' -# -# http = Bundler::Persistent::Net::HTTP::Persistent.new 'my_app_name' -# -# # perform a GET -# response = http.request uri -# -# # or -# -# get = Net::HTTP::Get.new uri.request_uri -# response = http.request get -# -# # create a POST -# post_uri = uri + 'create' -# post = Net::HTTP::Post.new post_uri.path -# post.set_form_data 'some' => 'cool data' -# -# # perform the POST, the URI is always required -# response http.request post_uri, post -# -# Note that for GET, HEAD and other requests that do not have a body you want -# to use URI#request_uri not URI#path. The request_uri contains the query -# params which are sent in the body for other requests. -# -# == SSL -# -# SSL connections are automatically created depending upon the scheme of the -# URI. SSL connections are automatically verified against the default -# certificate store for your computer. You can override this by changing -# verify_mode or by specifying an alternate cert_store. -# -# Here are the SSL settings, see the individual methods for documentation: -# -# #certificate :: This client's certificate -# #ca_file :: The certificate-authority -# #cert_store :: An SSL certificate store -# #private_key :: The client's SSL private key -# #reuse_ssl_sessions :: Reuse a previously opened SSL session for a new -# connection -# #ssl_version :: Which specific SSL version to use -# #verify_callback :: For server certificate verification -# #verify_mode :: How connections should be verified -# -# == Proxies -# -# A proxy can be set through #proxy= or at initialization time by providing a -# second argument to ::new. The proxy may be the URI of the proxy server or -# :ENV which will consult environment variables. -# -# See #proxy= and #proxy_from_env for details. -# -# == Headers -# -# Headers may be specified for use in every request. #headers are appended to -# any headers on the request. #override_headers replace existing headers on -# the request. -# -# The difference between the two can be seen in setting the User-Agent. Using -# http.headers['User-Agent'] = 'MyUserAgent' will send "Ruby, -# MyUserAgent" while http.override_headers['User-Agent'] = -# 'MyUserAgent' will send "MyUserAgent". -# -# == Tuning -# -# === Segregation -# -# By providing an application name to ::new you can separate your connections -# from the connections of other applications. -# -# === Idle Timeout -# -# If a connection hasn't been used for this number of seconds it will automatically be -# reset upon the next use to avoid attempting to send to a closed connection. -# The default value is 5 seconds. nil means no timeout. Set through #idle_timeout. -# -# Reducing this value may help avoid the "too many connection resets" error -# when sending non-idempotent requests while increasing this value will cause -# fewer round-trips. -# -# === Read Timeout -# -# The amount of time allowed between reading two chunks from the socket. Set -# through #read_timeout -# -# === Max Requests -# -# The number of requests that should be made before opening a new connection. -# Typically many keep-alive capable servers tune this to 100 or less, so the -# 101st request will fail with ECONNRESET. If unset (default), this value has no -# effect, if set, connections will be reset on the request after max_requests. -# -# === Open Timeout -# -# The amount of time to wait for a connection to be opened. Set through -# #open_timeout. -# -# === Socket Options -# -# Socket options may be set on newly-created connections. See #socket_options -# for details. -# -# === Non-Idempotent Requests -# -# By default non-idempotent requests will not be retried per RFC 2616. By -# setting retry_change_requests to true requests will automatically be retried -# once. -# -# Only do this when you know that retrying a POST or other non-idempotent -# request is safe for your application and will not create duplicate -# resources. -# -# The recommended way to handle non-idempotent requests is the following: -# -# require 'bundler/vendor/net-http-persistent/lib/net/http/persistent' -# -# uri = URI 'http://example.com/awesome/web/service' -# post_uri = uri + 'create' -# -# http = Bundler::Persistent::Net::HTTP::Persistent.new 'my_app_name' -# -# post = Net::HTTP::Post.new post_uri.path -# # ... fill in POST request -# -# begin -# response = http.request post_uri, post -# rescue Bundler::Persistent::Net::HTTP::Persistent::Error -# -# # POST failed, make a new request to verify the server did not process -# # the request -# exists_uri = uri + '...' -# response = http.get exists_uri -# -# # Retry if it failed -# retry if response.code == '404' -# end -# -# The method of determining if the resource was created or not is unique to -# the particular service you are using. Of course, you will want to add -# protection from infinite looping. -# -# === Connection Termination -# -# If you are done using the Bundler::Persistent::Net::HTTP::Persistent instance you may shut down -# all the connections in the current thread with #shutdown. This is not -# recommended for normal use, it should only be used when it will be several -# minutes before you make another HTTP request. -# -# If you are using multiple threads, call #shutdown in each thread when the -# thread is done making requests. If you don't call shutdown, that's OK. -# Ruby will automatically garbage collect and shutdown your HTTP connections -# when the thread terminates. - -class Bundler::Persistent::Net::HTTP::Persistent - - ## - # The beginning of Time - - EPOCH = Time.at 0 # :nodoc: - - ## - # Is OpenSSL available? This test works with autoload - - HAVE_OPENSSL = defined? OpenSSL::SSL # :nodoc: - - ## - # The version of Bundler::Persistent::Net::HTTP::Persistent you are using - - VERSION = '2.9.4' - - ## - # Exceptions rescued for automatic retry on ruby 2.0.0. This overlaps with - # the exception list for ruby 1.x. - - RETRIED_EXCEPTIONS = [ # :nodoc: - (Net::ReadTimeout if Net.const_defined? :ReadTimeout), - IOError, - EOFError, - Errno::ECONNRESET, - Errno::ECONNABORTED, - Errno::EPIPE, - (OpenSSL::SSL::SSLError if HAVE_OPENSSL), - Timeout::Error, - ].compact - - ## - # Error class for errors raised by Bundler::Persistent::Net::HTTP::Persistent. Various - # SystemCallErrors are re-raised with a human-readable message under this - # class. - - class Error < StandardError; end - - ## - # Use this method to detect the idle timeout of the host at +uri+. The - # value returned can be used to configure #idle_timeout. +max+ controls the - # maximum idle timeout to detect. - # - # After - # - # Idle timeout detection is performed by creating a connection then - # performing a HEAD request in a loop until the connection terminates - # waiting one additional second per loop. - # - # NOTE: This may not work on ruby > 1.9. - - def self.detect_idle_timeout uri, max = 10 - uri = URI uri unless URI::Generic === uri - uri += '/' - - req = Net::HTTP::Head.new uri.request_uri - - http = new 'net-http-persistent detect_idle_timeout' - - connection = http.connection_for uri - - sleep_time = 0 - - loop do - response = connection.request req - - $stderr.puts "HEAD #{uri} => #{response.code}" if $DEBUG - - unless Net::HTTPOK === response then - raise Error, "bad response code #{response.code} detecting idle timeout" - end - - break if sleep_time >= max - - sleep_time += 1 - - $stderr.puts "sleeping #{sleep_time}" if $DEBUG - sleep sleep_time - end - rescue - # ignore StandardErrors, we've probably found the idle timeout. - ensure - http.shutdown - - return sleep_time unless $! - end - - ## - # This client's OpenSSL::X509::Certificate - - attr_reader :certificate - - # For Net::HTTP parity - alias cert certificate - - ## - # An SSL certificate authority. Setting this will set verify_mode to - # VERIFY_PEER. - - attr_reader :ca_file - - ## - # An SSL certificate store. Setting this will override the default - # certificate store. See verify_mode for more information. - - attr_reader :cert_store - - ## - # Sends debug_output to this IO via Net::HTTP#set_debug_output. - # - # Never use this method in production code, it causes a serious security - # hole. - - attr_accessor :debug_output - - ## - # Current connection generation - - attr_reader :generation # :nodoc: - - ## - # Where this instance's connections live in the thread local variables - - attr_reader :generation_key # :nodoc: - - ## - # Headers that are added to every request using Net::HTTP#add_field - - attr_reader :headers - - ## - # Maps host:port to an HTTP version. This allows us to enable version - # specific features. - - attr_reader :http_versions - - ## - # Maximum time an unused connection can remain idle before being - # automatically closed. - - attr_accessor :idle_timeout - - ## - # Maximum number of requests on a connection before it is considered expired - # and automatically closed. - - attr_accessor :max_requests - - ## - # The value sent in the Keep-Alive header. Defaults to 30. Not needed for - # HTTP/1.1 servers. - # - # This may not work correctly for HTTP/1.0 servers - # - # This method may be removed in a future version as RFC 2616 does not - # require this header. - - attr_accessor :keep_alive - - ## - # A name for this connection. Allows you to keep your connections apart - # from everybody else's. - - attr_reader :name - - ## - # Seconds to wait until a connection is opened. See Net::HTTP#open_timeout - - attr_accessor :open_timeout - - ## - # Headers that are added to every request using Net::HTTP#[]= - - attr_reader :override_headers - - ## - # This client's SSL private key - - attr_reader :private_key - - # For Net::HTTP parity - alias key private_key - - ## - # The URL through which requests will be proxied - - attr_reader :proxy_uri - - ## - # List of host suffixes which will not be proxied - - attr_reader :no_proxy - - ## - # Seconds to wait until reading one block. See Net::HTTP#read_timeout - - attr_accessor :read_timeout - - ## - # Where this instance's request counts live in the thread local variables - - attr_reader :request_key # :nodoc: - - ## - # By default SSL sessions are reused to avoid extra SSL handshakes. Set - # this to false if you have problems communicating with an HTTPS server - # like: - # - # SSL_connect [...] read finished A: unexpected message (OpenSSL::SSL::SSLError) - - attr_accessor :reuse_ssl_sessions - - ## - # An array of options for Socket#setsockopt. - # - # By default the TCP_NODELAY option is set on sockets. - # - # To set additional options append them to this array: - # - # http.socket_options << [Socket::SOL_SOCKET, Socket::SO_KEEPALIVE, 1] - - attr_reader :socket_options - - ## - # Current SSL connection generation - - attr_reader :ssl_generation # :nodoc: - - ## - # Where this instance's SSL connections live in the thread local variables - - attr_reader :ssl_generation_key # :nodoc: - - ## - # SSL version to use. - # - # By default, the version will be negotiated automatically between client - # and server. Ruby 1.9 and newer only. - - attr_reader :ssl_version if RUBY_VERSION > '1.9' - - ## - # Where this instance's last-use times live in the thread local variables - - attr_reader :timeout_key # :nodoc: - - ## - # SSL verification callback. Used when ca_file is set. - - attr_reader :verify_callback - - ## - # HTTPS verify mode. Defaults to OpenSSL::SSL::VERIFY_PEER which verifies - # the server certificate. - # - # If no ca_file or cert_store is set the default system certificate store is - # used. - # - # You can use +verify_mode+ to override any default values. - - attr_reader :verify_mode - - ## - # Enable retries of non-idempotent requests that change data (e.g. POST - # requests) when the server has disconnected. - # - # This will in the worst case lead to multiple requests with the same data, - # but it may be useful for some applications. Take care when enabling - # this option to ensure it is safe to POST or perform other non-idempotent - # requests to the server. - - attr_accessor :retry_change_requests - - ## - # Creates a new Bundler::Persistent::Net::HTTP::Persistent. - # - # Set +name+ to keep your connections apart from everybody else's. Not - # required currently, but highly recommended. Your library name should be - # good enough. This parameter will be required in a future version. - # - # +proxy+ may be set to a URI::HTTP or :ENV to pick up proxy options from - # the environment. See proxy_from_env for details. - # - # In order to use a URI for the proxy you may need to do some extra work - # beyond URI parsing if the proxy requires a password: - # - # proxy = URI 'http://proxy.example' - # proxy.user = 'AzureDiamond' - # proxy.password = 'hunter2' - - def initialize name = nil, proxy = nil - @name = name - - @debug_output = nil - @proxy_uri = nil - @no_proxy = [] - @headers = {} - @override_headers = {} - @http_versions = {} - @keep_alive = 30 - @open_timeout = nil - @read_timeout = nil - @idle_timeout = 5 - @max_requests = nil - @socket_options = [] - - @socket_options << [Socket::IPPROTO_TCP, Socket::TCP_NODELAY, 1] if - Socket.const_defined? :TCP_NODELAY - - key = ['net_http_persistent', name].compact - @generation_key = [key, 'generations' ].join('_').intern - @ssl_generation_key = [key, 'ssl_generations'].join('_').intern - @request_key = [key, 'requests' ].join('_').intern - @timeout_key = [key, 'timeouts' ].join('_').intern - - @certificate = nil - @ca_file = nil - @private_key = nil - @ssl_version = nil - @verify_callback = nil - @verify_mode = nil - @cert_store = nil - - @generation = 0 # incremented when proxy URI changes - @ssl_generation = 0 # incremented when SSL session variables change - - if HAVE_OPENSSL then - @verify_mode = OpenSSL::SSL::VERIFY_PEER - @reuse_ssl_sessions = OpenSSL::SSL.const_defined? :Session - end - - @retry_change_requests = false - - @ruby_1 = RUBY_VERSION < '2' - @retried_on_ruby_2 = !@ruby_1 - - self.proxy = proxy if proxy - end - - ## - # Sets this client's OpenSSL::X509::Certificate - - def certificate= certificate - @certificate = certificate - - reconnect_ssl - end - - # For Net::HTTP parity - alias cert= certificate= - - ## - # Sets the SSL certificate authority file. - - def ca_file= file - @ca_file = file - - reconnect_ssl - end - - ## - # Overrides the default SSL certificate store used for verifying - # connections. - - def cert_store= store - @cert_store = store - - reconnect_ssl - end - - ## - # Finishes all connections on the given +thread+ that were created before - # the given +generation+ in the threads +generation_key+ list. - # - # See #shutdown for a bunch of scary warning about misusing this method. - - def cleanup(generation, thread = Thread.current, - generation_key = @generation_key) # :nodoc: - timeouts = thread[@timeout_key] - - (0...generation).each do |old_generation| - next unless thread[generation_key] - - conns = thread[generation_key].delete old_generation - - conns.each_value do |conn| - finish conn, thread - - timeouts.delete conn.object_id if timeouts - end if conns - end - end - - ## - # Creates a new connection for +uri+ - - def connection_for uri - Thread.current[@generation_key] ||= Hash.new { |h,k| h[k] = {} } - Thread.current[@ssl_generation_key] ||= Hash.new { |h,k| h[k] = {} } - Thread.current[@request_key] ||= Hash.new 0 - Thread.current[@timeout_key] ||= Hash.new EPOCH - - use_ssl = uri.scheme.downcase == 'https' - - if use_ssl then - raise Bundler::Persistent::Net::HTTP::Persistent::Error, 'OpenSSL is not available' unless - HAVE_OPENSSL - - ssl_generation = @ssl_generation - - ssl_cleanup ssl_generation - - connections = Thread.current[@ssl_generation_key][ssl_generation] - else - generation = @generation - - cleanup generation - - connections = Thread.current[@generation_key][generation] - end - - net_http_args = [uri.host, uri.port] - connection_id = net_http_args.join ':' - - if @proxy_uri and not proxy_bypass? uri.host, uri.port then - connection_id << @proxy_connection_id - net_http_args.concat @proxy_args - else - net_http_args.concat [nil, nil, nil, nil] - end - - connection = connections[connection_id] - - unless connection = connections[connection_id] then - connections[connection_id] = http_class.new(*net_http_args) - connection = connections[connection_id] - ssl connection if use_ssl - else - reset connection if expired? connection - end - - start connection unless connection.started? - - connection.read_timeout = @read_timeout if @read_timeout - connection.keep_alive_timeout = @idle_timeout if @idle_timeout && connection.respond_to?(:keep_alive_timeout=) - - connection - rescue Errno::ECONNREFUSED - address = connection.proxy_address || connection.address - port = connection.proxy_port || connection.port - - raise Error, "connection refused: #{address}:#{port}" - rescue Errno::EHOSTDOWN - address = connection.proxy_address || connection.address - port = connection.proxy_port || connection.port - - raise Error, "host down: #{address}:#{port}" - end - - ## - # Returns an error message containing the number of requests performed on - # this connection - - def error_message connection - requests = Thread.current[@request_key][connection.object_id] - 1 # fixup - last_use = Thread.current[@timeout_key][connection.object_id] - - age = Time.now - last_use - - "after #{requests} requests on #{connection.object_id}, " \ - "last used #{age} seconds ago" - end - - ## - # URI::escape wrapper - - def escape str - CGI.escape str if str - end - - ## - # URI::unescape wrapper - - def unescape str - CGI.unescape str if str - end - - - ## - # Returns true if the connection should be reset due to an idle timeout, or - # maximum request count, false otherwise. - - def expired? connection - requests = Thread.current[@request_key][connection.object_id] - return true if @max_requests && requests >= @max_requests - return false unless @idle_timeout - return true if @idle_timeout.zero? - - last_used = Thread.current[@timeout_key][connection.object_id] - - Time.now - last_used > @idle_timeout - end - - ## - # Starts the Net::HTTP +connection+ - - def start connection - connection.set_debug_output @debug_output if @debug_output - connection.open_timeout = @open_timeout if @open_timeout - - connection.start - - socket = connection.instance_variable_get :@socket - - if socket then # for fakeweb - @socket_options.each do |option| - socket.io.setsockopt(*option) - end - end - end - - ## - # Finishes the Net::HTTP +connection+ - - def finish connection, thread = Thread.current - if requests = thread[@request_key] then - requests.delete connection.object_id - end - - connection.finish - rescue IOError - end - - def http_class # :nodoc: - if RUBY_VERSION > '2.0' then - Net::HTTP - elsif [:Artifice, :FakeWeb, :WebMock].any? { |klass| - Object.const_defined?(klass) - } or not @reuse_ssl_sessions then - Net::HTTP - else - Bundler::Persistent::Net::HTTP::Persistent::SSLReuse - end - end - - ## - # Returns the HTTP protocol version for +uri+ - - def http_version uri - @http_versions["#{uri.host}:#{uri.port}"] - end - - ## - # Is +req+ idempotent according to RFC 2616? - - def idempotent? req - case req - when Net::HTTP::Delete, Net::HTTP::Get, Net::HTTP::Head, - Net::HTTP::Options, Net::HTTP::Put, Net::HTTP::Trace then - true - end - end - - ## - # Is the request +req+ idempotent or is retry_change_requests allowed. - # - # If +retried_on_ruby_2+ is true, true will be returned if we are on ruby, - # retry_change_requests is allowed and the request is not idempotent. - - def can_retry? req, retried_on_ruby_2 = false - return @retry_change_requests && !idempotent?(req) if retried_on_ruby_2 - - @retry_change_requests || idempotent?(req) - end - - if RUBY_VERSION > '1.9' then - ## - # Workaround for missing Net::HTTPHeader#connection_close? on Ruby 1.8 - - def connection_close? header - header.connection_close? - end - - ## - # Workaround for missing Net::HTTPHeader#connection_keep_alive? on Ruby 1.8 - - def connection_keep_alive? header - header.connection_keep_alive? - end - else - ## - # Workaround for missing Net::HTTPRequest#connection_close? on Ruby 1.8 - - def connection_close? header - header['connection'] =~ /close/ or header['proxy-connection'] =~ /close/ - end - - ## - # Workaround for missing Net::HTTPRequest#connection_keep_alive? on Ruby - # 1.8 - - def connection_keep_alive? header - header['connection'] =~ /keep-alive/ or - header['proxy-connection'] =~ /keep-alive/ - end - end - - ## - # Deprecated in favor of #expired? - - def max_age # :nodoc: - return Time.now + 1 unless @idle_timeout - - Time.now - @idle_timeout - end - - ## - # Adds "http://" to the String +uri+ if it is missing. - - def normalize_uri uri - (uri =~ /^https?:/) ? uri : "http://#{uri}" - end - - ## - # Pipelines +requests+ to the HTTP server at +uri+ yielding responses if a - # block is given. Returns all responses received. - # - # See - # Net::HTTP::Pipeline[http://docs.seattlerb.org/net-http-pipeline/Net/HTTP/Pipeline.html] - # for further details. - # - # Only if net-http-pipeline was required before - # net-http-persistent #pipeline will be present. - - def pipeline uri, requests, &block # :yields: responses - connection = connection_for uri - - connection.pipeline requests, &block - end - - ## - # Sets this client's SSL private key - - def private_key= key - @private_key = key - - reconnect_ssl - end - - # For Net::HTTP parity - alias key= private_key= - - ## - # Sets the proxy server. The +proxy+ may be the URI of the proxy server, - # the symbol +:ENV+ which will read the proxy from the environment or nil to - # disable use of a proxy. See #proxy_from_env for details on setting the - # proxy from the environment. - # - # If the proxy URI is set after requests have been made, the next request - # will shut-down and re-open all connections. - # - # The +no_proxy+ query parameter can be used to specify hosts which shouldn't - # be reached via proxy; if set it should be a comma separated list of - # hostname suffixes, optionally with +:port+ appended, for example - # example.com,some.host:8080. - - def proxy= proxy - @proxy_uri = case proxy - when :ENV then proxy_from_env - when URI::HTTP then proxy - when nil then # ignore - else raise ArgumentError, 'proxy must be :ENV or a URI::HTTP' - end - - @no_proxy.clear - - if @proxy_uri then - @proxy_args = [ - @proxy_uri.host, - @proxy_uri.port, - unescape(@proxy_uri.user), - unescape(@proxy_uri.password), - ] - - @proxy_connection_id = [nil, *@proxy_args].join ':' - - if @proxy_uri.query then - @no_proxy = CGI.parse(@proxy_uri.query)['no_proxy'].join(',').downcase.split(',').map { |x| x.strip }.reject { |x| x.empty? } - end - end - - reconnect - reconnect_ssl - end - - ## - # Creates a URI for an HTTP proxy server from ENV variables. - # - # If +HTTP_PROXY+ is set a proxy will be returned. - # - # If +HTTP_PROXY_USER+ or +HTTP_PROXY_PASS+ are set the URI is given the - # indicated user and password unless HTTP_PROXY contains either of these in - # the URI. - # - # The +NO_PROXY+ ENV variable can be used to specify hosts which shouldn't - # be reached via proxy; if set it should be a comma separated list of - # hostname suffixes, optionally with +:port+ appended, for example - # example.com,some.host:8080. When set to * no proxy will - # be returned. - # - # For Windows users, lowercase ENV variables are preferred over uppercase ENV - # variables. - - def proxy_from_env - env_proxy = ENV['http_proxy'] || ENV['HTTP_PROXY'] - - return nil if env_proxy.nil? or env_proxy.empty? - - uri = URI normalize_uri env_proxy - - env_no_proxy = ENV['no_proxy'] || ENV['NO_PROXY'] - - # '*' is special case for always bypass - return nil if env_no_proxy == '*' - - if env_no_proxy then - uri.query = "no_proxy=#{escape(env_no_proxy)}" - end - - unless uri.user or uri.password then - uri.user = escape ENV['http_proxy_user'] || ENV['HTTP_PROXY_USER'] - uri.password = escape ENV['http_proxy_pass'] || ENV['HTTP_PROXY_PASS'] - end - - uri - end - - ## - # Returns true when proxy should by bypassed for host. - - def proxy_bypass? host, port - host = host.downcase - host_port = [host, port].join ':' - - @no_proxy.each do |name| - return true if host[-name.length, name.length] == name or - host_port[-name.length, name.length] == name - end - - false - end - - ## - # Forces reconnection of HTTP connections. - - def reconnect - @generation += 1 - end - - ## - # Forces reconnection of SSL connections. - - def reconnect_ssl - @ssl_generation += 1 - end - - ## - # Finishes then restarts the Net::HTTP +connection+ - - def reset connection - Thread.current[@request_key].delete connection.object_id - Thread.current[@timeout_key].delete connection.object_id - - finish connection - - start connection - rescue Errno::ECONNREFUSED - e = Error.new "connection refused: #{connection.address}:#{connection.port}" - e.set_backtrace $@ - raise e - rescue Errno::EHOSTDOWN - e = Error.new "host down: #{connection.address}:#{connection.port}" - e.set_backtrace $@ - raise e - end - - ## - # Makes a request on +uri+. If +req+ is nil a Net::HTTP::Get is performed - # against +uri+. - # - # If a block is passed #request behaves like Net::HTTP#request (the body of - # the response will not have been read). - # - # +req+ must be a Net::HTTPRequest subclass (see Net::HTTP for a list). - # - # If there is an error and the request is idempotent according to RFC 2616 - # it will be retried automatically. - - def request uri, req = nil, &block - retried = false - bad_response = false - - req = request_setup req || uri - - connection = connection_for uri - connection_id = connection.object_id - - begin - Thread.current[@request_key][connection_id] += 1 - response = connection.request req, &block - - if connection_close?(req) or - (response.http_version <= '1.0' and - not connection_keep_alive?(response)) or - connection_close?(response) then - connection.finish - end - rescue Net::HTTPBadResponse => e - message = error_message connection - - finish connection - - raise Error, "too many bad responses #{message}" if - bad_response or not can_retry? req - - bad_response = true - retry - rescue *RETRIED_EXCEPTIONS => e # retried on ruby 2 - request_failed e, req, connection if - retried or not can_retry? req, @retried_on_ruby_2 - - reset connection - - retried = true - retry - rescue Errno::EINVAL, Errno::ETIMEDOUT => e # not retried on ruby 2 - request_failed e, req, connection if retried or not can_retry? req - - reset connection - - retried = true - retry - rescue Exception => e - finish connection - - raise - ensure - Thread.current[@timeout_key][connection_id] = Time.now - end - - @http_versions["#{uri.host}:#{uri.port}"] ||= response.http_version - - response - end - - ## - # Raises an Error for +exception+ which resulted from attempting the request - # +req+ on the +connection+. - # - # Finishes the +connection+. - - def request_failed exception, req, connection # :nodoc: - due_to = "(due to #{exception.message} - #{exception.class})" - message = "too many connection resets #{due_to} #{error_message connection}" - - finish connection - - - raise Error, message, exception.backtrace - end - - ## - # Creates a GET request if +req_or_uri+ is a URI and adds headers to the - # request. - # - # Returns the request. - - def request_setup req_or_uri # :nodoc: - req = if URI === req_or_uri then - Net::HTTP::Get.new req_or_uri.request_uri - else - req_or_uri - end - - @headers.each do |pair| - req.add_field(*pair) - end - - @override_headers.each do |name, value| - req[name] = value - end - - unless req['Connection'] then - req.add_field 'Connection', 'keep-alive' - req.add_field 'Keep-Alive', @keep_alive - end - - req - end - - ## - # Shuts down all connections for +thread+. - # - # Uses the current thread by default. - # - # If you've used Bundler::Persistent::Net::HTTP::Persistent across multiple threads you should - # call this in each thread when you're done making HTTP requests. - # - # *NOTE*: Calling shutdown for another thread can be dangerous! - # - # If the thread is still using the connection it may cause an error! It is - # best to call #shutdown in the thread at the appropriate time instead! - - def shutdown thread = Thread.current - generation = reconnect - cleanup generation, thread, @generation_key - - ssl_generation = reconnect_ssl - cleanup ssl_generation, thread, @ssl_generation_key - - thread[@request_key] = nil - thread[@timeout_key] = nil - end - - ## - # Shuts down all connections in all threads - # - # *NOTE*: THIS METHOD IS VERY DANGEROUS! - # - # Do not call this method if other threads are still using their - # connections! Call #shutdown at the appropriate time instead! - # - # Use this method only as a last resort! - - def shutdown_in_all_threads - Thread.list.each do |thread| - shutdown thread - end - - nil - end - - ## - # Enables SSL on +connection+ - - def ssl connection - connection.use_ssl = true - - connection.ssl_version = @ssl_version if @ssl_version - - connection.verify_mode = @verify_mode - - if OpenSSL::SSL::VERIFY_PEER == OpenSSL::SSL::VERIFY_NONE and - not Object.const_defined?(:I_KNOW_THAT_OPENSSL_VERIFY_PEER_EQUALS_VERIFY_NONE_IS_WRONG) then - warn <<-WARNING - !!!SECURITY WARNING!!! - -The SSL HTTP connection to: - - #{connection.address}:#{connection.port} - - !!!MAY NOT BE VERIFIED!!! - -On your platform your OpenSSL implementation is broken. - -There is no difference between the values of VERIFY_NONE and VERIFY_PEER. - -This means that attempting to verify the security of SSL connections may not -work. This exposes you to man-in-the-middle exploits, snooping on the -contents of your connection and other dangers to the security of your data. - -To disable this warning define the following constant at top-level in your -application: - - I_KNOW_THAT_OPENSSL_VERIFY_PEER_EQUALS_VERIFY_NONE_IS_WRONG = nil - - WARNING - end - - if @ca_file then - connection.ca_file = @ca_file - connection.verify_mode = OpenSSL::SSL::VERIFY_PEER - connection.verify_callback = @verify_callback if @verify_callback - end - - if @certificate and @private_key then - connection.cert = @certificate - connection.key = @private_key - end - - connection.cert_store = if @cert_store then - @cert_store - else - store = OpenSSL::X509::Store.new - store.set_default_paths - store - end - end - - ## - # Finishes all connections that existed before the given SSL parameter - # +generation+. - - def ssl_cleanup generation # :nodoc: - cleanup generation, Thread.current, @ssl_generation_key - end - - ## - # SSL version to use - - def ssl_version= ssl_version - @ssl_version = ssl_version - - reconnect_ssl - end if RUBY_VERSION > '1.9' - - ## - # Sets the HTTPS verify mode. Defaults to OpenSSL::SSL::VERIFY_PEER. - # - # Setting this to VERIFY_NONE is a VERY BAD IDEA and should NEVER be used. - # Securely transfer the correct certificate and update the default - # certificate store or set the ca file instead. - - def verify_mode= verify_mode - @verify_mode = verify_mode - - reconnect_ssl - end - - ## - # SSL verification callback. - - def verify_callback= callback - @verify_callback = callback - - reconnect_ssl - end - -end - -require 'bundler/vendor/net-http-persistent/lib/net/http/persistent/ssl_reuse' - diff --git a/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/ssl_reuse.rb b/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/ssl_reuse.rb deleted file mode 100644 index 1b6b789f6d..0000000000 --- a/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/ssl_reuse.rb +++ /dev/null @@ -1,129 +0,0 @@ -## -# This Net::HTTP subclass adds SSL session reuse and Server Name Indication -# (SNI) RFC 3546. -# -# DO NOT DEPEND UPON THIS CLASS -# -# This class is an implementation detail and is subject to change or removal -# at any time. - -class Bundler::Persistent::Net::HTTP::Persistent::SSLReuse < Net::HTTP - - @is_proxy_class = false - @proxy_addr = nil - @proxy_port = nil - @proxy_user = nil - @proxy_pass = nil - - def initialize address, port = nil # :nodoc: - super - - @ssl_session = nil - end - - ## - # From ruby trunk r33086 including http://redmine.ruby-lang.org/issues/5341 - - def connect # :nodoc: - D "opening connection to #{conn_address()}..." - s = timeout(@open_timeout) { TCPSocket.open(conn_address(), conn_port()) } - D "opened" - if use_ssl? - ssl_parameters = Hash.new - iv_list = instance_variables - SSL_ATTRIBUTES.each do |name| - ivname = "@#{name}".intern - if iv_list.include?(ivname) and - value = instance_variable_get(ivname) - ssl_parameters[name] = value - end - end - unless @ssl_context then - @ssl_context = OpenSSL::SSL::SSLContext.new - @ssl_context.set_params(ssl_parameters) - end - s = OpenSSL::SSL::SSLSocket.new(s, @ssl_context) - s.sync_close = true - end - @socket = Net::BufferedIO.new(s) - @socket.read_timeout = @read_timeout - @socket.continue_timeout = @continue_timeout if - @socket.respond_to? :continue_timeout - @socket.debug_output = @debug_output - if use_ssl? - begin - if proxy? - @socket.writeline sprintf('CONNECT %s:%s HTTP/%s', - @address, @port, HTTPVersion) - @socket.writeline "Host: #{@address}:#{@port}" - if proxy_user - credential = ["#{proxy_user}:#{proxy_pass}"].pack('m') - credential.delete!("\r\n") - @socket.writeline "Proxy-Authorization: Basic #{credential}" - end - @socket.writeline '' - Net::HTTPResponse.read_new(@socket).value - end - s.session = @ssl_session if @ssl_session - # Server Name Indication (SNI) RFC 3546 - s.hostname = @address if s.respond_to? :hostname= - timeout(@open_timeout) { s.connect } - if @ssl_context.verify_mode != OpenSSL::SSL::VERIFY_NONE - s.post_connection_check(@address) - end - @ssl_session = s.session - rescue => exception - D "Conn close because of connect error #{exception}" - @socket.close if @socket and not @socket.closed? - raise exception - end - end - on_connect - end if RUBY_VERSION > '1.9' - - ## - # From ruby_1_8_7 branch r29865 including a modified - # http://redmine.ruby-lang.org/issues/5341 - - def connect # :nodoc: - D "opening connection to #{conn_address()}..." - s = timeout(@open_timeout) { TCPSocket.open(conn_address(), conn_port()) } - D "opened" - if use_ssl? - unless @ssl_context.verify_mode - warn "warning: peer certificate won't be verified in this SSL session" - @ssl_context.verify_mode = OpenSSL::SSL::VERIFY_NONE - end - s = OpenSSL::SSL::SSLSocket.new(s, @ssl_context) - s.sync_close = true - end - @socket = Net::BufferedIO.new(s) - @socket.read_timeout = @read_timeout - @socket.debug_output = @debug_output - if use_ssl? - if proxy? - @socket.writeline sprintf('CONNECT %s:%s HTTP/%s', - @address, @port, HTTPVersion) - @socket.writeline "Host: #{@address}:#{@port}" - if proxy_user - credential = ["#{proxy_user}:#{proxy_pass}"].pack('m') - credential.delete!("\r\n") - @socket.writeline "Proxy-Authorization: Basic #{credential}" - end - @socket.writeline '' - Net::HTTPResponse.read_new(@socket).value - end - s.session = @ssl_session if @ssl_session - s.connect - if @ssl_context.verify_mode != OpenSSL::SSL::VERIFY_NONE - s.post_connection_check(@address) - end - @ssl_session = s.session - end - on_connect - end if RUBY_VERSION < '1.9' - - private :connect - -end - diff --git a/lib/bundler/vendor/thor/lib/thor.rb b/lib/bundler/vendor/thor/lib/thor.rb deleted file mode 100644 index 999e8b7e61..0000000000 --- a/lib/bundler/vendor/thor/lib/thor.rb +++ /dev/null @@ -1,509 +0,0 @@ -require "set" -require "bundler/vendor/thor/lib/thor/base" - -class Bundler::Thor - class << self - # Allows for custom "Command" package naming. - # - # === Parameters - # name - # options - # - def package_name(name, _ = {}) - @package_name = name.nil? || name == "" ? nil : name - end - - # Sets the default command when thor is executed without an explicit command to be called. - # - # ==== Parameters - # meth:: name of the default command - # - def default_command(meth = nil) - if meth - @default_command = meth == :none ? "help" : meth.to_s - else - @default_command ||= from_superclass(:default_command, "help") - end - end - alias_method :default_task, :default_command - - # Registers another Bundler::Thor subclass as a command. - # - # ==== Parameters - # klass:: Bundler::Thor subclass to register - # command:: Subcommand name to use - # usage:: Short usage for the subcommand - # description:: Description for the subcommand - def register(klass, subcommand_name, usage, description, options = {}) - if klass <= Bundler::Thor::Group - desc usage, description, options - define_method(subcommand_name) { |*args| invoke(klass, args) } - else - desc usage, description, options - subcommand subcommand_name, klass - end - end - - # Defines the usage and the description of the next command. - # - # ==== Parameters - # usage - # description - # options - # - def desc(usage, description, options = {}) - if options[:for] - command = find_and_refresh_command(options[:for]) - command.usage = usage if usage - command.description = description if description - else - @usage = usage - @desc = description - @hide = options[:hide] || false - end - end - - # Defines the long description of the next command. - # - # ==== Parameters - # long description - # - def long_desc(long_description, options = {}) - if options[:for] - command = find_and_refresh_command(options[:for]) - command.long_description = long_description if long_description - else - @long_desc = long_description - end - end - - # Maps an input to a command. If you define: - # - # map "-T" => "list" - # - # Running: - # - # thor -T - # - # Will invoke the list command. - # - # ==== Parameters - # Hash[String|Array => Symbol]:: Maps the string or the strings in the array to the given command. - # - def map(mappings = nil) - @map ||= from_superclass(:map, {}) - - if mappings - mappings.each do |key, value| - if key.respond_to?(:each) - key.each { |subkey| @map[subkey] = value } - else - @map[key] = value - end - end - end - - @map - end - - # Declares the options for the next command to be declared. - # - # ==== Parameters - # Hash[Symbol => Object]:: The hash key is the name of the option and the value - # is the type of the option. Can be :string, :array, :hash, :boolean, :numeric - # or :required (string). If you give a value, the type of the value is used. - # - def method_options(options = nil) - @method_options ||= {} - build_options(options, @method_options) if options - @method_options - end - - alias_method :options, :method_options - - # Adds an option to the set of method options. If :for is given as option, - # it allows you to change the options from a previous defined command. - # - # def previous_command - # # magic - # end - # - # method_option :foo => :bar, :for => :previous_command - # - # def next_command - # # magic - # end - # - # ==== Parameters - # name:: The name of the argument. - # options:: Described below. - # - # ==== Options - # :desc - Description for the argument. - # :required - If the argument is required or not. - # :default - Default value for this argument. It cannot be required and have default values. - # :aliases - Aliases for this option. - # :type - The type of the argument, can be :string, :hash, :array, :numeric or :boolean. - # :banner - String to show on usage notes. - # :hide - If you want to hide this option from the help. - # - def method_option(name, options = {}) - scope = if options[:for] - find_and_refresh_command(options[:for]).options - else - method_options - end - - build_option(name, options, scope) - end - alias_method :option, :method_option - - # Prints help information for the given command. - # - # ==== Parameters - # shell - # command_name - # - def command_help(shell, command_name) - meth = normalize_command_name(command_name) - command = all_commands[meth] - handle_no_command_error(meth) unless command - - shell.say "Usage:" - shell.say " #{banner(command)}" - shell.say - class_options_help(shell, nil => command.options.values) - if command.long_description - shell.say "Description:" - shell.print_wrapped(command.long_description, :indent => 2) - else - shell.say command.description - end - end - alias_method :task_help, :command_help - - # Prints help information for this class. - # - # ==== Parameters - # shell - # - def help(shell, subcommand = false) - list = printable_commands(true, subcommand) - Bundler::Thor::Util.thor_classes_in(self).each do |klass| - list += klass.printable_commands(false) - end - list.sort! { |a, b| a[0] <=> b[0] } - - if defined?(@package_name) && @package_name - shell.say "#{@package_name} commands:" - else - shell.say "Commands:" - end - - shell.print_table(list, :indent => 2, :truncate => true) - shell.say - class_options_help(shell) - end - - # Returns commands ready to be printed. - def printable_commands(all = true, subcommand = false) - (all ? all_commands : commands).map do |_, command| - next if command.hidden? - item = [] - item << banner(command, false, subcommand) - item << (command.description ? "# #{command.description.gsub(/\s+/m, ' ')}" : "") - item - end.compact - end - alias_method :printable_tasks, :printable_commands - - def subcommands - @subcommands ||= from_superclass(:subcommands, []) - end - alias_method :subtasks, :subcommands - - def subcommand_classes - @subcommand_classes ||= {} - end - - def subcommand(subcommand, subcommand_class) - subcommands << subcommand.to_s - subcommand_class.subcommand_help subcommand - subcommand_classes[subcommand.to_s] = subcommand_class - - define_method(subcommand) do |*args| - args, opts = Bundler::Thor::Arguments.split(args) - invoke_args = [args, opts, {:invoked_via_subcommand => true, :class_options => options}] - invoke_args.unshift "help" if opts.delete("--help") || opts.delete("-h") - invoke subcommand_class, *invoke_args - end - subcommand_class.commands.each do |_meth, command| - command.ancestor_name = subcommand - end - end - alias_method :subtask, :subcommand - - # Extend check unknown options to accept a hash of conditions. - # - # === Parameters - # options: A hash containing :only and/or :except keys - def check_unknown_options!(options = {}) - @check_unknown_options ||= {} - options.each do |key, value| - if value - @check_unknown_options[key] = Array(value) - else - @check_unknown_options.delete(key) - end - end - @check_unknown_options - end - - # Overwrite check_unknown_options? to take subcommands and options into account. - def check_unknown_options?(config) #:nodoc: - options = check_unknown_options - return false unless options - - command = config[:current_command] - return true unless command - - name = command.name - - if subcommands.include?(name) - false - elsif options[:except] - !options[:except].include?(name.to_sym) - elsif options[:only] - options[:only].include?(name.to_sym) - else - true - end - end - - # Stop parsing of options as soon as an unknown option or a regular - # argument is encountered. All remaining arguments are passed to the command. - # This is useful if you have a command that can receive arbitrary additional - # options, and where those additional options should not be handled by - # Bundler::Thor. - # - # ==== Example - # - # To better understand how this is useful, let's consider a command that calls - # an external command. A user may want to pass arbitrary options and - # arguments to that command. The command itself also accepts some options, - # which should be handled by Bundler::Thor. - # - # class_option "verbose", :type => :boolean - # stop_on_unknown_option! :exec - # check_unknown_options! :except => :exec - # - # desc "exec", "Run a shell command" - # def exec(*args) - # puts "diagnostic output" if options[:verbose] - # Kernel.exec(*args) - # end - # - # Here +exec+ can be called with +--verbose+ to get diagnostic output, - # e.g.: - # - # $ thor exec --verbose echo foo - # diagnostic output - # foo - # - # But if +--verbose+ is given after +echo+, it is passed to +echo+ instead: - # - # $ thor exec echo --verbose foo - # --verbose foo - # - # ==== Parameters - # Symbol ...:: A list of commands that should be affected. - def stop_on_unknown_option!(*command_names) - stop_on_unknown_option.merge(command_names) - end - - def stop_on_unknown_option?(command) #:nodoc: - command && stop_on_unknown_option.include?(command.name.to_sym) - end - - # Disable the check for required options for the given commands. - # This is useful if you have a command that does not need the required options - # to work, like help. - # - # ==== Parameters - # Symbol ...:: A list of commands that should be affected. - def disable_required_check!(*command_names) - disable_required_check.merge(command_names) - end - - def disable_required_check?(command) #:nodoc: - command && disable_required_check.include?(command.name.to_sym) - end - - protected - - def stop_on_unknown_option #:nodoc: - @stop_on_unknown_option ||= Set.new - end - - # help command has the required check disabled by default. - def disable_required_check #:nodoc: - @disable_required_check ||= Set.new([:help]) - end - - # The method responsible for dispatching given the args. - def dispatch(meth, given_args, given_opts, config) #:nodoc: # rubocop:disable MethodLength - meth ||= retrieve_command_name(given_args) - command = all_commands[normalize_command_name(meth)] - - if !command && config[:invoked_via_subcommand] - # We're a subcommand and our first argument didn't match any of our - # commands. So we put it back and call our default command. - given_args.unshift(meth) - command = all_commands[normalize_command_name(default_command)] - end - - if command - args, opts = Bundler::Thor::Options.split(given_args) - if stop_on_unknown_option?(command) && !args.empty? - # given_args starts with a non-option, so we treat everything as - # ordinary arguments - args.concat opts - opts.clear - end - else - args = given_args - opts = nil - command = dynamic_command_class.new(meth) - end - - opts = given_opts || opts || [] - config[:current_command] = command - config[:command_options] = command.options - - instance = new(args, opts, config) - yield instance if block_given? - args = instance.args - trailing = args[Range.new(arguments.size, -1)] - instance.invoke_command(command, trailing || []) - end - - # The banner for this class. You can customize it if you are invoking the - # thor class by another ways which is not the Bundler::Thor::Runner. It receives - # the command that is going to be invoked and a boolean which indicates if - # the namespace should be displayed as arguments. - # - def banner(command, namespace = nil, subcommand = false) - "#{basename} #{command.formatted_usage(self, $thor_runner, subcommand)}" - end - - def baseclass #:nodoc: - Bundler::Thor - end - - def dynamic_command_class #:nodoc: - Bundler::Thor::DynamicCommand - end - - def create_command(meth) #:nodoc: - @usage ||= nil - @desc ||= nil - @long_desc ||= nil - @hide ||= nil - - if @usage && @desc - base_class = @hide ? Bundler::Thor::HiddenCommand : Bundler::Thor::Command - commands[meth] = base_class.new(meth, @desc, @long_desc, @usage, method_options) - @usage, @desc, @long_desc, @method_options, @hide = nil - true - elsif all_commands[meth] || meth == "method_missing" - true - else - puts "[WARNING] Attempted to create command #{meth.inspect} without usage or description. " \ - "Call desc if you want this method to be available as command or declare it inside a " \ - "no_commands{} block. Invoked from #{caller[1].inspect}." - false - end - end - alias_method :create_task, :create_command - - def initialize_added #:nodoc: - class_options.merge!(method_options) - @method_options = nil - end - - # Retrieve the command name from given args. - def retrieve_command_name(args) #:nodoc: - meth = args.first.to_s unless args.empty? - args.shift if meth && (map[meth] || meth !~ /^\-/) - end - alias_method :retrieve_task_name, :retrieve_command_name - - # receives a (possibly nil) command name and returns a name that is in - # the commands hash. In addition to normalizing aliases, this logic - # will determine if a shortened command is an unambiguous substring of - # a command or alias. - # - # +normalize_command_name+ also converts names like +animal-prison+ - # into +animal_prison+. - def normalize_command_name(meth) #:nodoc: - return default_command.to_s.tr("-", "_") unless meth - - possibilities = find_command_possibilities(meth) - raise AmbiguousTaskError, "Ambiguous command #{meth} matches [#{possibilities.join(', ')}]" if possibilities.size > 1 - - if possibilities.empty? - meth ||= default_command - elsif map[meth] - meth = map[meth] - else - meth = possibilities.first - end - - meth.to_s.tr("-", "_") # treat foo-bar as foo_bar - end - alias_method :normalize_task_name, :normalize_command_name - - # this is the logic that takes the command name passed in by the user - # and determines whether it is an unambiguous substrings of a command or - # alias name. - def find_command_possibilities(meth) - len = meth.to_s.length - possibilities = all_commands.merge(map).keys.select { |n| meth == n[0, len] }.sort - unique_possibilities = possibilities.map { |k| map[k] || k }.uniq - - if possibilities.include?(meth) - [meth] - elsif unique_possibilities.size == 1 - unique_possibilities - else - possibilities - end - end - alias_method :find_task_possibilities, :find_command_possibilities - - def subcommand_help(cmd) - desc "help [COMMAND]", "Describe subcommands or one specific subcommand" - class_eval " - def help(command = nil, subcommand = true); super; end -" - end - alias_method :subtask_help, :subcommand_help - end - - include Bundler::Thor::Base - - map HELP_MAPPINGS => :help - - desc "help [COMMAND]", "Describe available commands or one specific command" - def help(command = nil, subcommand = false) - if command - if self.class.subcommands.include? command - self.class.subcommand_classes[command].help(shell, true) - else - self.class.command_help(shell, command) - end - else - self.class.help(shell, subcommand) - end - end -end diff --git a/lib/bundler/vendor/thor/lib/thor/actions.rb b/lib/bundler/vendor/thor/lib/thor/actions.rb deleted file mode 100644 index e6698572a9..0000000000 --- a/lib/bundler/vendor/thor/lib/thor/actions.rb +++ /dev/null @@ -1,321 +0,0 @@ -require "uri" -require "bundler/vendor/thor/lib/thor/core_ext/io_binary_read" -require "bundler/vendor/thor/lib/thor/actions/create_file" -require "bundler/vendor/thor/lib/thor/actions/create_link" -require "bundler/vendor/thor/lib/thor/actions/directory" -require "bundler/vendor/thor/lib/thor/actions/empty_directory" -require "bundler/vendor/thor/lib/thor/actions/file_manipulation" -require "bundler/vendor/thor/lib/thor/actions/inject_into_file" - -class Bundler::Thor - module Actions - attr_accessor :behavior - - def self.included(base) #:nodoc: - base.extend ClassMethods - end - - module ClassMethods - # Hold source paths for one Bundler::Thor instance. source_paths_for_search is the - # method responsible to gather source_paths from this current class, - # inherited paths and the source root. - # - def source_paths - @_source_paths ||= [] - end - - # Stores and return the source root for this class - def source_root(path = nil) - @_source_root = path if path - @_source_root ||= nil - end - - # Returns the source paths in the following order: - # - # 1) This class source paths - # 2) Source root - # 3) Parents source paths - # - def source_paths_for_search - paths = [] - paths += source_paths - paths << source_root if source_root - paths += from_superclass(:source_paths, []) - paths - end - - # Add runtime options that help actions execution. - # - def add_runtime_options! - class_option :force, :type => :boolean, :aliases => "-f", :group => :runtime, - :desc => "Overwrite files that already exist" - - class_option :pretend, :type => :boolean, :aliases => "-p", :group => :runtime, - :desc => "Run but do not make any changes" - - class_option :quiet, :type => :boolean, :aliases => "-q", :group => :runtime, - :desc => "Suppress status output" - - class_option :skip, :type => :boolean, :aliases => "-s", :group => :runtime, - :desc => "Skip files that already exist" - end - end - - # Extends initializer to add more configuration options. - # - # ==== Configuration - # behavior:: The actions default behavior. Can be :invoke or :revoke. - # It also accepts :force, :skip and :pretend to set the behavior - # and the respective option. - # - # destination_root:: The root directory needed for some actions. - # - def initialize(args = [], options = {}, config = {}) - self.behavior = case config[:behavior].to_s - when "force", "skip" - _cleanup_options_and_set(options, config[:behavior]) - :invoke - when "revoke" - :revoke - else - :invoke - end - - super - self.destination_root = config[:destination_root] - end - - # Wraps an action object and call it accordingly to the thor class behavior. - # - def action(instance) #:nodoc: - if behavior == :revoke - instance.revoke! - else - instance.invoke! - end - end - - # Returns the root for this thor class (also aliased as destination root). - # - def destination_root - @destination_stack.last - end - - # Sets the root for this thor class. Relatives path are added to the - # directory where the script was invoked and expanded. - # - def destination_root=(root) - @destination_stack ||= [] - @destination_stack[0] = File.expand_path(root || "") - end - - # Returns the given path relative to the absolute root (ie, root where - # the script started). - # - def relative_to_original_destination_root(path, remove_dot = true) - path = path.dup - if path.gsub!(@destination_stack[0], ".") - remove_dot ? (path[2..-1] || "") : path - else - path - end - end - - # Holds source paths in instance so they can be manipulated. - # - def source_paths - @source_paths ||= self.class.source_paths_for_search - end - - # Receives a file or directory and search for it in the source paths. - # - def find_in_source_paths(file) - possible_files = [file, file + TEMPLATE_EXTNAME] - relative_root = relative_to_original_destination_root(destination_root, false) - - source_paths.each do |source| - possible_files.each do |f| - source_file = File.expand_path(f, File.join(source, relative_root)) - return source_file if File.exist?(source_file) - end - end - - message = "Could not find #{file.inspect} in any of your source paths. ".dup - - unless self.class.source_root - message << "Please invoke #{self.class.name}.source_root(PATH) with the PATH containing your templates. " - end - - message << if source_paths.empty? - "Currently you have no source paths." - else - "Your current source paths are: \n#{source_paths.join("\n")}" - end - - raise Error, message - end - - # Do something in the root or on a provided subfolder. If a relative path - # is given it's referenced from the current root. The full path is yielded - # to the block you provide. The path is set back to the previous path when - # the method exits. - # - # ==== Parameters - # dir:: the directory to move to. - # config:: give :verbose => true to log and use padding. - # - def inside(dir = "", config = {}, &block) - verbose = config.fetch(:verbose, false) - pretend = options[:pretend] - - say_status :inside, dir, verbose - shell.padding += 1 if verbose - @destination_stack.push File.expand_path(dir, destination_root) - - # If the directory doesnt exist and we're not pretending - if !File.exist?(destination_root) && !pretend - require "fileutils" - FileUtils.mkdir_p(destination_root) - end - - if pretend - # In pretend mode, just yield down to the block - block.arity == 1 ? yield(destination_root) : yield - else - require "fileutils" - FileUtils.cd(destination_root) { block.arity == 1 ? yield(destination_root) : yield } - end - - @destination_stack.pop - shell.padding -= 1 if verbose - end - - # Goes to the root and execute the given block. - # - def in_root - inside(@destination_stack.first) { yield } - end - - # Loads an external file and execute it in the instance binding. - # - # ==== Parameters - # path:: The path to the file to execute. Can be a web address or - # a relative path from the source root. - # - # ==== Examples - # - # apply "http://gist.github.com/103208" - # - # apply "recipes/jquery.rb" - # - def apply(path, config = {}) - verbose = config.fetch(:verbose, true) - is_uri = path =~ %r{^https?\://} - path = find_in_source_paths(path) unless is_uri - - say_status :apply, path, verbose - shell.padding += 1 if verbose - - contents = if is_uri - open(path, "Accept" => "application/x-thor-template", &:read) - else - open(path, &:read) - end - - instance_eval(contents, path) - shell.padding -= 1 if verbose - end - - # Executes a command returning the contents of the command. - # - # ==== Parameters - # command:: the command to be executed. - # config:: give :verbose => false to not log the status, :capture => true to hide to output. Specify :with - # to append an executable to command execution. - # - # ==== Example - # - # inside('vendor') do - # run('ln -s ~/edge rails') - # end - # - def run(command, config = {}) - return unless behavior == :invoke - - destination = relative_to_original_destination_root(destination_root, false) - desc = "#{command} from #{destination.inspect}" - - if config[:with] - desc = "#{File.basename(config[:with].to_s)} #{desc}" - command = "#{config[:with]} #{command}" - end - - say_status :run, desc, config.fetch(:verbose, true) - - unless options[:pretend] - config[:capture] ? `#{command}` : system(command.to_s) - end - end - - # Executes a ruby script (taking into account WIN32 platform quirks). - # - # ==== Parameters - # command:: the command to be executed. - # config:: give :verbose => false to not log the status. - # - def run_ruby_script(command, config = {}) - return unless behavior == :invoke - run command, config.merge(:with => Bundler::Thor::Util.ruby_command) - end - - # Run a thor command. A hash of options can be given and it's converted to - # switches. - # - # ==== Parameters - # command:: the command to be invoked - # args:: arguments to the command - # config:: give :verbose => false to not log the status, :capture => true to hide to output. - # Other options are given as parameter to Bundler::Thor. - # - # - # ==== Examples - # - # thor :install, "http://gist.github.com/103208" - # #=> thor install http://gist.github.com/103208 - # - # thor :list, :all => true, :substring => 'rails' - # #=> thor list --all --substring=rails - # - def thor(command, *args) - config = args.last.is_a?(Hash) ? args.pop : {} - verbose = config.key?(:verbose) ? config.delete(:verbose) : true - pretend = config.key?(:pretend) ? config.delete(:pretend) : false - capture = config.key?(:capture) ? config.delete(:capture) : false - - args.unshift(command) - args.push Bundler::Thor::Options.to_switches(config) - command = args.join(" ").strip - - run command, :with => :thor, :verbose => verbose, :pretend => pretend, :capture => capture - end - - protected - - # Allow current root to be shared between invocations. - # - def _shared_configuration #:nodoc: - super.merge!(:destination_root => destination_root) - end - - def _cleanup_options_and_set(options, key) #:nodoc: - case options - when Array - %w(--force -f --skip -s).each { |i| options.delete(i) } - options << "--#{key}" - when Hash - [:force, :skip, "force", "skip"].each { |i| options.delete(i) } - options.merge!(key => true) - end - end - end -end diff --git a/lib/bundler/vendor/thor/lib/thor/actions/create_file.rb b/lib/bundler/vendor/thor/lib/thor/actions/create_file.rb deleted file mode 100644 index 97d22d9bbd..0000000000 --- a/lib/bundler/vendor/thor/lib/thor/actions/create_file.rb +++ /dev/null @@ -1,104 +0,0 @@ -require "bundler/vendor/thor/lib/thor/actions/empty_directory" - -class Bundler::Thor - module Actions - # Create a new file relative to the destination root with the given data, - # which is the return value of a block or a data string. - # - # ==== Parameters - # destination:: the relative path to the destination root. - # data:: the data to append to the file. - # config:: give :verbose => false to not log the status. - # - # ==== Examples - # - # create_file "lib/fun_party.rb" do - # hostname = ask("What is the virtual hostname I should use?") - # "vhost.name = #{hostname}" - # end - # - # create_file "config/apache.conf", "your apache config" - # - def create_file(destination, *args, &block) - config = args.last.is_a?(Hash) ? args.pop : {} - data = args.first - action CreateFile.new(self, destination, block || data.to_s, config) - end - alias_method :add_file, :create_file - - # CreateFile is a subset of Template, which instead of rendering a file with - # ERB, it gets the content from the user. - # - class CreateFile < EmptyDirectory #:nodoc: - attr_reader :data - - def initialize(base, destination, data, config = {}) - @data = data - super(base, destination, config) - end - - # Checks if the content of the file at the destination is identical to the rendered result. - # - # ==== Returns - # Boolean:: true if it is identical, false otherwise. - # - def identical? - exists? && File.binread(destination) == render - end - - # Holds the content to be added to the file. - # - def render - @render ||= if data.is_a?(Proc) - data.call - else - data - end - end - - def invoke! - invoke_with_conflict_check do - require "fileutils" - FileUtils.mkdir_p(File.dirname(destination)) - File.open(destination, "wb") { |f| f.write render } - end - given_destination - end - - protected - - # Now on conflict we check if the file is identical or not. - # - def on_conflict_behavior(&block) - if identical? - say_status :identical, :blue - else - options = base.options.merge(config) - force_or_skip_or_conflict(options[:force], options[:skip], &block) - end - end - - # If force is true, run the action, otherwise check if it's not being - # skipped. If both are false, show the file_collision menu, if the menu - # returns true, force it, otherwise skip. - # - def force_or_skip_or_conflict(force, skip, &block) - if force - say_status :force, :yellow - yield unless pretend? - elsif skip - say_status :skip, :yellow - else - say_status :conflict, :red - force_or_skip_or_conflict(force_on_collision?, true, &block) - end - end - - # Shows the file collision menu to the user and gets the result. - # - def force_on_collision? - base.shell.file_collision(destination) { render } - end - end - end -end diff --git a/lib/bundler/vendor/thor/lib/thor/actions/create_link.rb b/lib/bundler/vendor/thor/lib/thor/actions/create_link.rb deleted file mode 100644 index 3a664401b4..0000000000 --- a/lib/bundler/vendor/thor/lib/thor/actions/create_link.rb +++ /dev/null @@ -1,60 +0,0 @@ -require "bundler/vendor/thor/lib/thor/actions/create_file" - -class Bundler::Thor - module Actions - # Create a new file relative to the destination root from the given source. - # - # ==== Parameters - # destination:: the relative path to the destination root. - # source:: the relative path to the source root. - # config:: give :verbose => false to not log the status. - # :: give :symbolic => false for hard link. - # - # ==== Examples - # - # create_link "config/apache.conf", "/etc/apache.conf" - # - def create_link(destination, *args) - config = args.last.is_a?(Hash) ? args.pop : {} - source = args.first - action CreateLink.new(self, destination, source, config) - end - alias_method :add_link, :create_link - - # CreateLink is a subset of CreateFile, which instead of taking a block of - # data, just takes a source string from the user. - # - class CreateLink < CreateFile #:nodoc: - attr_reader :data - - # Checks if the content of the file at the destination is identical to the rendered result. - # - # ==== Returns - # Boolean:: true if it is identical, false otherwise. - # - def identical? - exists? && File.identical?(render, destination) - end - - def invoke! - invoke_with_conflict_check do - require "fileutils" - FileUtils.mkdir_p(File.dirname(destination)) - # Create a symlink by default - config[:symbolic] = true if config[:symbolic].nil? - File.unlink(destination) if exists? - if config[:symbolic] - File.symlink(render, destination) - else - File.link(render, destination) - end - end - given_destination - end - - def exists? - super || File.symlink?(destination) - end - end - end -end diff --git a/lib/bundler/vendor/thor/lib/thor/actions/directory.rb b/lib/bundler/vendor/thor/lib/thor/actions/directory.rb deleted file mode 100644 index f555f7b7e0..0000000000 --- a/lib/bundler/vendor/thor/lib/thor/actions/directory.rb +++ /dev/null @@ -1,118 +0,0 @@ -require "bundler/vendor/thor/lib/thor/actions/empty_directory" - -class Bundler::Thor - module Actions - # Copies recursively the files from source directory to root directory. - # If any of the files finishes with .tt, it's considered to be a template - # and is placed in the destination without the extension .tt. If any - # empty directory is found, it's copied and all .empty_directory files are - # ignored. If any file name is wrapped within % signs, the text within - # the % signs will be executed as a method and replaced with the returned - # value. Let's suppose a doc directory with the following files: - # - # doc/ - # components/.empty_directory - # README - # rdoc.rb.tt - # %app_name%.rb - # - # When invoked as: - # - # directory "doc" - # - # It will create a doc directory in the destination with the following - # files (assuming that the `app_name` method returns the value "blog"): - # - # doc/ - # components/ - # README - # rdoc.rb - # blog.rb - # - # Encoded path note: Since Bundler::Thor internals use Object#respond_to? to check if it can - # expand %something%, this `something` should be a public method in the class calling - # #directory. If a method is private, Bundler::Thor stack raises PrivateMethodEncodedError. - # - # ==== Parameters - # source:: the relative path to the source root. - # destination:: the relative path to the destination root. - # config:: give :verbose => false to not log the status. - # If :recursive => false, does not look for paths recursively. - # If :mode => :preserve, preserve the file mode from the source. - # If :exclude_pattern => /regexp/, prevents copying files that match that regexp. - # - # ==== Examples - # - # directory "doc" - # directory "doc", "docs", :recursive => false - # - def directory(source, *args, &block) - config = args.last.is_a?(Hash) ? args.pop : {} - destination = args.first || source - action Directory.new(self, source, destination || source, config, &block) - end - - class Directory < EmptyDirectory #:nodoc: - attr_reader :source - - def initialize(base, source, destination = nil, config = {}, &block) - @source = File.expand_path(base.find_in_source_paths(source.to_s)) - @block = block - super(base, destination, {:recursive => true}.merge(config)) - end - - def invoke! - base.empty_directory given_destination, config - execute! - end - - def revoke! - execute! - end - - protected - - def execute! - lookup = Util.escape_globs(source) - lookup = config[:recursive] ? File.join(lookup, "**") : lookup - lookup = file_level_lookup(lookup) - - files(lookup).sort.each do |file_source| - next if File.directory?(file_source) - next if config[:exclude_pattern] && file_source.match(config[:exclude_pattern]) - file_destination = File.join(given_destination, file_source.gsub(source, ".")) - file_destination.gsub!("/./", "/") - - case file_source - when /\.empty_directory$/ - dirname = File.dirname(file_destination).gsub(%r{/\.$}, "") - next if dirname == given_destination - base.empty_directory(dirname, config) - when /#{TEMPLATE_EXTNAME}$/ - base.template(file_source, file_destination[0..-4], config, &@block) - else - base.copy_file(file_source, file_destination, config, &@block) - end - end - end - - if RUBY_VERSION < "2.0" - def file_level_lookup(previous_lookup) - File.join(previous_lookup, "{*,.[a-z]*}") - end - - def files(lookup) - Dir[lookup] - end - else - def file_level_lookup(previous_lookup) - File.join(previous_lookup, "*") - end - - def files(lookup) - Dir.glob(lookup, File::FNM_DOTMATCH) - end - end - end - end -end diff --git a/lib/bundler/vendor/thor/lib/thor/actions/empty_directory.rb b/lib/bundler/vendor/thor/lib/thor/actions/empty_directory.rb deleted file mode 100644 index 284d92c19a..0000000000 --- a/lib/bundler/vendor/thor/lib/thor/actions/empty_directory.rb +++ /dev/null @@ -1,143 +0,0 @@ -class Bundler::Thor - module Actions - # Creates an empty directory. - # - # ==== Parameters - # destination:: the relative path to the destination root. - # config:: give :verbose => false to not log the status. - # - # ==== Examples - # - # empty_directory "doc" - # - def empty_directory(destination, config = {}) - action EmptyDirectory.new(self, destination, config) - end - - # Class which holds create directory logic. This is the base class for - # other actions like create_file and directory. - # - # This implementation is based in Templater actions, created by Jonas Nicklas - # and Michael S. Klishin under MIT LICENSE. - # - class EmptyDirectory #:nodoc: - attr_reader :base, :destination, :given_destination, :relative_destination, :config - - # Initializes given the source and destination. - # - # ==== Parameters - # base:: A Bundler::Thor::Base instance - # source:: Relative path to the source of this file - # destination:: Relative path to the destination of this file - # config:: give :verbose => false to not log the status. - # - def initialize(base, destination, config = {}) - @base = base - @config = {:verbose => true}.merge(config) - self.destination = destination - end - - # Checks if the destination file already exists. - # - # ==== Returns - # Boolean:: true if the file exists, false otherwise. - # - def exists? - ::File.exist?(destination) - end - - def invoke! - invoke_with_conflict_check do - require "fileutils" - ::FileUtils.mkdir_p(destination) - end - end - - def revoke! - say_status :remove, :red - require "fileutils" - ::FileUtils.rm_rf(destination) if !pretend? && exists? - given_destination - end - - protected - - # Shortcut for pretend. - # - def pretend? - base.options[:pretend] - end - - # Sets the absolute destination value from a relative destination value. - # It also stores the given and relative destination. Let's suppose our - # script is being executed on "dest", it sets the destination root to - # "dest". The destination, given_destination and relative_destination - # are related in the following way: - # - # inside "bar" do - # empty_directory "baz" - # end - # - # destination #=> dest/bar/baz - # relative_destination #=> bar/baz - # given_destination #=> baz - # - def destination=(destination) - return unless destination - @given_destination = convert_encoded_instructions(destination.to_s) - @destination = ::File.expand_path(@given_destination, base.destination_root) - @relative_destination = base.relative_to_original_destination_root(@destination) - end - - # Filenames in the encoded form are converted. If you have a file: - # - # %file_name%.rb - # - # It calls #file_name from the base and replaces %-string with the - # return value (should be String) of #file_name: - # - # user.rb - # - # The method referenced can be either public or private. - # - def convert_encoded_instructions(filename) - filename.gsub(/%(.*?)%/) do |initial_string| - method = $1.strip - base.respond_to?(method, true) ? base.send(method) : initial_string - end - end - - # Receives a hash of options and just execute the block if some - # conditions are met. - # - def invoke_with_conflict_check(&block) - if exists? - on_conflict_behavior(&block) - else - yield unless pretend? - say_status :create, :green - end - - destination - rescue Errno::EISDIR, Errno::EEXIST - on_file_clash_behavior - end - - def on_file_clash_behavior - say_status :file_clash, :red - end - - # What to do when the destination file already exists. - # - def on_conflict_behavior - say_status :exist, :blue - end - - # Shortcut to say_status shell method. - # - def say_status(status, color) - base.shell.say_status status, relative_destination, color if config[:verbose] - end - end - end -end diff --git a/lib/bundler/vendor/thor/lib/thor/actions/file_manipulation.rb b/lib/bundler/vendor/thor/lib/thor/actions/file_manipulation.rb deleted file mode 100644 index 4c83bebc86..0000000000 --- a/lib/bundler/vendor/thor/lib/thor/actions/file_manipulation.rb +++ /dev/null @@ -1,364 +0,0 @@ -require "erb" - -class Bundler::Thor - module Actions - # Copies the file from the relative source to the relative destination. If - # the destination is not given it's assumed to be equal to the source. - # - # ==== Parameters - # source:: the relative path to the source root. - # destination:: the relative path to the destination root. - # config:: give :verbose => false to not log the status, and - # :mode => :preserve, to preserve the file mode from the source. - - # - # ==== Examples - # - # copy_file "README", "doc/README" - # - # copy_file "doc/README" - # - def copy_file(source, *args, &block) - config = args.last.is_a?(Hash) ? args.pop : {} - destination = args.first || source - source = File.expand_path(find_in_source_paths(source.to_s)) - - create_file destination, nil, config do - content = File.binread(source) - content = yield(content) if block - content - end - if config[:mode] == :preserve - mode = File.stat(source).mode - chmod(destination, mode, config) - end - end - - # Links the file from the relative source to the relative destination. If - # the destination is not given it's assumed to be equal to the source. - # - # ==== Parameters - # source:: the relative path to the source root. - # destination:: the relative path to the destination root. - # config:: give :verbose => false to not log the status. - # - # ==== Examples - # - # link_file "README", "doc/README" - # - # link_file "doc/README" - # - def link_file(source, *args) - config = args.last.is_a?(Hash) ? args.pop : {} - destination = args.first || source - source = File.expand_path(find_in_source_paths(source.to_s)) - - create_link destination, source, config - end - - # Gets the content at the given address and places it at the given relative - # destination. If a block is given instead of destination, the content of - # the url is yielded and used as location. - # - # ==== Parameters - # source:: the address of the given content. - # destination:: the relative path to the destination root. - # config:: give :verbose => false to not log the status. - # - # ==== Examples - # - # get "http://gist.github.com/103208", "doc/README" - # - # get "http://gist.github.com/103208" do |content| - # content.split("\n").first - # end - # - def get(source, *args, &block) - config = args.last.is_a?(Hash) ? args.pop : {} - destination = args.first - - if source =~ %r{^https?\://} - require "open-uri" - else - source = File.expand_path(find_in_source_paths(source.to_s)) - end - - render = open(source) { |input| input.binmode.read } - - destination ||= if block_given? - block.arity == 1 ? yield(render) : yield - else - File.basename(source) - end - - create_file destination, render, config - end - - # Gets an ERB template at the relative source, executes it and makes a copy - # at the relative destination. If the destination is not given it's assumed - # to be equal to the source removing .tt from the filename. - # - # ==== Parameters - # source:: the relative path to the source root. - # destination:: the relative path to the destination root. - # config:: give :verbose => false to not log the status. - # - # ==== Examples - # - # template "README", "doc/README" - # - # template "doc/README" - # - def template(source, *args, &block) - config = args.last.is_a?(Hash) ? args.pop : {} - destination = args.first || source.sub(/#{TEMPLATE_EXTNAME}$/, "") - - source = File.expand_path(find_in_source_paths(source.to_s)) - context = config.delete(:context) || instance_eval("binding") - - create_file destination, nil, config do - content = CapturableERB.new(::File.binread(source), nil, "-", "@output_buffer").tap do |erb| - erb.filename = source - end.result(context) - content = yield(content) if block - content - end - end - - # Changes the mode of the given file or directory. - # - # ==== Parameters - # mode:: the file mode - # path:: the name of the file to change mode - # config:: give :verbose => false to not log the status. - # - # ==== Example - # - # chmod "script/server", 0755 - # - def chmod(path, mode, config = {}) - return unless behavior == :invoke - path = File.expand_path(path, destination_root) - say_status :chmod, relative_to_original_destination_root(path), config.fetch(:verbose, true) - unless options[:pretend] - require "fileutils" - FileUtils.chmod_R(mode, path) - end - end - - # Prepend text to a file. Since it depends on insert_into_file, it's reversible. - # - # ==== Parameters - # path:: path of the file to be changed - # data:: the data to prepend to the file, can be also given as a block. - # config:: give :verbose => false to not log the status. - # - # ==== Example - # - # prepend_to_file 'config/environments/test.rb', 'config.gem "rspec"' - # - # prepend_to_file 'config/environments/test.rb' do - # 'config.gem "rspec"' - # end - # - def prepend_to_file(path, *args, &block) - config = args.last.is_a?(Hash) ? args.pop : {} - config[:after] = /\A/ - insert_into_file(path, *(args << config), &block) - end - alias_method :prepend_file, :prepend_to_file - - # Append text to a file. Since it depends on insert_into_file, it's reversible. - # - # ==== Parameters - # path:: path of the file to be changed - # data:: the data to append to the file, can be also given as a block. - # config:: give :verbose => false to not log the status. - # - # ==== Example - # - # append_to_file 'config/environments/test.rb', 'config.gem "rspec"' - # - # append_to_file 'config/environments/test.rb' do - # 'config.gem "rspec"' - # end - # - def append_to_file(path, *args, &block) - config = args.last.is_a?(Hash) ? args.pop : {} - config[:before] = /\z/ - insert_into_file(path, *(args << config), &block) - end - alias_method :append_file, :append_to_file - - # Injects text right after the class definition. Since it depends on - # insert_into_file, it's reversible. - # - # ==== Parameters - # path:: path of the file to be changed - # klass:: the class to be manipulated - # data:: the data to append to the class, can be also given as a block. - # config:: give :verbose => false to not log the status. - # - # ==== Examples - # - # inject_into_class "app/controllers/application_controller.rb", ApplicationController, " filter_parameter :password\n" - # - # inject_into_class "app/controllers/application_controller.rb", ApplicationController do - # " filter_parameter :password\n" - # end - # - def inject_into_class(path, klass, *args, &block) - config = args.last.is_a?(Hash) ? args.pop : {} - config[:after] = /class #{klass}\n|class #{klass} .*\n/ - insert_into_file(path, *(args << config), &block) - end - - # Injects text right after the module definition. Since it depends on - # insert_into_file, it's reversible. - # - # ==== Parameters - # path:: path of the file to be changed - # module_name:: the module to be manipulated - # data:: the data to append to the class, can be also given as a block. - # config:: give :verbose => false to not log the status. - # - # ==== Examples - # - # inject_into_module "app/helpers/application_helper.rb", ApplicationHelper, " def help; 'help'; end\n" - # - # inject_into_module "app/helpers/application_helper.rb", ApplicationHelper do - # " def help; 'help'; end\n" - # end - # - def inject_into_module(path, module_name, *args, &block) - config = args.last.is_a?(Hash) ? args.pop : {} - config[:after] = /module #{module_name}\n|module #{module_name} .*\n/ - insert_into_file(path, *(args << config), &block) - end - - # Run a regular expression replacement on a file. - # - # ==== Parameters - # path:: path of the file to be changed - # flag:: the regexp or string to be replaced - # replacement:: the replacement, can be also given as a block - # config:: give :verbose => false to not log the status. - # - # ==== Example - # - # gsub_file 'app/controllers/application_controller.rb', /#\s*(filter_parameter_logging :password)/, '\1' - # - # gsub_file 'README', /rake/, :green do |match| - # match << " no more. Use thor!" - # end - # - def gsub_file(path, flag, *args, &block) - return unless behavior == :invoke - config = args.last.is_a?(Hash) ? args.pop : {} - - path = File.expand_path(path, destination_root) - say_status :gsub, relative_to_original_destination_root(path), config.fetch(:verbose, true) - - unless options[:pretend] - content = File.binread(path) - content.gsub!(flag, *args, &block) - File.open(path, "wb") { |file| file.write(content) } - end - end - - # Uncomment all lines matching a given regex. It will leave the space - # which existed before the comment hash in tact but will remove any spacing - # between the comment hash and the beginning of the line. - # - # ==== Parameters - # path:: path of the file to be changed - # flag:: the regexp or string used to decide which lines to uncomment - # config:: give :verbose => false to not log the status. - # - # ==== Example - # - # uncomment_lines 'config/initializers/session_store.rb', /active_record/ - # - def uncomment_lines(path, flag, *args) - flag = flag.respond_to?(:source) ? flag.source : flag - - gsub_file(path, /^(\s*)#[[:blank:]]*(.*#{flag})/, '\1\2', *args) - end - - # Comment all lines matching a given regex. It will leave the space - # which existed before the beginning of the line in tact and will insert - # a single space after the comment hash. - # - # ==== Parameters - # path:: path of the file to be changed - # flag:: the regexp or string used to decide which lines to comment - # config:: give :verbose => false to not log the status. - # - # ==== Example - # - # comment_lines 'config/initializers/session_store.rb', /cookie_store/ - # - def comment_lines(path, flag, *args) - flag = flag.respond_to?(:source) ? flag.source : flag - - gsub_file(path, /^(\s*)([^#|\n]*#{flag})/, '\1# \2', *args) - end - - # Removes a file at the given location. - # - # ==== Parameters - # path:: path of the file to be changed - # config:: give :verbose => false to not log the status. - # - # ==== Example - # - # remove_file 'README' - # remove_file 'app/controllers/application_controller.rb' - # - def remove_file(path, config = {}) - return unless behavior == :invoke - path = File.expand_path(path, destination_root) - - say_status :remove, relative_to_original_destination_root(path), config.fetch(:verbose, true) - if !options[:pretend] && File.exist?(path) - require "fileutils" - ::FileUtils.rm_rf(path) - end - end - alias_method :remove_dir, :remove_file - - attr_accessor :output_buffer - private :output_buffer, :output_buffer= - - private - - def concat(string) - @output_buffer.concat(string) - end - - def capture(*args) - with_output_buffer { yield(*args) } - end - - def with_output_buffer(buf = "".dup) #:nodoc: - raise ArgumentError, "Buffer can not be a frozen object" if buf.frozen? - old_buffer = output_buffer - self.output_buffer = buf - yield - output_buffer - ensure - self.output_buffer = old_buffer - end - - # Bundler::Thor::Actions#capture depends on what kind of buffer is used in ERB. - # Thus CapturableERB fixes ERB to use String buffer. - class CapturableERB < ERB - def set_eoutvar(compiler, eoutvar = "_erbout") - compiler.put_cmd = "#{eoutvar}.concat" - compiler.insert_cmd = "#{eoutvar}.concat" - compiler.pre_cmd = ["#{eoutvar} = ''.dup"] - compiler.post_cmd = [eoutvar] - end - end - end -end diff --git a/lib/bundler/vendor/thor/lib/thor/actions/inject_into_file.rb b/lib/bundler/vendor/thor/lib/thor/actions/inject_into_file.rb deleted file mode 100644 index 349b26ff65..0000000000 --- a/lib/bundler/vendor/thor/lib/thor/actions/inject_into_file.rb +++ /dev/null @@ -1,109 +0,0 @@ -require "bundler/vendor/thor/lib/thor/actions/empty_directory" - -class Bundler::Thor - module Actions - # Injects the given content into a file. Different from gsub_file, this - # method is reversible. - # - # ==== Parameters - # destination:: Relative path to the destination root - # data:: Data to add to the file. Can be given as a block. - # config:: give :verbose => false to not log the status and the flag - # for injection (:after or :before) or :force => true for - # insert two or more times the same content. - # - # ==== Examples - # - # insert_into_file "config/environment.rb", "config.gem :thor", :after => "Rails::Initializer.run do |config|\n" - # - # insert_into_file "config/environment.rb", :after => "Rails::Initializer.run do |config|\n" do - # gems = ask "Which gems would you like to add?" - # gems.split(" ").map{ |gem| " config.gem :#{gem}" }.join("\n") - # end - # - def insert_into_file(destination, *args, &block) - data = block_given? ? block : args.shift - config = args.shift - action InjectIntoFile.new(self, destination, data, config) - end - alias_method :inject_into_file, :insert_into_file - - class InjectIntoFile < EmptyDirectory #:nodoc: - attr_reader :replacement, :flag, :behavior - - def initialize(base, destination, data, config) - super(base, destination, {:verbose => true}.merge(config)) - - @behavior, @flag = if @config.key?(:after) - [:after, @config.delete(:after)] - else - [:before, @config.delete(:before)] - end - - @replacement = data.is_a?(Proc) ? data.call : data - @flag = Regexp.escape(@flag) unless @flag.is_a?(Regexp) - end - - def invoke! - say_status :invoke - - content = if @behavior == :after - '\0' + replacement - else - replacement + '\0' - end - - if exists? - replace!(/#{flag}/, content, config[:force]) - else - unless pretend? - raise Bundler::Thor::Error, "The file #{ destination } does not appear to exist" - end - end - end - - def revoke! - say_status :revoke - - regexp = if @behavior == :after - content = '\1\2' - /(#{flag})(.*)(#{Regexp.escape(replacement)})/m - else - content = '\2\3' - /(#{Regexp.escape(replacement)})(.*)(#{flag})/m - end - - replace!(regexp, content, true) - end - - protected - - def say_status(behavior) - status = if behavior == :invoke - if flag == /\A/ - :prepend - elsif flag == /\z/ - :append - else - :insert - end - else - :subtract - end - - super(status, config[:verbose]) - end - - # Adds the content to the file. - # - def replace!(regexp, string, force) - return if pretend? - content = File.read(destination) - if force || !content.include?(replacement) - content.gsub!(regexp, string) - File.open(destination, "wb") { |file| file.write(content) } - end - end - end - end -end diff --git a/lib/bundler/vendor/thor/lib/thor/base.rb b/lib/bundler/vendor/thor/lib/thor/base.rb deleted file mode 100644 index 9bd1077170..0000000000 --- a/lib/bundler/vendor/thor/lib/thor/base.rb +++ /dev/null @@ -1,679 +0,0 @@ -require "bundler/vendor/thor/lib/thor/command" -require "bundler/vendor/thor/lib/thor/core_ext/hash_with_indifferent_access" -require "bundler/vendor/thor/lib/thor/core_ext/ordered_hash" -require "bundler/vendor/thor/lib/thor/error" -require "bundler/vendor/thor/lib/thor/invocation" -require "bundler/vendor/thor/lib/thor/parser" -require "bundler/vendor/thor/lib/thor/shell" -require "bundler/vendor/thor/lib/thor/line_editor" -require "bundler/vendor/thor/lib/thor/util" - -class Bundler::Thor - autoload :Actions, "bundler/vendor/thor/lib/thor/actions" - autoload :RakeCompat, "bundler/vendor/thor/lib/thor/rake_compat" - autoload :Group, "bundler/vendor/thor/lib/thor/group" - - # Shortcuts for help. - HELP_MAPPINGS = %w(-h -? --help -D) - - # Bundler::Thor methods that should not be overwritten by the user. - THOR_RESERVED_WORDS = %w(invoke shell options behavior root destination_root relative_root - action add_file create_file in_root inside run run_ruby_script) - - TEMPLATE_EXTNAME = ".tt" - - module Base - attr_accessor :options, :parent_options, :args - - # It receives arguments in an Array and two hashes, one for options and - # other for configuration. - # - # Notice that it does not check if all required arguments were supplied. - # It should be done by the parser. - # - # ==== Parameters - # args:: An array of objects. The objects are applied to their - # respective accessors declared with argument. - # - # options:: An options hash that will be available as self.options. - # The hash given is converted to a hash with indifferent - # access, magic predicates (options.skip?) and then frozen. - # - # config:: Configuration for this Bundler::Thor class. - # - def initialize(args = [], local_options = {}, config = {}) - parse_options = self.class.class_options - - # The start method splits inbound arguments at the first argument - # that looks like an option (starts with - or --). It then calls - # new, passing in the two halves of the arguments Array as the - # first two parameters. - - command_options = config.delete(:command_options) # hook for start - parse_options = parse_options.merge(command_options) if command_options - if local_options.is_a?(Array) - array_options = local_options - hash_options = {} - else - # Handle the case where the class was explicitly instantiated - # with pre-parsed options. - array_options = [] - hash_options = local_options - end - - # Let Bundler::Thor::Options parse the options first, so it can remove - # declared options from the array. This will leave us with - # a list of arguments that weren't declared. - stop_on_unknown = self.class.stop_on_unknown_option? config[:current_command] - disable_required_check = self.class.disable_required_check? config[:current_command] - opts = Bundler::Thor::Options.new(parse_options, hash_options, stop_on_unknown, disable_required_check) - self.options = opts.parse(array_options) - self.options = config[:class_options].merge(options) if config[:class_options] - - # If unknown options are disallowed, make sure that none of the - # remaining arguments looks like an option. - opts.check_unknown! if self.class.check_unknown_options?(config) - - # Add the remaining arguments from the options parser to the - # arguments passed in to initialize. Then remove any positional - # arguments declared using #argument (this is primarily used - # by Bundler::Thor::Group). Tis will leave us with the remaining - # positional arguments. - to_parse = args - to_parse += opts.remaining unless self.class.strict_args_position?(config) - - thor_args = Bundler::Thor::Arguments.new(self.class.arguments) - thor_args.parse(to_parse).each { |k, v| __send__("#{k}=", v) } - @args = thor_args.remaining - end - - class << self - def included(base) #:nodoc: - base.extend ClassMethods - base.send :include, Invocation - base.send :include, Shell - end - - # Returns the classes that inherits from Bundler::Thor or Bundler::Thor::Group. - # - # ==== Returns - # Array[Class] - # - def subclasses - @subclasses ||= [] - end - - # Returns the files where the subclasses are kept. - # - # ==== Returns - # Hash[path => Class] - # - def subclass_files - @subclass_files ||= Hash.new { |h, k| h[k] = [] } - end - - # Whenever a class inherits from Bundler::Thor or Bundler::Thor::Group, we should track the - # class and the file on Bundler::Thor::Base. This is the method responsable for it. - # - def register_klass_file(klass) #:nodoc: - file = caller[1].match(/(.*):\d+/)[1] - Bundler::Thor::Base.subclasses << klass unless Bundler::Thor::Base.subclasses.include?(klass) - - file_subclasses = Bundler::Thor::Base.subclass_files[File.expand_path(file)] - file_subclasses << klass unless file_subclasses.include?(klass) - end - end - - module ClassMethods - def attr_reader(*) #:nodoc: - no_commands { super } - end - - def attr_writer(*) #:nodoc: - no_commands { super } - end - - def attr_accessor(*) #:nodoc: - no_commands { super } - end - - # If you want to raise an error for unknown options, call check_unknown_options! - # This is disabled by default to allow dynamic invocations. - def check_unknown_options! - @check_unknown_options = true - end - - def check_unknown_options #:nodoc: - @check_unknown_options ||= from_superclass(:check_unknown_options, false) - end - - def check_unknown_options?(config) #:nodoc: - !!check_unknown_options - end - - # If you want to raise an error when the default value of an option does not match - # the type call check_default_type! - # This is disabled by default for compatibility. - def check_default_type! - @check_default_type = true - end - - def check_default_type #:nodoc: - @check_default_type ||= from_superclass(:check_default_type, false) - end - - def check_default_type? #:nodoc: - !!check_default_type - end - - # If true, option parsing is suspended as soon as an unknown option or a - # regular argument is encountered. All remaining arguments are passed to - # the command as regular arguments. - def stop_on_unknown_option?(command_name) #:nodoc: - false - end - - # If true, option set will not suspend the execution of the command when - # a required option is not provided. - def disable_required_check?(command_name) #:nodoc: - false - end - - # If you want only strict string args (useful when cascading thor classes), - # call strict_args_position! This is disabled by default to allow dynamic - # invocations. - def strict_args_position! - @strict_args_position = true - end - - def strict_args_position #:nodoc: - @strict_args_position ||= from_superclass(:strict_args_position, false) - end - - def strict_args_position?(config) #:nodoc: - !!strict_args_position - end - - # Adds an argument to the class and creates an attr_accessor for it. - # - # Arguments are different from options in several aspects. The first one - # is how they are parsed from the command line, arguments are retrieved - # from position: - # - # thor command NAME - # - # Instead of: - # - # thor command --name=NAME - # - # Besides, arguments are used inside your code as an accessor (self.argument), - # while options are all kept in a hash (self.options). - # - # Finally, arguments cannot have type :default or :boolean but can be - # optional (supplying :optional => :true or :required => false), although - # you cannot have a required argument after a non-required argument. If you - # try it, an error is raised. - # - # ==== Parameters - # name:: The name of the argument. - # options:: Described below. - # - # ==== Options - # :desc - Description for the argument. - # :required - If the argument is required or not. - # :optional - If the argument is optional or not. - # :type - The type of the argument, can be :string, :hash, :array, :numeric. - # :default - Default value for this argument. It cannot be required and have default values. - # :banner - String to show on usage notes. - # - # ==== Errors - # ArgumentError:: Raised if you supply a required argument after a non required one. - # - def argument(name, options = {}) - is_thor_reserved_word?(name, :argument) - no_commands { attr_accessor name } - - required = if options.key?(:optional) - !options[:optional] - elsif options.key?(:required) - options[:required] - else - options[:default].nil? - end - - remove_argument name - - if required - arguments.each do |argument| - next if argument.required? - raise ArgumentError, "You cannot have #{name.to_s.inspect} as required argument after " \ - "the non-required argument #{argument.human_name.inspect}." - end - end - - options[:required] = required - - arguments << Bundler::Thor::Argument.new(name, options) - end - - # Returns this class arguments, looking up in the ancestors chain. - # - # ==== Returns - # Array[Bundler::Thor::Argument] - # - def arguments - @arguments ||= from_superclass(:arguments, []) - end - - # Adds a bunch of options to the set of class options. - # - # class_options :foo => false, :bar => :required, :baz => :string - # - # If you prefer more detailed declaration, check class_option. - # - # ==== Parameters - # Hash[Symbol => Object] - # - def class_options(options = nil) - @class_options ||= from_superclass(:class_options, {}) - build_options(options, @class_options) if options - @class_options - end - - # Adds an option to the set of class options - # - # ==== Parameters - # name:: The name of the argument. - # options:: Described below. - # - # ==== Options - # :desc:: -- Description for the argument. - # :required:: -- If the argument is required or not. - # :default:: -- Default value for this argument. - # :group:: -- The group for this options. Use by class options to output options in different levels. - # :aliases:: -- Aliases for this option. Note: Bundler::Thor follows a convention of one-dash-one-letter options. Thus aliases like "-something" wouldn't be parsed; use either "\--something" or "-s" instead. - # :type:: -- The type of the argument, can be :string, :hash, :array, :numeric or :boolean. - # :banner:: -- String to show on usage notes. - # :hide:: -- If you want to hide this option from the help. - # - def class_option(name, options = {}) - build_option(name, options, class_options) - end - - # Removes a previous defined argument. If :undefine is given, undefine - # accessors as well. - # - # ==== Parameters - # names:: Arguments to be removed - # - # ==== Examples - # - # remove_argument :foo - # remove_argument :foo, :bar, :baz, :undefine => true - # - def remove_argument(*names) - options = names.last.is_a?(Hash) ? names.pop : {} - - names.each do |name| - arguments.delete_if { |a| a.name == name.to_s } - undef_method name, "#{name}=" if options[:undefine] - end - end - - # Removes a previous defined class option. - # - # ==== Parameters - # names:: Class options to be removed - # - # ==== Examples - # - # remove_class_option :foo - # remove_class_option :foo, :bar, :baz - # - def remove_class_option(*names) - names.each do |name| - class_options.delete(name) - end - end - - # Defines the group. This is used when thor list is invoked so you can specify - # that only commands from a pre-defined group will be shown. Defaults to standard. - # - # ==== Parameters - # name - # - def group(name = nil) - if name - @group = name.to_s - else - @group ||= from_superclass(:group, "standard") - end - end - - # Returns the commands for this Bundler::Thor class. - # - # ==== Returns - # OrderedHash:: An ordered hash with commands names as keys and Bundler::Thor::Command - # objects as values. - # - def commands - @commands ||= Bundler::Thor::CoreExt::OrderedHash.new - end - alias_method :tasks, :commands - - # Returns the commands for this Bundler::Thor class and all subclasses. - # - # ==== Returns - # OrderedHash:: An ordered hash with commands names as keys and Bundler::Thor::Command - # objects as values. - # - def all_commands - @all_commands ||= from_superclass(:all_commands, Bundler::Thor::CoreExt::OrderedHash.new) - @all_commands.merge!(commands) - end - alias_method :all_tasks, :all_commands - - # Removes a given command from this Bundler::Thor class. This is usually done if you - # are inheriting from another class and don't want it to be available - # anymore. - # - # By default it only remove the mapping to the command. But you can supply - # :undefine => true to undefine the method from the class as well. - # - # ==== Parameters - # name:: The name of the command to be removed - # options:: You can give :undefine => true if you want commands the method - # to be undefined from the class as well. - # - def remove_command(*names) - options = names.last.is_a?(Hash) ? names.pop : {} - - names.each do |name| - commands.delete(name.to_s) - all_commands.delete(name.to_s) - undef_method name if options[:undefine] - end - end - alias_method :remove_task, :remove_command - - # All methods defined inside the given block are not added as commands. - # - # So you can do: - # - # class MyScript < Bundler::Thor - # no_commands do - # def this_is_not_a_command - # end - # end - # end - # - # You can also add the method and remove it from the command list: - # - # class MyScript < Bundler::Thor - # def this_is_not_a_command - # end - # remove_command :this_is_not_a_command - # end - # - def no_commands - @no_commands = true - yield - ensure - @no_commands = false - end - alias_method :no_tasks, :no_commands - - # Sets the namespace for the Bundler::Thor or Bundler::Thor::Group class. By default the - # namespace is retrieved from the class name. If your Bundler::Thor class is named - # Scripts::MyScript, the help method, for example, will be called as: - # - # thor scripts:my_script -h - # - # If you change the namespace: - # - # namespace :my_scripts - # - # You change how your commands are invoked: - # - # thor my_scripts -h - # - # Finally, if you change your namespace to default: - # - # namespace :default - # - # Your commands can be invoked with a shortcut. Instead of: - # - # thor :my_command - # - def namespace(name = nil) - if name - @namespace = name.to_s - else - @namespace ||= Bundler::Thor::Util.namespace_from_thor_class(self) - end - end - - # Parses the command and options from the given args, instantiate the class - # and invoke the command. This method is used when the arguments must be parsed - # from an array. If you are inside Ruby and want to use a Bundler::Thor class, you - # can simply initialize it: - # - # script = MyScript.new(args, options, config) - # script.invoke(:command, first_arg, second_arg, third_arg) - # - def start(given_args = ARGV, config = {}) - config[:shell] ||= Bundler::Thor::Base.shell.new - dispatch(nil, given_args.dup, nil, config) - rescue Bundler::Thor::Error => e - config[:debug] || ENV["THOR_DEBUG"] == "1" ? (raise e) : config[:shell].error(e.message) - exit(1) if exit_on_failure? - rescue Errno::EPIPE - # This happens if a thor command is piped to something like `head`, - # which closes the pipe when it's done reading. This will also - # mean that if the pipe is closed, further unnecessary - # computation will not occur. - exit(0) - end - - # Allows to use private methods from parent in child classes as commands. - # - # ==== Parameters - # names:: Method names to be used as commands - # - # ==== Examples - # - # public_command :foo - # public_command :foo, :bar, :baz - # - def public_command(*names) - names.each do |name| - class_eval "def #{name}(*); super end" - end - end - alias_method :public_task, :public_command - - def handle_no_command_error(command, has_namespace = $thor_runner) #:nodoc: - raise UndefinedCommandError, "Could not find command #{command.inspect} in #{namespace.inspect} namespace." if has_namespace - raise UndefinedCommandError, "Could not find command #{command.inspect}." - end - alias_method :handle_no_task_error, :handle_no_command_error - - def handle_argument_error(command, error, args, arity) #:nodoc: - name = [command.ancestor_name, command.name].compact.join(" ") - msg = "ERROR: \"#{basename} #{name}\" was called with ".dup - msg << "no arguments" if args.empty? - msg << "arguments " << args.inspect unless args.empty? - msg << "\nUsage: #{banner(command).inspect}" - raise InvocationError, msg - end - - protected - - # Prints the class options per group. If an option does not belong to - # any group, it's printed as Class option. - # - def class_options_help(shell, groups = {}) #:nodoc: - # Group options by group - class_options.each do |_, value| - groups[value.group] ||= [] - groups[value.group] << value - end - - # Deal with default group - global_options = groups.delete(nil) || [] - print_options(shell, global_options) - - # Print all others - groups.each do |group_name, options| - print_options(shell, options, group_name) - end - end - - # Receives a set of options and print them. - def print_options(shell, options, group_name = nil) - return if options.empty? - - list = [] - padding = options.map { |o| o.aliases.size }.max.to_i * 4 - - options.each do |option| - next if option.hide - item = [option.usage(padding)] - item.push(option.description ? "# #{option.description}" : "") - - list << item - list << ["", "# Default: #{option.default}"] if option.show_default? - list << ["", "# Possible values: #{option.enum.join(', ')}"] if option.enum - end - - shell.say(group_name ? "#{group_name} options:" : "Options:") - shell.print_table(list, :indent => 2) - shell.say "" - end - - # Raises an error if the word given is a Bundler::Thor reserved word. - def is_thor_reserved_word?(word, type) #:nodoc: - return false unless THOR_RESERVED_WORDS.include?(word.to_s) - raise "#{word.inspect} is a Bundler::Thor reserved word and cannot be defined as #{type}" - end - - # Build an option and adds it to the given scope. - # - # ==== Parameters - # name:: The name of the argument. - # options:: Described in both class_option and method_option. - # scope:: Options hash that is being built up - def build_option(name, options, scope) #:nodoc: - scope[name] = Bundler::Thor::Option.new(name, options.merge(:check_default_type => check_default_type?)) - end - - # Receives a hash of options, parse them and add to the scope. This is a - # fast way to set a bunch of options: - # - # build_options :foo => true, :bar => :required, :baz => :string - # - # ==== Parameters - # Hash[Symbol => Object] - def build_options(options, scope) #:nodoc: - options.each do |key, value| - scope[key] = Bundler::Thor::Option.parse(key, value) - end - end - - # Finds a command with the given name. If the command belongs to the current - # class, just return it, otherwise dup it and add the fresh copy to the - # current command hash. - def find_and_refresh_command(name) #:nodoc: - if commands[name.to_s] - commands[name.to_s] - elsif command = all_commands[name.to_s] # rubocop:disable AssignmentInCondition - commands[name.to_s] = command.clone - else - raise ArgumentError, "You supplied :for => #{name.inspect}, but the command #{name.inspect} could not be found." - end - end - alias_method :find_and_refresh_task, :find_and_refresh_command - - # Everytime someone inherits from a Bundler::Thor class, register the klass - # and file into baseclass. - def inherited(klass) - Bundler::Thor::Base.register_klass_file(klass) - klass.instance_variable_set(:@no_commands, false) - end - - # Fire this callback whenever a method is added. Added methods are - # tracked as commands by invoking the create_command method. - def method_added(meth) - meth = meth.to_s - - if meth == "initialize" - initialize_added - return - end - - # Return if it's not a public instance method - return unless public_method_defined?(meth.to_sym) - - @no_commands ||= false - return if @no_commands || !create_command(meth) - - is_thor_reserved_word?(meth, :command) - Bundler::Thor::Base.register_klass_file(self) - end - - # Retrieves a value from superclass. If it reaches the baseclass, - # returns default. - def from_superclass(method, default = nil) - if self == baseclass || !superclass.respond_to?(method, true) - default - else - value = superclass.send(method) - - # Ruby implements `dup` on Object, but raises a `TypeError` - # if the method is called on immediates. As a result, we - # don't have a good way to check whether dup will succeed - # without calling it and rescuing the TypeError. - begin - value.dup - rescue TypeError - value - end - - end - end - - # A flag that makes the process exit with status 1 if any error happens. - def exit_on_failure? - false - end - - # - # The basename of the program invoking the thor class. - # - def basename - File.basename($PROGRAM_NAME).split(" ").first - end - - # SIGNATURE: Sets the baseclass. This is where the superclass lookup - # finishes. - def baseclass #:nodoc: - end - - # SIGNATURE: Creates a new command if valid_command? is true. This method is - # called when a new method is added to the class. - def create_command(meth) #:nodoc: - end - alias_method :create_task, :create_command - - # SIGNATURE: Defines behavior when the initialize method is added to the - # class. - def initialize_added #:nodoc: - end - - # SIGNATURE: The hook invoked by start. - def dispatch(command, given_args, given_opts, config) #:nodoc: - raise NotImplementedError - end - end - end -end diff --git a/lib/bundler/vendor/thor/lib/thor/command.rb b/lib/bundler/vendor/thor/lib/thor/command.rb deleted file mode 100644 index c636948e5d..0000000000 --- a/lib/bundler/vendor/thor/lib/thor/command.rb +++ /dev/null @@ -1,135 +0,0 @@ -class Bundler::Thor - class Command < Struct.new(:name, :description, :long_description, :usage, :options, :ancestor_name) - FILE_REGEXP = /^#{Regexp.escape(File.dirname(__FILE__))}/ - - def initialize(name, description, long_description, usage, options = nil) - super(name.to_s, description, long_description, usage, options || {}) - end - - def initialize_copy(other) #:nodoc: - super(other) - self.options = other.options.dup if other.options - end - - def hidden? - false - end - - # By default, a command invokes a method in the thor class. You can change this - # implementation to create custom commands. - def run(instance, args = []) - arity = nil - - if private_method?(instance) - instance.class.handle_no_command_error(name) - elsif public_method?(instance) - arity = instance.method(name).arity - instance.__send__(name, *args) - elsif local_method?(instance, :method_missing) - instance.__send__(:method_missing, name.to_sym, *args) - else - instance.class.handle_no_command_error(name) - end - rescue ArgumentError => e - handle_argument_error?(instance, e, caller) ? instance.class.handle_argument_error(self, e, args, arity) : (raise e) - rescue NoMethodError => e - handle_no_method_error?(instance, e, caller) ? instance.class.handle_no_command_error(name) : (raise e) - end - - # Returns the formatted usage by injecting given required arguments - # and required options into the given usage. - def formatted_usage(klass, namespace = true, subcommand = false) - if ancestor_name - formatted = "#{ancestor_name} ".dup # add space - elsif namespace - namespace = klass.namespace - formatted = "#{namespace.gsub(/^(default)/, '')}:".dup - end - formatted ||= "#{klass.namespace.split(':').last} ".dup if subcommand - - formatted ||= "".dup - - # Add usage with required arguments - formatted << if klass && !klass.arguments.empty? - usage.to_s.gsub(/^#{name}/) do |match| - match << " " << klass.arguments.map(&:usage).compact.join(" ") - end - else - usage.to_s - end - - # Add required options - formatted << " #{required_options}" - - # Strip and go! - formatted.strip - end - - protected - - def not_debugging?(instance) - !(instance.class.respond_to?(:debugging) && instance.class.debugging) - end - - def required_options - @required_options ||= options.map { |_, o| o.usage if o.required? }.compact.sort.join(" ") - end - - # Given a target, checks if this class name is a public method. - def public_method?(instance) #:nodoc: - !(instance.public_methods & [name.to_s, name.to_sym]).empty? - end - - def private_method?(instance) - !(instance.private_methods & [name.to_s, name.to_sym]).empty? - end - - def local_method?(instance, name) - methods = instance.public_methods(false) + instance.private_methods(false) + instance.protected_methods(false) - !(methods & [name.to_s, name.to_sym]).empty? - end - - def sans_backtrace(backtrace, caller) #:nodoc: - saned = backtrace.reject { |frame| frame =~ FILE_REGEXP || (frame =~ /\.java:/ && RUBY_PLATFORM =~ /java/) || (frame =~ %r{^kernel/} && RUBY_ENGINE =~ /rbx/) } - saned - caller - end - - def handle_argument_error?(instance, error, caller) - not_debugging?(instance) && (error.message =~ /wrong number of arguments/ || error.message =~ /given \d*, expected \d*/) && begin - saned = sans_backtrace(error.backtrace, caller) - # Ruby 1.9 always include the called method in the backtrace - saned.empty? || (saned.size == 1 && RUBY_VERSION >= "1.9") - end - end - - def handle_no_method_error?(instance, error, caller) - not_debugging?(instance) && - error.message =~ /^undefined method `#{name}' for #{Regexp.escape(instance.to_s)}$/ - end - end - Task = Command - - # A command that is hidden in help messages but still invocable. - class HiddenCommand < Command - def hidden? - true - end - end - HiddenTask = HiddenCommand - - # A dynamic command that handles method missing scenarios. - class DynamicCommand < Command - def initialize(name, options = nil) - super(name.to_s, "A dynamically-generated command", name.to_s, name.to_s, options) - end - - def run(instance, args = []) - if (instance.methods & [name.to_s, name.to_sym]).empty? - super - else - instance.class.handle_no_command_error(name) - end - end - end - DynamicTask = DynamicCommand -end diff --git a/lib/bundler/vendor/thor/lib/thor/core_ext/hash_with_indifferent_access.rb b/lib/bundler/vendor/thor/lib/thor/core_ext/hash_with_indifferent_access.rb deleted file mode 100644 index c167aa33b8..0000000000 --- a/lib/bundler/vendor/thor/lib/thor/core_ext/hash_with_indifferent_access.rb +++ /dev/null @@ -1,97 +0,0 @@ -class Bundler::Thor - module CoreExt #:nodoc: - # A hash with indifferent access and magic predicates. - # - # hash = Bundler::Thor::CoreExt::HashWithIndifferentAccess.new 'foo' => 'bar', 'baz' => 'bee', 'force' => true - # - # hash[:foo] #=> 'bar' - # hash['foo'] #=> 'bar' - # hash.foo? #=> true - # - class HashWithIndifferentAccess < ::Hash #:nodoc: - def initialize(hash = {}) - super() - hash.each do |key, value| - self[convert_key(key)] = value - end - end - - def [](key) - super(convert_key(key)) - end - - def []=(key, value) - super(convert_key(key), value) - end - - def delete(key) - super(convert_key(key)) - end - - def fetch(key, *args) - super(convert_key(key), *args) - end - - def key?(key) - super(convert_key(key)) - end - - def values_at(*indices) - indices.map { |key| self[convert_key(key)] } - end - - def merge(other) - dup.merge!(other) - end - - def merge!(other) - other.each do |key, value| - self[convert_key(key)] = value - end - self - end - - def reverse_merge(other) - self.class.new(other).merge(self) - end - - def reverse_merge!(other_hash) - replace(reverse_merge(other_hash)) - end - - def replace(other_hash) - super(other_hash) - end - - # Convert to a Hash with String keys. - def to_hash - Hash.new(default).merge!(self) - end - - protected - - def convert_key(key) - key.is_a?(Symbol) ? key.to_s : key - end - - # Magic predicates. For instance: - # - # options.force? # => !!options['force'] - # options.shebang # => "/usr/lib/local/ruby" - # options.test_framework?(:rspec) # => options[:test_framework] == :rspec - # - def method_missing(method, *args) - method = method.to_s - if method =~ /^(\w+)\?$/ - if args.empty? - !!self[$1] - else - self[$1] == args.first - end - else - self[method] - end - end - end - end -end diff --git a/lib/bundler/vendor/thor/lib/thor/core_ext/io_binary_read.rb b/lib/bundler/vendor/thor/lib/thor/core_ext/io_binary_read.rb deleted file mode 100644 index 0f6e2e0af2..0000000000 --- a/lib/bundler/vendor/thor/lib/thor/core_ext/io_binary_read.rb +++ /dev/null @@ -1,12 +0,0 @@ -class IO #:nodoc: - class << self - unless method_defined? :binread - def binread(file, *args) - raise ArgumentError, "wrong number of arguments (#{1 + args.size} for 1..3)" unless args.size < 3 - File.open(file, "rb") do |f| - f.read(*args) - end - end - end - end -end diff --git a/lib/bundler/vendor/thor/lib/thor/core_ext/ordered_hash.rb b/lib/bundler/vendor/thor/lib/thor/core_ext/ordered_hash.rb deleted file mode 100644 index 76f1e43c65..0000000000 --- a/lib/bundler/vendor/thor/lib/thor/core_ext/ordered_hash.rb +++ /dev/null @@ -1,129 +0,0 @@ -class Bundler::Thor - module CoreExt - class OrderedHash < ::Hash - if RUBY_VERSION < "1.9" - def initialize(*args, &block) - super - @keys = [] - end - - def initialize_copy(other) - super - # make a deep copy of keys - @keys = other.keys - end - - def []=(key, value) - @keys << key unless key?(key) - super - end - - def delete(key) - if key? key - index = @keys.index(key) - @keys.delete_at index - end - super - end - - def delete_if - super - sync_keys! - self - end - - alias_method :reject!, :delete_if - - def reject(&block) - dup.reject!(&block) - end - - def keys - @keys.dup - end - - def values - @keys.map { |key| self[key] } - end - - def to_hash - self - end - - def to_a - @keys.map { |key| [key, self[key]] } - end - - def each_key - return to_enum(:each_key) unless block_given? - @keys.each { |key| yield(key) } - self - end - - def each_value - return to_enum(:each_value) unless block_given? - @keys.each { |key| yield(self[key]) } - self - end - - def each - return to_enum(:each) unless block_given? - @keys.each { |key| yield([key, self[key]]) } - self - end - - def each_pair - return to_enum(:each_pair) unless block_given? - @keys.each { |key| yield(key, self[key]) } - self - end - - alias_method :select, :find_all - - def clear - super - @keys.clear - self - end - - def shift - k = @keys.first - v = delete(k) - [k, v] - end - - def merge!(other_hash) - if block_given? - other_hash.each { |k, v| self[k] = key?(k) ? yield(k, self[k], v) : v } - else - other_hash.each { |k, v| self[k] = v } - end - self - end - - alias_method :update, :merge! - - def merge(other_hash, &block) - dup.merge!(other_hash, &block) - end - - # When replacing with another hash, the initial order of our keys must come from the other hash -ordered or not. - def replace(other) - super - @keys = other.keys - self - end - - def inspect - "#<#{self.class} #{super}>" - end - - private - - def sync_keys! - @keys.delete_if { |k| !key?(k) } - end - end - end - end -end diff --git a/lib/bundler/vendor/thor/lib/thor/error.rb b/lib/bundler/vendor/thor/lib/thor/error.rb deleted file mode 100644 index 2f816081f3..0000000000 --- a/lib/bundler/vendor/thor/lib/thor/error.rb +++ /dev/null @@ -1,32 +0,0 @@ -class Bundler::Thor - # Bundler::Thor::Error is raised when it's caused by wrong usage of thor classes. Those - # errors have their backtrace suppressed and are nicely shown to the user. - # - # Errors that are caused by the developer, like declaring a method which - # overwrites a thor keyword, SHOULD NOT raise a Bundler::Thor::Error. This way, we - # ensure that developer errors are shown with full backtrace. - class Error < StandardError - end - - # Raised when a command was not found. - class UndefinedCommandError < Error - end - UndefinedTaskError = UndefinedCommandError - - class AmbiguousCommandError < Error - end - AmbiguousTaskError = AmbiguousCommandError - - # Raised when a command was found, but not invoked properly. - class InvocationError < Error - end - - class UnknownArgumentError < Error - end - - class RequiredArgumentMissingError < InvocationError - end - - class MalformattedArgumentError < InvocationError - end -end diff --git a/lib/bundler/vendor/thor/lib/thor/group.rb b/lib/bundler/vendor/thor/lib/thor/group.rb deleted file mode 100644 index 05ddc10cd3..0000000000 --- a/lib/bundler/vendor/thor/lib/thor/group.rb +++ /dev/null @@ -1,281 +0,0 @@ -require "bundler/vendor/thor/lib/thor/base" - -# Bundler::Thor has a special class called Bundler::Thor::Group. The main difference to Bundler::Thor class -# is that it invokes all commands at once. It also include some methods that allows -# invocations to be done at the class method, which are not available to Bundler::Thor -# commands. -class Bundler::Thor::Group - class << self - # The description for this Bundler::Thor::Group. If none is provided, but a source root - # exists, tries to find the USAGE one folder above it, otherwise searches - # in the superclass. - # - # ==== Parameters - # description:: The description for this Bundler::Thor::Group. - # - def desc(description = nil) - if description - @desc = description - else - @desc ||= from_superclass(:desc, nil) - end - end - - # Prints help information. - # - # ==== Options - # short:: When true, shows only usage. - # - def help(shell) - shell.say "Usage:" - shell.say " #{banner}\n" - shell.say - class_options_help(shell) - shell.say desc if desc - end - - # Stores invocations for this class merging with superclass values. - # - def invocations #:nodoc: - @invocations ||= from_superclass(:invocations, {}) - end - - # Stores invocation blocks used on invoke_from_option. - # - def invocation_blocks #:nodoc: - @invocation_blocks ||= from_superclass(:invocation_blocks, {}) - end - - # Invoke the given namespace or class given. It adds an instance - # method that will invoke the klass and command. You can give a block to - # configure how it will be invoked. - # - # The namespace/class given will have its options showed on the help - # usage. Check invoke_from_option for more information. - # - def invoke(*names, &block) - options = names.last.is_a?(Hash) ? names.pop : {} - verbose = options.fetch(:verbose, true) - - names.each do |name| - invocations[name] = false - invocation_blocks[name] = block if block_given? - - class_eval <<-METHOD, __FILE__, __LINE__ - def _invoke_#{name.to_s.gsub(/\W/, '_')} - klass, command = self.class.prepare_for_invocation(nil, #{name.inspect}) - - if klass - say_status :invoke, #{name.inspect}, #{verbose.inspect} - block = self.class.invocation_blocks[#{name.inspect}] - _invoke_for_class_method klass, command, &block - else - say_status :error, %(#{name.inspect} [not found]), :red - end - end - METHOD - end - end - - # Invoke a thor class based on the value supplied by the user to the - # given option named "name". A class option must be created before this - # method is invoked for each name given. - # - # ==== Examples - # - # class GemGenerator < Bundler::Thor::Group - # class_option :test_framework, :type => :string - # invoke_from_option :test_framework - # end - # - # ==== Boolean options - # - # In some cases, you want to invoke a thor class if some option is true or - # false. This is automatically handled by invoke_from_option. Then the - # option name is used to invoke the generator. - # - # ==== Preparing for invocation - # - # In some cases you want to customize how a specified hook is going to be - # invoked. You can do that by overwriting the class method - # prepare_for_invocation. The class method must necessarily return a klass - # and an optional command. - # - # ==== Custom invocations - # - # You can also supply a block to customize how the option is going to be - # invoked. The block receives two parameters, an instance of the current - # class and the klass to be invoked. - # - def invoke_from_option(*names, &block) - options = names.last.is_a?(Hash) ? names.pop : {} - verbose = options.fetch(:verbose, :white) - - names.each do |name| - unless class_options.key?(name) - raise ArgumentError, "You have to define the option #{name.inspect} " \ - "before setting invoke_from_option." - end - - invocations[name] = true - invocation_blocks[name] = block if block_given? - - class_eval <<-METHOD, __FILE__, __LINE__ - def _invoke_from_option_#{name.to_s.gsub(/\W/, '_')} - return unless options[#{name.inspect}] - - value = options[#{name.inspect}] - value = #{name.inspect} if TrueClass === value - klass, command = self.class.prepare_for_invocation(#{name.inspect}, value) - - if klass - say_status :invoke, value, #{verbose.inspect} - block = self.class.invocation_blocks[#{name.inspect}] - _invoke_for_class_method klass, command, &block - else - say_status :error, %(\#{value} [not found]), :red - end - end - METHOD - end - end - - # Remove a previously added invocation. - # - # ==== Examples - # - # remove_invocation :test_framework - # - def remove_invocation(*names) - names.each do |name| - remove_command(name) - remove_class_option(name) - invocations.delete(name) - invocation_blocks.delete(name) - end - end - - # Overwrite class options help to allow invoked generators options to be - # shown recursively when invoking a generator. - # - def class_options_help(shell, groups = {}) #:nodoc: - get_options_from_invocations(groups, class_options) do |klass| - klass.send(:get_options_from_invocations, groups, class_options) - end - super(shell, groups) - end - - # Get invocations array and merge options from invocations. Those - # options are added to group_options hash. Options that already exists - # in base_options are not added twice. - # - def get_options_from_invocations(group_options, base_options) #:nodoc: # rubocop:disable MethodLength - invocations.each do |name, from_option| - value = if from_option - option = class_options[name] - option.type == :boolean ? name : option.default - else - name - end - next unless value - - klass, _ = prepare_for_invocation(name, value) - next unless klass && klass.respond_to?(:class_options) - - value = value.to_s - human_name = value.respond_to?(:classify) ? value.classify : value - - group_options[human_name] ||= [] - group_options[human_name] += klass.class_options.values.select do |class_option| - base_options[class_option.name.to_sym].nil? && class_option.group.nil? && - !group_options.values.flatten.any? { |i| i.name == class_option.name } - end - - yield klass if block_given? - end - end - - # Returns commands ready to be printed. - def printable_commands(*) - item = [] - item << banner - item << (desc ? "# #{desc.gsub(/\s+/m, ' ')}" : "") - [item] - end - alias_method :printable_tasks, :printable_commands - - def handle_argument_error(command, error, _args, arity) #:nodoc: - msg = "#{basename} #{command.name} takes #{arity} argument".dup - msg << "s" if arity > 1 - msg << ", but it should not." - raise error, msg - end - - protected - - # The method responsible for dispatching given the args. - def dispatch(command, given_args, given_opts, config) #:nodoc: - if Bundler::Thor::HELP_MAPPINGS.include?(given_args.first) - help(config[:shell]) - return - end - - args, opts = Bundler::Thor::Options.split(given_args) - opts = given_opts || opts - - instance = new(args, opts, config) - yield instance if block_given? - - if command - instance.invoke_command(all_commands[command]) - else - instance.invoke_all - end - end - - # The banner for this class. You can customize it if you are invoking the - # thor class by another ways which is not the Bundler::Thor::Runner. - def banner - "#{basename} #{self_command.formatted_usage(self, false)}" - end - - # Represents the whole class as a command. - def self_command #:nodoc: - Bundler::Thor::DynamicCommand.new(namespace, class_options) - end - alias_method :self_task, :self_command - - def baseclass #:nodoc: - Bundler::Thor::Group - end - - def create_command(meth) #:nodoc: - commands[meth.to_s] = Bundler::Thor::Command.new(meth, nil, nil, nil, nil) - true - end - alias_method :create_task, :create_command - end - - include Bundler::Thor::Base - -protected - - # Shortcut to invoke with padding and block handling. Use internally by - # invoke and invoke_from_option class methods. - def _invoke_for_class_method(klass, command = nil, *args, &block) #:nodoc: - with_padding do - if block - case block.arity - when 3 - yield(self, klass, command) - when 2 - yield(self, klass) - when 1 - instance_exec(klass, &block) - end - else - invoke klass, command, *args - end - end - end -end diff --git a/lib/bundler/vendor/thor/lib/thor/invocation.rb b/lib/bundler/vendor/thor/lib/thor/invocation.rb deleted file mode 100644 index 866d2212a7..0000000000 --- a/lib/bundler/vendor/thor/lib/thor/invocation.rb +++ /dev/null @@ -1,177 +0,0 @@ -class Bundler::Thor - module Invocation - def self.included(base) #:nodoc: - base.extend ClassMethods - end - - module ClassMethods - # This method is responsible for receiving a name and find the proper - # class and command for it. The key is an optional parameter which is - # available only in class methods invocations (i.e. in Bundler::Thor::Group). - def prepare_for_invocation(key, name) #:nodoc: - case name - when Symbol, String - Bundler::Thor::Util.find_class_and_command_by_namespace(name.to_s, !key) - else - name - end - end - end - - # Make initializer aware of invocations and the initialization args. - def initialize(args = [], options = {}, config = {}, &block) #:nodoc: - @_invocations = config[:invocations] || Hash.new { |h, k| h[k] = [] } - @_initializer = [args, options, config] - super - end - - # Make the current command chain accessible with in a Bundler::Thor-(sub)command - def current_command_chain - @_invocations.values.flatten.map(&:to_sym) - end - - # Receives a name and invokes it. The name can be a string (either "command" or - # "namespace:command"), a Bundler::Thor::Command, a Class or a Bundler::Thor instance. If the - # command cannot be guessed by name, it can also be supplied as second argument. - # - # You can also supply the arguments, options and configuration values for - # the command to be invoked, if none is given, the same values used to - # initialize the invoker are used to initialize the invoked. - # - # When no name is given, it will invoke the default command of the current class. - # - # ==== Examples - # - # class A < Bundler::Thor - # def foo - # invoke :bar - # invoke "b:hello", ["Erik"] - # end - # - # def bar - # invoke "b:hello", ["Erik"] - # end - # end - # - # class B < Bundler::Thor - # def hello(name) - # puts "hello #{name}" - # end - # end - # - # You can notice that the method "foo" above invokes two commands: "bar", - # which belongs to the same class and "hello" which belongs to the class B. - # - # By using an invocation system you ensure that a command is invoked only once. - # In the example above, invoking "foo" will invoke "b:hello" just once, even - # if it's invoked later by "bar" method. - # - # When class A invokes class B, all arguments used on A initialization are - # supplied to B. This allows lazy parse of options. Let's suppose you have - # some rspec commands: - # - # class Rspec < Bundler::Thor::Group - # class_option :mock_framework, :type => :string, :default => :rr - # - # def invoke_mock_framework - # invoke "rspec:#{options[:mock_framework]}" - # end - # end - # - # As you noticed, it invokes the given mock framework, which might have its - # own options: - # - # class Rspec::RR < Bundler::Thor::Group - # class_option :style, :type => :string, :default => :mock - # end - # - # Since it's not rspec concern to parse mock framework options, when RR - # is invoked all options are parsed again, so RR can extract only the options - # that it's going to use. - # - # If you want Rspec::RR to be initialized with its own set of options, you - # have to do that explicitly: - # - # invoke "rspec:rr", [], :style => :foo - # - # Besides giving an instance, you can also give a class to invoke: - # - # invoke Rspec::RR, [], :style => :foo - # - def invoke(name = nil, *args) - if name.nil? - warn "[Bundler::Thor] Calling invoke() without argument is deprecated. Please use invoke_all instead.\n#{caller.join("\n")}" - return invoke_all - end - - args.unshift(nil) if args.first.is_a?(Array) || args.first.nil? - command, args, opts, config = args - - klass, command = _retrieve_class_and_command(name, command) - raise "Missing Bundler::Thor class for invoke #{name}" unless klass - raise "Expected Bundler::Thor class, got #{klass}" unless klass <= Bundler::Thor::Base - - args, opts, config = _parse_initialization_options(args, opts, config) - klass.send(:dispatch, command, args, opts, config) do |instance| - instance.parent_options = options - end - end - - # Invoke the given command if the given args. - def invoke_command(command, *args) #:nodoc: - current = @_invocations[self.class] - - unless current.include?(command.name) - current << command.name - command.run(self, *args) - end - end - alias_method :invoke_task, :invoke_command - - # Invoke all commands for the current instance. - def invoke_all #:nodoc: - self.class.all_commands.map { |_, command| invoke_command(command) } - end - - # Invokes using shell padding. - def invoke_with_padding(*args) - with_padding { invoke(*args) } - end - - protected - - # Configuration values that are shared between invocations. - def _shared_configuration #:nodoc: - {:invocations => @_invocations} - end - - # This method simply retrieves the class and command to be invoked. - # If the name is nil or the given name is a command in the current class, - # use the given name and return self as class. Otherwise, call - # prepare_for_invocation in the current class. - def _retrieve_class_and_command(name, sent_command = nil) #:nodoc: - if name.nil? - [self.class, nil] - elsif self.class.all_commands[name.to_s] - [self.class, name.to_s] - else - klass, command = self.class.prepare_for_invocation(nil, name) - [klass, command || sent_command] - end - end - alias_method :_retrieve_class_and_task, :_retrieve_class_and_command - - # Initialize klass using values stored in the @_initializer. - def _parse_initialization_options(args, opts, config) #:nodoc: - stored_args, stored_opts, stored_config = @_initializer - - args ||= stored_args.dup - opts ||= stored_opts.dup - - config ||= {} - config = stored_config.merge(_shared_configuration).merge!(config) - - [args, opts, config] - end - end -end diff --git a/lib/bundler/vendor/thor/lib/thor/line_editor.rb b/lib/bundler/vendor/thor/lib/thor/line_editor.rb deleted file mode 100644 index ce81a17484..0000000000 --- a/lib/bundler/vendor/thor/lib/thor/line_editor.rb +++ /dev/null @@ -1,17 +0,0 @@ -require "bundler/vendor/thor/lib/thor/line_editor/basic" -require "bundler/vendor/thor/lib/thor/line_editor/readline" - -class Bundler::Thor - module LineEditor - def self.readline(prompt, options = {}) - best_available.new(prompt, options).readline - end - - def self.best_available - [ - Bundler::Thor::LineEditor::Readline, - Bundler::Thor::LineEditor::Basic - ].detect(&:available?) - end - end -end diff --git a/lib/bundler/vendor/thor/lib/thor/line_editor/basic.rb b/lib/bundler/vendor/thor/lib/thor/line_editor/basic.rb deleted file mode 100644 index 0adb2b3137..0000000000 --- a/lib/bundler/vendor/thor/lib/thor/line_editor/basic.rb +++ /dev/null @@ -1,37 +0,0 @@ -class Bundler::Thor - module LineEditor - class Basic - attr_reader :prompt, :options - - def self.available? - true - end - - def initialize(prompt, options) - @prompt = prompt - @options = options - end - - def readline - $stdout.print(prompt) - get_input - end - - private - - def get_input - if echo? - $stdin.gets - else - # Lazy-load io/console since it is gem-ified as of 2.3 - require "io/console" if RUBY_VERSION > "1.9.2" - $stdin.noecho(&:gets) - end - end - - def echo? - options.fetch(:echo, true) - end - end - end -end diff --git a/lib/bundler/vendor/thor/lib/thor/line_editor/readline.rb b/lib/bundler/vendor/thor/lib/thor/line_editor/readline.rb deleted file mode 100644 index dd39cff35d..0000000000 --- a/lib/bundler/vendor/thor/lib/thor/line_editor/readline.rb +++ /dev/null @@ -1,88 +0,0 @@ -begin - require "readline" -rescue LoadError -end - -class Bundler::Thor - module LineEditor - class Readline < Basic - def self.available? - Object.const_defined?(:Readline) - end - - def readline - if echo? - ::Readline.completion_append_character = nil - # Ruby 1.8.7 does not allow Readline.completion_proc= to receive nil. - if complete = completion_proc - ::Readline.completion_proc = complete - end - ::Readline.readline(prompt, add_to_history?) - else - super - end - end - - private - - def add_to_history? - options.fetch(:add_to_history, true) - end - - def completion_proc - if use_path_completion? - proc { |text| PathCompletion.new(text).matches } - elsif completion_options.any? - proc do |text| - completion_options.select { |option| option.start_with?(text) } - end - end - end - - def completion_options - options.fetch(:limited_to, []) - end - - def use_path_completion? - options.fetch(:path, false) - end - - class PathCompletion - attr_reader :text - private :text - - def initialize(text) - @text = text - end - - def matches - relative_matches - end - - private - - def relative_matches - absolute_matches.map { |path| path.sub(base_path, "") } - end - - def absolute_matches - Dir[glob_pattern].map do |path| - if File.directory?(path) - "#{path}/" - else - path - end - end - end - - def glob_pattern - "#{base_path}#{text}*" - end - - def base_path - "#{Dir.pwd}/" - end - end - end - end -end diff --git a/lib/bundler/vendor/thor/lib/thor/parser.rb b/lib/bundler/vendor/thor/lib/thor/parser.rb deleted file mode 100644 index 08f80e565d..0000000000 --- a/lib/bundler/vendor/thor/lib/thor/parser.rb +++ /dev/null @@ -1,4 +0,0 @@ -require "bundler/vendor/thor/lib/thor/parser/argument" -require "bundler/vendor/thor/lib/thor/parser/arguments" -require "bundler/vendor/thor/lib/thor/parser/option" -require "bundler/vendor/thor/lib/thor/parser/options" diff --git a/lib/bundler/vendor/thor/lib/thor/parser/argument.rb b/lib/bundler/vendor/thor/lib/thor/parser/argument.rb deleted file mode 100644 index dfe7398583..0000000000 --- a/lib/bundler/vendor/thor/lib/thor/parser/argument.rb +++ /dev/null @@ -1,70 +0,0 @@ -class Bundler::Thor - class Argument #:nodoc: - VALID_TYPES = [:numeric, :hash, :array, :string] - - attr_reader :name, :description, :enum, :required, :type, :default, :banner - alias_method :human_name, :name - - def initialize(name, options = {}) - class_name = self.class.name.split("::").last - - type = options[:type] - - raise ArgumentError, "#{class_name} name can't be nil." if name.nil? - raise ArgumentError, "Type :#{type} is not valid for #{class_name.downcase}s." if type && !valid_type?(type) - - @name = name.to_s - @description = options[:desc] - @required = options.key?(:required) ? options[:required] : true - @type = (type || :string).to_sym - @default = options[:default] - @banner = options[:banner] || default_banner - @enum = options[:enum] - - validate! # Trigger specific validations - end - - def usage - required? ? banner : "[#{banner}]" - end - - def required? - required - end - - def show_default? - case default - when Array, String, Hash - !default.empty? - else - default - end - end - - protected - - def validate! - raise ArgumentError, "An argument cannot be required and have default value." if required? && !default.nil? - raise ArgumentError, "An argument cannot have an enum other than an array." if @enum && !@enum.is_a?(Array) - end - - def valid_type?(type) - self.class::VALID_TYPES.include?(type.to_sym) - end - - def default_banner - case type - when :boolean - nil - when :string, :default - human_name.upcase - when :numeric - "N" - when :hash - "key:value" - when :array - "one two three" - end - end - end -end diff --git a/lib/bundler/vendor/thor/lib/thor/parser/arguments.rb b/lib/bundler/vendor/thor/lib/thor/parser/arguments.rb deleted file mode 100644 index 1fd790f4b7..0000000000 --- a/lib/bundler/vendor/thor/lib/thor/parser/arguments.rb +++ /dev/null @@ -1,175 +0,0 @@ -class Bundler::Thor - class Arguments #:nodoc: # rubocop:disable ClassLength - NUMERIC = /[-+]?(\d*\.\d+|\d+)/ - - # Receives an array of args and returns two arrays, one with arguments - # and one with switches. - # - def self.split(args) - arguments = [] - - args.each do |item| - break if item =~ /^-/ - arguments << item - end - - [arguments, args[Range.new(arguments.size, -1)]] - end - - def self.parse(*args) - to_parse = args.pop - new(*args).parse(to_parse) - end - - # Takes an array of Bundler::Thor::Argument objects. - # - def initialize(arguments = []) - @assigns = {} - @non_assigned_required = [] - @switches = arguments - - arguments.each do |argument| - if !argument.default.nil? - @assigns[argument.human_name] = argument.default - elsif argument.required? - @non_assigned_required << argument - end - end - end - - def parse(args) - @pile = args.dup - - @switches.each do |argument| - break unless peek - @non_assigned_required.delete(argument) - @assigns[argument.human_name] = send(:"parse_#{argument.type}", argument.human_name) - end - - check_requirement! - @assigns - end - - def remaining - @pile - end - - private - - def no_or_skip?(arg) - arg =~ /^--(no|skip)-([-\w]+)$/ - $2 - end - - def last? - @pile.empty? - end - - def peek - @pile.first - end - - def shift - @pile.shift - end - - def unshift(arg) - if arg.is_a?(Array) - @pile = arg + @pile - else - @pile.unshift(arg) - end - end - - def current_is_value? - peek && peek.to_s !~ /^-/ - end - - # Runs through the argument array getting strings that contains ":" and - # mark it as a hash: - # - # [ "name:string", "age:integer" ] - # - # Becomes: - # - # { "name" => "string", "age" => "integer" } - # - def parse_hash(name) - return shift if peek.is_a?(Hash) - hash = {} - - while current_is_value? && peek.include?(":") - key, value = shift.split(":", 2) - raise MalformattedArgumentError, "You can't specify '#{key}' more than once in option '#{name}'; got #{key}:#{hash[key]} and #{key}:#{value}" if hash.include? key - hash[key] = value - end - hash - end - - # Runs through the argument array getting all strings until no string is - # found or a switch is found. - # - # ["a", "b", "c"] - # - # And returns it as an array: - # - # ["a", "b", "c"] - # - def parse_array(name) - return shift if peek.is_a?(Array) - array = [] - array << shift while current_is_value? - array - end - - # Check if the peek is numeric format and return a Float or Integer. - # Check if the peek is included in enum if enum is provided. - # Otherwise raises an error. - # - def parse_numeric(name) - return shift if peek.is_a?(Numeric) - - unless peek =~ NUMERIC && $& == peek - raise MalformattedArgumentError, "Expected numeric value for '#{name}'; got #{peek.inspect}" - end - - value = $&.index(".") ? shift.to_f : shift.to_i - if @switches.is_a?(Hash) && switch = @switches[name] - if switch.enum && !switch.enum.include?(value) - raise MalformattedArgumentError, "Expected '#{name}' to be one of #{switch.enum.join(', ')}; got #{value}" - end - end - value - end - - # Parse string: - # for --string-arg, just return the current value in the pile - # for --no-string-arg, nil - # Check if the peek is included in enum if enum is provided. Otherwise raises an error. - # - def parse_string(name) - if no_or_skip?(name) - nil - else - value = shift - if @switches.is_a?(Hash) && switch = @switches[name] - if switch.enum && !switch.enum.include?(value) - raise MalformattedArgumentError, "Expected '#{name}' to be one of #{switch.enum.join(', ')}; got #{value}" - end - end - value - end - end - - # Raises an error if @non_assigned_required array is not empty. - # - def check_requirement! - return if @non_assigned_required.empty? - names = @non_assigned_required.map do |o| - o.respond_to?(:switch_name) ? o.switch_name : o.human_name - end.join("', '") - class_name = self.class.name.split("::").last.downcase - raise RequiredArgumentMissingError, "No value provided for required #{class_name} '#{names}'" - end - end -end diff --git a/lib/bundler/vendor/thor/lib/thor/parser/option.rb b/lib/bundler/vendor/thor/lib/thor/parser/option.rb deleted file mode 100644 index 85169b56c8..0000000000 --- a/lib/bundler/vendor/thor/lib/thor/parser/option.rb +++ /dev/null @@ -1,146 +0,0 @@ -class Bundler::Thor - class Option < Argument #:nodoc: - attr_reader :aliases, :group, :lazy_default, :hide - - VALID_TYPES = [:boolean, :numeric, :hash, :array, :string] - - def initialize(name, options = {}) - @check_default_type = options[:check_default_type] - options[:required] = false unless options.key?(:required) - super - @lazy_default = options[:lazy_default] - @group = options[:group].to_s.capitalize if options[:group] - @aliases = Array(options[:aliases]) - @hide = options[:hide] - end - - # This parse quick options given as method_options. It makes several - # assumptions, but you can be more specific using the option method. - # - # parse :foo => "bar" - # #=> Option foo with default value bar - # - # parse [:foo, :baz] => "bar" - # #=> Option foo with default value bar and alias :baz - # - # parse :foo => :required - # #=> Required option foo without default value - # - # parse :foo => 2 - # #=> Option foo with default value 2 and type numeric - # - # parse :foo => :numeric - # #=> Option foo without default value and type numeric - # - # parse :foo => true - # #=> Option foo with default value true and type boolean - # - # The valid types are :boolean, :numeric, :hash, :array and :string. If none - # is given a default type is assumed. This default type accepts arguments as - # string (--foo=value) or booleans (just --foo). - # - # By default all options are optional, unless :required is given. - # - def self.parse(key, value) - if key.is_a?(Array) - name, *aliases = key - else - name = key - aliases = [] - end - - name = name.to_s - default = value - - type = case value - when Symbol - default = nil - if VALID_TYPES.include?(value) - value - elsif required = (value == :required) # rubocop:disable AssignmentInCondition - :string - end - when TrueClass, FalseClass - :boolean - when Numeric - :numeric - when Hash, Array, String - value.class.name.downcase.to_sym - end - - new(name.to_s, :required => required, :type => type, :default => default, :aliases => aliases) - end - - def switch_name - @switch_name ||= dasherized? ? name : dasherize(name) - end - - def human_name - @human_name ||= dasherized? ? undasherize(name) : name - end - - def usage(padding = 0) - sample = if banner && !banner.to_s.empty? - "#{switch_name}=#{banner}".dup - else - switch_name - end - - sample = "[#{sample}]".dup unless required? - - if boolean? - sample << ", [#{dasherize('no-' + human_name)}]" unless (name == "force") || name.start_with?("no-") - end - - if aliases.empty? - (" " * padding) << sample - else - "#{aliases.join(', ')}, #{sample}" - end - end - - VALID_TYPES.each do |type| - class_eval <<-RUBY, __FILE__, __LINE__ + 1 - def #{type}? - self.type == #{type.inspect} - end - RUBY - end - - protected - - def validate! - raise ArgumentError, "An option cannot be boolean and required." if boolean? && required? - validate_default_type! if @check_default_type - end - - def validate_default_type! - default_type = case @default - when nil - return - when TrueClass, FalseClass - required? ? :string : :boolean - when Numeric - :numeric - when Symbol - :string - when Hash, Array, String - @default.class.name.downcase.to_sym - end - - raise ArgumentError, "Expected #{@type} default value for '#{switch_name}'; got #{@default.inspect} (#{default_type})" unless default_type == @type - end - - def dasherized? - name.index("-") == 0 - end - - def undasherize(str) - str.sub(/^-{1,2}/, "") - end - - def dasherize(str) - (str.length > 1 ? "--" : "-") + str.tr("_", "-") - end - end -end diff --git a/lib/bundler/vendor/thor/lib/thor/parser/options.rb b/lib/bundler/vendor/thor/lib/thor/parser/options.rb deleted file mode 100644 index 70f6366842..0000000000 --- a/lib/bundler/vendor/thor/lib/thor/parser/options.rb +++ /dev/null @@ -1,221 +0,0 @@ -class Bundler::Thor - class Options < Arguments #:nodoc: # rubocop:disable ClassLength - LONG_RE = /^(--\w+(?:-\w+)*)$/ - SHORT_RE = /^(-[a-z])$/i - EQ_RE = /^(--\w+(?:-\w+)*|-[a-z])=(.*)$/i - SHORT_SQ_RE = /^-([a-z]{2,})$/i # Allow either -x -v or -xv style for single char args - SHORT_NUM = /^(-[a-z])#{NUMERIC}$/i - OPTS_END = "--".freeze - - # Receives a hash and makes it switches. - def self.to_switches(options) - options.map do |key, value| - case value - when true - "--#{key}" - when Array - "--#{key} #{value.map(&:inspect).join(' ')}" - when Hash - "--#{key} #{value.map { |k, v| "#{k}:#{v}" }.join(' ')}" - when nil, false - nil - else - "--#{key} #{value.inspect}" - end - end.compact.join(" ") - end - - # Takes a hash of Bundler::Thor::Option and a hash with defaults. - # - # If +stop_on_unknown+ is true, #parse will stop as soon as it encounters - # an unknown option or a regular argument. - def initialize(hash_options = {}, defaults = {}, stop_on_unknown = false, disable_required_check = false) - @stop_on_unknown = stop_on_unknown - @disable_required_check = disable_required_check - options = hash_options.values - super(options) - - # Add defaults - defaults.each do |key, value| - @assigns[key.to_s] = value - @non_assigned_required.delete(hash_options[key]) - end - - @shorts = {} - @switches = {} - @extra = [] - - options.each do |option| - @switches[option.switch_name] = option - - option.aliases.each do |short| - name = short.to_s.sub(/^(?!\-)/, "-") - @shorts[name] ||= option.switch_name - end - end - end - - def remaining - @extra - end - - def peek - return super unless @parsing_options - - result = super - if result == OPTS_END - shift - @parsing_options = false - super - else - result - end - end - - def parse(args) # rubocop:disable MethodLength - @pile = args.dup - @parsing_options = true - - while peek - if parsing_options? - match, is_switch = current_is_switch? - shifted = shift - - if is_switch - case shifted - when SHORT_SQ_RE - unshift($1.split("").map { |f| "-#{f}" }) - next - when EQ_RE, SHORT_NUM - unshift($2) - switch = $1 - when LONG_RE, SHORT_RE - switch = $1 - end - - switch = normalize_switch(switch) - option = switch_option(switch) - @assigns[option.human_name] = parse_peek(switch, option) - elsif @stop_on_unknown - @parsing_options = false - @extra << shifted - @extra << shift while peek - break - elsif match - @extra << shifted - @extra << shift while peek && peek !~ /^-/ - else - @extra << shifted - end - else - @extra << shift - end - end - - check_requirement! unless @disable_required_check - - assigns = Bundler::Thor::CoreExt::HashWithIndifferentAccess.new(@assigns) - assigns.freeze - assigns - end - - def check_unknown! - # an unknown option starts with - or -- and has no more --'s afterward. - unknown = @extra.select { |str| str =~ /^--?(?:(?!--).)*$/ } - raise UnknownArgumentError, "Unknown switches '#{unknown.join(', ')}'" unless unknown.empty? - end - - protected - - # Check if the current value in peek is a registered switch. - # - # Two booleans are returned. The first is true if the current value - # starts with a hyphen; the second is true if it is a registered switch. - def current_is_switch? - case peek - when LONG_RE, SHORT_RE, EQ_RE, SHORT_NUM - [true, switch?($1)] - when SHORT_SQ_RE - [true, $1.split("").any? { |f| switch?("-#{f}") }] - else - [false, false] - end - end - - def current_is_switch_formatted? - case peek - when LONG_RE, SHORT_RE, EQ_RE, SHORT_NUM, SHORT_SQ_RE - true - else - false - end - end - - def current_is_value? - peek && (!parsing_options? || super) - end - - def switch?(arg) - switch_option(normalize_switch(arg)) - end - - def switch_option(arg) - if match = no_or_skip?(arg) # rubocop:disable AssignmentInCondition - @switches[arg] || @switches["--#{match}"] - else - @switches[arg] - end - end - - # Check if the given argument is actually a shortcut. - # - def normalize_switch(arg) - (@shorts[arg] || arg).tr("_", "-") - end - - def parsing_options? - peek - @parsing_options - end - - # Parse boolean values which can be given as --foo=true, --foo or --no-foo. - # - def parse_boolean(switch) - if current_is_value? - if ["true", "TRUE", "t", "T", true].include?(peek) - shift - true - elsif ["false", "FALSE", "f", "F", false].include?(peek) - shift - false - else - !no_or_skip?(switch) - end - else - @switches.key?(switch) || !no_or_skip?(switch) - end - end - - # Parse the value at the peek analyzing if it requires an input or not. - # - def parse_peek(switch, option) - if parsing_options? && (current_is_switch_formatted? || last?) - if option.boolean? - # No problem for boolean types - elsif no_or_skip?(switch) - return nil # User set value to nil - elsif option.string? && !option.required? - # Return the default if there is one, else the human name - return option.lazy_default || option.default || option.human_name - elsif option.lazy_default - return option.lazy_default - else - raise MalformattedArgumentError, "No value provided for option '#{switch}'" - end - end - - @non_assigned_required.delete(option) - send(:"parse_#{option.type}", switch) - end - end -end diff --git a/lib/bundler/vendor/thor/lib/thor/rake_compat.rb b/lib/bundler/vendor/thor/lib/thor/rake_compat.rb deleted file mode 100644 index 60282e2991..0000000000 --- a/lib/bundler/vendor/thor/lib/thor/rake_compat.rb +++ /dev/null @@ -1,71 +0,0 @@ -require "rake" -require "rake/dsl_definition" - -class Bundler::Thor - # Adds a compatibility layer to your Bundler::Thor classes which allows you to use - # rake package tasks. For example, to use rspec rake tasks, one can do: - # - # require 'bundler/vendor/thor/lib/thor/rake_compat' - # require 'rspec/core/rake_task' - # - # class Default < Bundler::Thor - # include Bundler::Thor::RakeCompat - # - # RSpec::Core::RakeTask.new(:spec) do |t| - # t.spec_opts = ['--options', './.rspec'] - # t.spec_files = FileList['spec/**/*_spec.rb'] - # end - # end - # - module RakeCompat - include Rake::DSL if defined?(Rake::DSL) - - def self.rake_classes - @rake_classes ||= [] - end - - def self.included(base) - # Hack. Make rakefile point to invoker, so rdoc task is generated properly. - rakefile = File.basename(caller[0].match(/(.*):\d+/)[1]) - Rake.application.instance_variable_set(:@rakefile, rakefile) - rake_classes << base - end - end -end - -# override task on (main), for compatibility with Rake 0.9 -instance_eval do - alias rake_namespace namespace - - def task(*) - task = super - - if klass = Bundler::Thor::RakeCompat.rake_classes.last # rubocop:disable AssignmentInCondition - non_namespaced_name = task.name.split(":").last - - description = non_namespaced_name - description << task.arg_names.map { |n| n.to_s.upcase }.join(" ") - description.strip! - - klass.desc description, Rake.application.last_description || non_namespaced_name - Rake.application.last_description = nil - klass.send :define_method, non_namespaced_name do |*args| - Rake::Task[task.name.to_sym].invoke(*args) - end - end - - task - end - - def namespace(name) - if klass = Bundler::Thor::RakeCompat.rake_classes.last # rubocop:disable AssignmentInCondition - const_name = Bundler::Thor::Util.camel_case(name.to_s).to_sym - klass.const_set(const_name, Class.new(Bundler::Thor)) - new_klass = klass.const_get(const_name) - Bundler::Thor::RakeCompat.rake_classes << new_klass - end - - super - Bundler::Thor::RakeCompat.rake_classes.pop - end -end diff --git a/lib/bundler/vendor/thor/lib/thor/runner.rb b/lib/bundler/vendor/thor/lib/thor/runner.rb deleted file mode 100644 index b110b8d478..0000000000 --- a/lib/bundler/vendor/thor/lib/thor/runner.rb +++ /dev/null @@ -1,324 +0,0 @@ -require "bundler/vendor/thor/lib/thor" -require "bundler/vendor/thor/lib/thor/group" -require "bundler/vendor/thor/lib/thor/core_ext/io_binary_read" - -require "yaml" -require "digest" -require "pathname" - -class Bundler::Thor::Runner < Bundler::Thor #:nodoc: # rubocop:disable ClassLength - map "-T" => :list, "-i" => :install, "-u" => :update, "-v" => :version - - def self.banner(command, all = false, subcommand = false) - "thor " + command.formatted_usage(self, all, subcommand) - end - - def self.exit_on_failure? - true - end - - # Override Bundler::Thor#help so it can give information about any class and any method. - # - def help(meth = nil) - if meth && !respond_to?(meth) - initialize_thorfiles(meth) - klass, command = Bundler::Thor::Util.find_class_and_command_by_namespace(meth) - self.class.handle_no_command_error(command, false) if klass.nil? - klass.start(["-h", command].compact, :shell => shell) - else - super - end - end - - # If a command is not found on Bundler::Thor::Runner, method missing is invoked and - # Bundler::Thor::Runner is then responsible for finding the command in all classes. - # - def method_missing(meth, *args) - meth = meth.to_s - initialize_thorfiles(meth) - klass, command = Bundler::Thor::Util.find_class_and_command_by_namespace(meth) - self.class.handle_no_command_error(command, false) if klass.nil? - args.unshift(command) if command - klass.start(args, :shell => shell) - end - - desc "install NAME", "Install an optionally named Bundler::Thor file into your system commands" - method_options :as => :string, :relative => :boolean, :force => :boolean - def install(name) # rubocop:disable MethodLength - initialize_thorfiles - - # If a directory name is provided as the argument, look for a 'main.thor' - # command in said directory. - begin - if File.directory?(File.expand_path(name)) - base = File.join(name, "main.thor") - package = :directory - contents = open(base, &:read) - else - base = name - package = :file - contents = open(name, &:read) - end - rescue OpenURI::HTTPError - raise Error, "Error opening URI '#{name}'" - rescue Errno::ENOENT - raise Error, "Error opening file '#{name}'" - end - - say "Your Bundler::Thorfile contains:" - say contents - - unless options["force"] - return false if no?("Do you wish to continue [y/N]?") - end - - as = options["as"] || begin - first_line = contents.split("\n")[0] - (match = first_line.match(/\s*#\s*module:\s*([^\n]*)/)) ? match[1].strip : nil - end - - unless as - basename = File.basename(name) - as = ask("Please specify a name for #{name} in the system repository [#{basename}]:") - as = basename if as.empty? - end - - location = if options[:relative] || name =~ %r{^https?://} - name - else - File.expand_path(name) - end - - thor_yaml[as] = { - :filename => Digest(:MD5).hexdigest(name + as), - :location => location, - :namespaces => Bundler::Thor::Util.namespaces_in_content(contents, base) - } - - save_yaml(thor_yaml) - say "Storing thor file in your system repository" - destination = File.join(thor_root, thor_yaml[as][:filename]) - - if package == :file - File.open(destination, "w") { |f| f.puts contents } - else - require "fileutils" - FileUtils.cp_r(name, destination) - end - - thor_yaml[as][:filename] # Indicate success - end - - desc "version", "Show Bundler::Thor version" - def version - require "bundler/vendor/thor/lib/thor/version" - say "Bundler::Thor #{Bundler::Thor::VERSION}" - end - - desc "uninstall NAME", "Uninstall a named Bundler::Thor module" - def uninstall(name) - raise Error, "Can't find module '#{name}'" unless thor_yaml[name] - say "Uninstalling #{name}." - require "fileutils" - FileUtils.rm_rf(File.join(thor_root, (thor_yaml[name][:filename]).to_s)) - - thor_yaml.delete(name) - save_yaml(thor_yaml) - - puts "Done." - end - - desc "update NAME", "Update a Bundler::Thor file from its original location" - def update(name) - raise Error, "Can't find module '#{name}'" if !thor_yaml[name] || !thor_yaml[name][:location] - - say "Updating '#{name}' from #{thor_yaml[name][:location]}" - - old_filename = thor_yaml[name][:filename] - self.options = options.merge("as" => name) - - if File.directory? File.expand_path(name) - require "fileutils" - FileUtils.rm_rf(File.join(thor_root, old_filename)) - - thor_yaml.delete(old_filename) - save_yaml(thor_yaml) - - filename = install(name) - else - filename = install(thor_yaml[name][:location]) - end - - File.delete(File.join(thor_root, old_filename)) unless filename == old_filename - end - - desc "installed", "List the installed Bundler::Thor modules and commands" - method_options :internal => :boolean - def installed - initialize_thorfiles(nil, true) - display_klasses(true, options["internal"]) - end - - desc "list [SEARCH]", "List the available thor commands (--substring means .*SEARCH)" - method_options :substring => :boolean, :group => :string, :all => :boolean, :debug => :boolean - def list(search = "") - initialize_thorfiles - - search = ".*#{search}" if options["substring"] - search = /^#{search}.*/i - group = options[:group] || "standard" - - klasses = Bundler::Thor::Base.subclasses.select do |k| - (options[:all] || k.group == group) && k.namespace =~ search - end - - display_klasses(false, false, klasses) - end - -private - - def thor_root - Bundler::Thor::Util.thor_root - end - - def thor_yaml - @thor_yaml ||= begin - yaml_file = File.join(thor_root, "thor.yml") - yaml = YAML.load_file(yaml_file) if File.exist?(yaml_file) - yaml || {} - end - end - - # Save the yaml file. If none exists in thor root, creates one. - # - def save_yaml(yaml) - yaml_file = File.join(thor_root, "thor.yml") - - unless File.exist?(yaml_file) - require "fileutils" - FileUtils.mkdir_p(thor_root) - yaml_file = File.join(thor_root, "thor.yml") - FileUtils.touch(yaml_file) - end - - File.open(yaml_file, "w") { |f| f.puts yaml.to_yaml } - end - - # Load the Bundler::Thorfiles. If relevant_to is supplied, looks for specific files - # in the thor_root instead of loading them all. - # - # By default, it also traverses the current path until find Bundler::Thor files, as - # described in thorfiles. This look up can be skipped by supplying - # skip_lookup true. - # - def initialize_thorfiles(relevant_to = nil, skip_lookup = false) - thorfiles(relevant_to, skip_lookup).each do |f| - Bundler::Thor::Util.load_thorfile(f, nil, options[:debug]) unless Bundler::Thor::Base.subclass_files.keys.include?(File.expand_path(f)) - end - end - - # Finds Bundler::Thorfiles by traversing from your current directory down to the root - # directory of your system. If at any time we find a Bundler::Thor file, we stop. - # - # We also ensure that system-wide Bundler::Thorfiles are loaded first, so local - # Bundler::Thorfiles can override them. - # - # ==== Example - # - # If we start at /Users/wycats/dev/thor ... - # - # 1. /Users/wycats/dev/thor - # 2. /Users/wycats/dev - # 3. /Users/wycats <-- we find a Bundler::Thorfile here, so we stop - # - # Suppose we start at c:\Documents and Settings\james\dev\thor ... - # - # 1. c:\Documents and Settings\james\dev\thor - # 2. c:\Documents and Settings\james\dev - # 3. c:\Documents and Settings\james - # 4. c:\Documents and Settings - # 5. c:\ <-- no Bundler::Thorfiles found! - # - def thorfiles(relevant_to = nil, skip_lookup = false) - thorfiles = [] - - unless skip_lookup - Pathname.pwd.ascend do |path| - thorfiles = Bundler::Thor::Util.globs_for(path).map { |g| Dir[g] }.flatten - break unless thorfiles.empty? - end - end - - files = (relevant_to ? thorfiles_relevant_to(relevant_to) : Bundler::Thor::Util.thor_root_glob) - files += thorfiles - files -= ["#{thor_root}/thor.yml"] - - files.map! do |file| - File.directory?(file) ? File.join(file, "main.thor") : file - end - end - - # Load Bundler::Thorfiles relevant to the given method. If you provide "foo:bar" it - # will load all thor files in the thor.yaml that has "foo" e "foo:bar" - # namespaces registered. - # - def thorfiles_relevant_to(meth) - lookup = [meth, meth.split(":")[0...-1].join(":")] - - files = thor_yaml.select do |_, v| - v[:namespaces] && !(v[:namespaces] & lookup).empty? - end - - files.map { |_, v| File.join(thor_root, (v[:filename]).to_s) } - end - - # Display information about the given klasses. If with_module is given, - # it shows a table with information extracted from the yaml file. - # - def display_klasses(with_modules = false, show_internal = false, klasses = Bundler::Thor::Base.subclasses) - klasses -= [Bundler::Thor, Bundler::Thor::Runner, Bundler::Thor::Group] unless show_internal - - raise Error, "No Bundler::Thor commands available" if klasses.empty? - show_modules if with_modules && !thor_yaml.empty? - - list = Hash.new { |h, k| h[k] = [] } - groups = klasses.select { |k| k.ancestors.include?(Bundler::Thor::Group) } - - # Get classes which inherit from Bundler::Thor - (klasses - groups).each { |k| list[k.namespace.split(":").first] += k.printable_commands(false) } - - # Get classes which inherit from Bundler::Thor::Base - groups.map! { |k| k.printable_commands(false).first } - list["root"] = groups - - # Order namespaces with default coming first - list = list.sort { |a, b| a[0].sub(/^default/, "") <=> b[0].sub(/^default/, "") } - list.each { |n, commands| display_commands(n, commands) unless commands.empty? } - end - - def display_commands(namespace, list) #:nodoc: - list.sort! { |a, b| a[0] <=> b[0] } - - say shell.set_color(namespace, :blue, true) - say "-" * namespace.size - - print_table(list, :truncate => true) - say - end - alias_method :display_tasks, :display_commands - - def show_modules #:nodoc: - info = [] - labels = %w(Modules Namespaces) - - info << labels - info << ["-" * labels[0].size, "-" * labels[1].size] - - thor_yaml.each do |name, hash| - info << [name, hash[:namespaces].join(", ")] - end - - print_table info - say "" - end -end diff --git a/lib/bundler/vendor/thor/lib/thor/shell.rb b/lib/bundler/vendor/thor/lib/thor/shell.rb deleted file mode 100644 index e945549324..0000000000 --- a/lib/bundler/vendor/thor/lib/thor/shell.rb +++ /dev/null @@ -1,81 +0,0 @@ -require "rbconfig" - -class Bundler::Thor - module Base - class << self - attr_writer :shell - - # Returns the shell used in all Bundler::Thor classes. If you are in a Unix platform - # it will use a colored log, otherwise it will use a basic one without color. - # - def shell - @shell ||= if ENV["THOR_SHELL"] && !ENV["THOR_SHELL"].empty? - Bundler::Thor::Shell.const_get(ENV["THOR_SHELL"]) - elsif RbConfig::CONFIG["host_os"] =~ /mswin|mingw/ && !ENV["ANSICON"] - Bundler::Thor::Shell::Basic - else - Bundler::Thor::Shell::Color - end - end - end - end - - module Shell - SHELL_DELEGATED_METHODS = [:ask, :error, :set_color, :yes?, :no?, :say, :say_status, :print_in_columns, :print_table, :print_wrapped, :file_collision, :terminal_width] - attr_writer :shell - - autoload :Basic, "bundler/vendor/thor/lib/thor/shell/basic" - autoload :Color, "bundler/vendor/thor/lib/thor/shell/color" - autoload :HTML, "bundler/vendor/thor/lib/thor/shell/html" - - # Add shell to initialize config values. - # - # ==== Configuration - # shell:: An instance of the shell to be used. - # - # ==== Examples - # - # class MyScript < Bundler::Thor - # argument :first, :type => :numeric - # end - # - # MyScript.new [1.0], { :foo => :bar }, :shell => Bundler::Thor::Shell::Basic.new - # - def initialize(args = [], options = {}, config = {}) - super - self.shell = config[:shell] - shell.base ||= self if shell.respond_to?(:base) - end - - # Holds the shell for the given Bundler::Thor instance. If no shell is given, - # it gets a default shell from Bundler::Thor::Base.shell. - def shell - @shell ||= Bundler::Thor::Base.shell.new - end - - # Common methods that are delegated to the shell. - SHELL_DELEGATED_METHODS.each do |method| - module_eval <<-METHOD, __FILE__, __LINE__ - def #{method}(*args,&block) - shell.#{method}(*args,&block) - end - METHOD - end - - # Yields the given block with padding. - def with_padding - shell.padding += 1 - yield - ensure - shell.padding -= 1 - end - - protected - - # Allow shell to be shared between invocations. - # - def _shared_configuration #:nodoc: - super.merge!(:shell => shell) - end - end -end diff --git a/lib/bundler/vendor/thor/lib/thor/shell/basic.rb b/lib/bundler/vendor/thor/lib/thor/shell/basic.rb deleted file mode 100644 index 5162390efd..0000000000 --- a/lib/bundler/vendor/thor/lib/thor/shell/basic.rb +++ /dev/null @@ -1,437 +0,0 @@ -class Bundler::Thor - module Shell - class Basic - attr_accessor :base - attr_reader :padding - - # Initialize base, mute and padding to nil. - # - def initialize #:nodoc: - @base = nil - @mute = false - @padding = 0 - @always_force = false - end - - # Mute everything that's inside given block - # - def mute - @mute = true - yield - ensure - @mute = false - end - - # Check if base is muted - # - def mute? - @mute - end - - # Sets the output padding, not allowing less than zero values. - # - def padding=(value) - @padding = [0, value].max - end - - # Sets the output padding while executing a block and resets it. - # - def indent(count = 1) - orig_padding = padding - self.padding = padding + count - yield - self.padding = orig_padding - end - - # Asks something to the user and receives a response. - # - # If asked to limit the correct responses, you can pass in an - # array of acceptable answers. If one of those is not supplied, - # they will be shown a message stating that one of those answers - # must be given and re-asked the question. - # - # If asking for sensitive information, the :echo option can be set - # to false to mask user input from $stdin. - # - # If the required input is a path, then set the path option to - # true. This will enable tab completion for file paths relative - # to the current working directory on systems that support - # Readline. - # - # ==== Example - # ask("What is your name?") - # - # ask("What is your favorite Neopolitan flavor?", :limited_to => ["strawberry", "chocolate", "vanilla"]) - # - # ask("What is your password?", :echo => false) - # - # ask("Where should the file be saved?", :path => true) - # - def ask(statement, *args) - options = args.last.is_a?(Hash) ? args.pop : {} - color = args.first - - if options[:limited_to] - ask_filtered(statement, color, options) - else - ask_simply(statement, color, options) - end - end - - # Say (print) something to the user. If the sentence ends with a whitespace - # or tab character, a new line is not appended (print + flush). Otherwise - # are passed straight to puts (behavior got from Highline). - # - # ==== Example - # say("I know you knew that.") - # - def say(message = "", color = nil, force_new_line = (message.to_s !~ /( |\t)\Z/)) - buffer = prepare_message(message, *color) - buffer << "\n" if force_new_line && !message.to_s.end_with?("\n") - - stdout.print(buffer) - stdout.flush - end - - # Say a status with the given color and appends the message. Since this - # method is used frequently by actions, it allows nil or false to be given - # in log_status, avoiding the message from being shown. If a Symbol is - # given in log_status, it's used as the color. - # - def say_status(status, message, log_status = true) - return if quiet? || log_status == false - spaces = " " * (padding + 1) - color = log_status.is_a?(Symbol) ? log_status : :green - - status = status.to_s.rjust(12) - status = set_color status, color, true if color - - buffer = "#{status}#{spaces}#{message}" - buffer = "#{buffer}\n" unless buffer.end_with?("\n") - - stdout.print(buffer) - stdout.flush - end - - # Make a question the to user and returns true if the user replies "y" or - # "yes". - # - def yes?(statement, color = nil) - !!(ask(statement, color, :add_to_history => false) =~ is?(:yes)) - end - - # Make a question the to user and returns true if the user replies "n" or - # "no". - # - def no?(statement, color = nil) - !!(ask(statement, color, :add_to_history => false) =~ is?(:no)) - end - - # Prints values in columns - # - # ==== Parameters - # Array[String, String, ...] - # - def print_in_columns(array) - return if array.empty? - colwidth = (array.map { |el| el.to_s.size }.max || 0) + 2 - array.each_with_index do |value, index| - # Don't output trailing spaces when printing the last column - if ((((index + 1) % (terminal_width / colwidth))).zero? && !index.zero?) || index + 1 == array.length - stdout.puts value - else - stdout.printf("%-#{colwidth}s", value) - end - end - end - - # Prints a table. - # - # ==== Parameters - # Array[Array[String, String, ...]] - # - # ==== Options - # indent:: Indent the first column by indent value. - # colwidth:: Force the first column to colwidth spaces wide. - # - def print_table(array, options = {}) # rubocop:disable MethodLength - return if array.empty? - - formats = [] - indent = options[:indent].to_i - colwidth = options[:colwidth] - options[:truncate] = terminal_width if options[:truncate] == true - - formats << "%-#{colwidth + 2}s".dup if colwidth - start = colwidth ? 1 : 0 - - colcount = array.max { |a, b| a.size <=> b.size }.size - - maximas = [] - - start.upto(colcount - 1) do |index| - maxima = array.map { |row| row[index] ? row[index].to_s.size : 0 }.max - maximas << maxima - formats << if index == colcount - 1 - # Don't output 2 trailing spaces when printing the last column - "%-s".dup - else - "%-#{maxima + 2}s".dup - end - end - - formats[0] = formats[0].insert(0, " " * indent) - formats << "%s" - - array.each do |row| - sentence = "".dup - - row.each_with_index do |column, index| - maxima = maximas[index] - - f = if column.is_a?(Numeric) - if index == row.size - 1 - # Don't output 2 trailing spaces when printing the last column - "%#{maxima}s" - else - "%#{maxima}s " - end - else - formats[index] - end - sentence << f % column.to_s - end - - sentence = truncate(sentence, options[:truncate]) if options[:truncate] - stdout.puts sentence - end - end - - # Prints a long string, word-wrapping the text to the current width of the - # terminal display. Ideal for printing heredocs. - # - # ==== Parameters - # String - # - # ==== Options - # indent:: Indent each line of the printed paragraph by indent value. - # - def print_wrapped(message, options = {}) - indent = options[:indent] || 0 - width = terminal_width - indent - paras = message.split("\n\n") - - paras.map! do |unwrapped| - unwrapped.strip.tr("\n", " ").squeeze(" ").gsub(/.{1,#{width}}(?:\s|\Z)/) { ($& + 5.chr).gsub(/\n\005/, "\n").gsub(/\005/, "\n") } - end - - paras.each do |para| - para.split("\n").each do |line| - stdout.puts line.insert(0, " " * indent) - end - stdout.puts unless para == paras.last - end - end - - # Deals with file collision and returns true if the file should be - # overwritten and false otherwise. If a block is given, it uses the block - # response as the content for the diff. - # - # ==== Parameters - # destination:: the destination file to solve conflicts - # block:: an optional block that returns the value to be used in diff - # - def file_collision(destination) - return true if @always_force - options = block_given? ? "[Ynaqdh]" : "[Ynaqh]" - - loop do - answer = ask( - %[Overwrite #{destination}? (enter "h" for help) #{options}], - :add_to_history => false - ) - - case answer - when nil - say "" - return true - when is?(:yes), is?(:force), "" - return true - when is?(:no), is?(:skip) - return false - when is?(:always) - return @always_force = true - when is?(:quit) - say "Aborting..." - raise SystemExit - when is?(:diff) - show_diff(destination, yield) if block_given? - say "Retrying..." - else - say file_collision_help - end - end - end - - # This code was copied from Rake, available under MIT-LICENSE - # Copyright (c) 2003, 2004 Jim Weirich - def terminal_width - result = if ENV["THOR_COLUMNS"] - ENV["THOR_COLUMNS"].to_i - else - unix? ? dynamic_width : 80 - end - result < 10 ? 80 : result - rescue - 80 - end - - # Called if something goes wrong during the execution. This is used by Bundler::Thor - # internally and should not be used inside your scripts. If something went - # wrong, you can always raise an exception. If you raise a Bundler::Thor::Error, it - # will be rescued and wrapped in the method below. - # - def error(statement) - stderr.puts statement - end - - # Apply color to the given string with optional bold. Disabled in the - # Bundler::Thor::Shell::Basic class. - # - def set_color(string, *) #:nodoc: - string - end - - protected - - def prepare_message(message, *color) - spaces = " " * padding - spaces + set_color(message.to_s, *color) - end - - def can_display_colors? - false - end - - def lookup_color(color) - return color unless color.is_a?(Symbol) - self.class.const_get(color.to_s.upcase) - end - - def stdout - $stdout - end - - def stderr - $stderr - end - - def is?(value) #:nodoc: - value = value.to_s - - if value.size == 1 - /\A#{value}\z/i - else - /\A(#{value}|#{value[0, 1]})\z/i - end - end - - def file_collision_help #:nodoc: - <<-HELP - Y - yes, overwrite - n - no, do not overwrite - a - all, overwrite this and all others - q - quit, abort - d - diff, show the differences between the old and the new - h - help, show this help - HELP - end - - def show_diff(destination, content) #:nodoc: - diff_cmd = ENV["THOR_DIFF"] || ENV["RAILS_DIFF"] || "diff -u" - - require "tempfile" - Tempfile.open(File.basename(destination), File.dirname(destination)) do |temp| - temp.write content - temp.rewind - system %(#{diff_cmd} "#{destination}" "#{temp.path}") - end - end - - def quiet? #:nodoc: - mute? || (base && base.options[:quiet]) - end - - # Calculate the dynamic width of the terminal - def dynamic_width - @dynamic_width ||= (dynamic_width_stty.nonzero? || dynamic_width_tput) - end - - def dynamic_width_stty - `stty size 2>/dev/null`.split[1].to_i - end - - def dynamic_width_tput - `tput cols 2>/dev/null`.to_i - end - - def unix? - RUBY_PLATFORM =~ /(aix|darwin|linux|(net|free|open)bsd|cygwin|solaris|irix|hpux)/i - end - - def truncate(string, width) - as_unicode do - chars = string.chars.to_a - if chars.length <= width - chars.join - else - chars[0, width - 3].join + "..." - end - end - end - - if "".respond_to?(:encode) - def as_unicode - yield - end - else - def as_unicode - old = $KCODE - $KCODE = "U" - yield - ensure - $KCODE = old - end - end - - def ask_simply(statement, color, options) - default = options[:default] - message = [statement, ("(#{default})" if default), nil].uniq.join(" ") - message = prepare_message(message, *color) - result = Bundler::Thor::LineEditor.readline(message, options) - - return unless result - - result = result.strip - - if default && result == "" - default - else - result - end - end - - def ask_filtered(statement, color, options) - answer_set = options[:limited_to] - correct_answer = nil - until correct_answer - answers = answer_set.join(", ") - answer = ask_simply("#{statement} [#{answers}]", color, options) - correct_answer = answer_set.include?(answer) ? answer : nil - say("Your response must be one of: [#{answers}]. Please try again.") unless correct_answer - end - correct_answer - end - end - end -end diff --git a/lib/bundler/vendor/thor/lib/thor/shell/color.rb b/lib/bundler/vendor/thor/lib/thor/shell/color.rb deleted file mode 100644 index da289cb50c..0000000000 --- a/lib/bundler/vendor/thor/lib/thor/shell/color.rb +++ /dev/null @@ -1,149 +0,0 @@ -require "bundler/vendor/thor/lib/thor/shell/basic" - -class Bundler::Thor - module Shell - # Inherit from Bundler::Thor::Shell::Basic and add set_color behavior. Check - # Bundler::Thor::Shell::Basic to see all available methods. - # - class Color < Basic - # Embed in a String to clear all previous ANSI sequences. - CLEAR = "\e[0m" - # The start of an ANSI bold sequence. - BOLD = "\e[1m" - - # Set the terminal's foreground ANSI color to black. - BLACK = "\e[30m" - # Set the terminal's foreground ANSI color to red. - RED = "\e[31m" - # Set the terminal's foreground ANSI color to green. - GREEN = "\e[32m" - # Set the terminal's foreground ANSI color to yellow. - YELLOW = "\e[33m" - # Set the terminal's foreground ANSI color to blue. - BLUE = "\e[34m" - # Set the terminal's foreground ANSI color to magenta. - MAGENTA = "\e[35m" - # Set the terminal's foreground ANSI color to cyan. - CYAN = "\e[36m" - # Set the terminal's foreground ANSI color to white. - WHITE = "\e[37m" - - # Set the terminal's background ANSI color to black. - ON_BLACK = "\e[40m" - # Set the terminal's background ANSI color to red. - ON_RED = "\e[41m" - # Set the terminal's background ANSI color to green. - ON_GREEN = "\e[42m" - # Set the terminal's background ANSI color to yellow. - ON_YELLOW = "\e[43m" - # Set the terminal's background ANSI color to blue. - ON_BLUE = "\e[44m" - # Set the terminal's background ANSI color to magenta. - ON_MAGENTA = "\e[45m" - # Set the terminal's background ANSI color to cyan. - ON_CYAN = "\e[46m" - # Set the terminal's background ANSI color to white. - ON_WHITE = "\e[47m" - - # Set color by using a string or one of the defined constants. If a third - # option is set to true, it also adds bold to the string. This is based - # on Highline implementation and it automatically appends CLEAR to the end - # of the returned String. - # - # Pass foreground, background and bold options to this method as - # symbols. - # - # Example: - # - # set_color "Hi!", :red, :on_white, :bold - # - # The available colors are: - # - # :bold - # :black - # :red - # :green - # :yellow - # :blue - # :magenta - # :cyan - # :white - # :on_black - # :on_red - # :on_green - # :on_yellow - # :on_blue - # :on_magenta - # :on_cyan - # :on_white - def set_color(string, *colors) - if colors.compact.empty? || !can_display_colors? - string - elsif colors.all? { |color| color.is_a?(Symbol) || color.is_a?(String) } - ansi_colors = colors.map { |color| lookup_color(color) } - "#{ansi_colors.join}#{string}#{CLEAR}" - else - # The old API was `set_color(color, bold=boolean)`. We - # continue to support the old API because you should never - # break old APIs unnecessarily :P - foreground, bold = colors - foreground = self.class.const_get(foreground.to_s.upcase) if foreground.is_a?(Symbol) - - bold = bold ? BOLD : "" - "#{bold}#{foreground}#{string}#{CLEAR}" - end - end - - protected - - def can_display_colors? - stdout.tty? - end - - # Overwrite show_diff to show diff with colors if Diff::LCS is - # available. - # - def show_diff(destination, content) #:nodoc: - if diff_lcs_loaded? && ENV["THOR_DIFF"].nil? && ENV["RAILS_DIFF"].nil? - actual = File.binread(destination).to_s.split("\n") - content = content.to_s.split("\n") - - Diff::LCS.sdiff(actual, content).each do |diff| - output_diff_line(diff) - end - else - super - end - end - - def output_diff_line(diff) #:nodoc: - case diff.action - when "-" - say "- #{diff.old_element.chomp}", :red, true - when "+" - say "+ #{diff.new_element.chomp}", :green, true - when "!" - say "- #{diff.old_element.chomp}", :red, true - say "+ #{diff.new_element.chomp}", :green, true - else - say " #{diff.old_element.chomp}", nil, true - end - end - - # Check if Diff::LCS is loaded. If it is, use it to create pretty output - # for diff. - # - def diff_lcs_loaded? #:nodoc: - return true if defined?(Diff::LCS) - return @diff_lcs_loaded unless @diff_lcs_loaded.nil? - - @diff_lcs_loaded = begin - require "diff/lcs" - true - rescue LoadError - false - end - end - end - end -end diff --git a/lib/bundler/vendor/thor/lib/thor/shell/html.rb b/lib/bundler/vendor/thor/lib/thor/shell/html.rb deleted file mode 100644 index 83d2054988..0000000000 --- a/lib/bundler/vendor/thor/lib/thor/shell/html.rb +++ /dev/null @@ -1,126 +0,0 @@ -require "bundler/vendor/thor/lib/thor/shell/basic" - -class Bundler::Thor - module Shell - # Inherit from Bundler::Thor::Shell::Basic and add set_color behavior. Check - # Bundler::Thor::Shell::Basic to see all available methods. - # - class HTML < Basic - # The start of an HTML bold sequence. - BOLD = "font-weight: bold" - - # Set the terminal's foreground HTML color to black. - BLACK = "color: black" - # Set the terminal's foreground HTML color to red. - RED = "color: red" - # Set the terminal's foreground HTML color to green. - GREEN = "color: green" - # Set the terminal's foreground HTML color to yellow. - YELLOW = "color: yellow" - # Set the terminal's foreground HTML color to blue. - BLUE = "color: blue" - # Set the terminal's foreground HTML color to magenta. - MAGENTA = "color: magenta" - # Set the terminal's foreground HTML color to cyan. - CYAN = "color: cyan" - # Set the terminal's foreground HTML color to white. - WHITE = "color: white" - - # Set the terminal's background HTML color to black. - ON_BLACK = "background-color: black" - # Set the terminal's background HTML color to red. - ON_RED = "background-color: red" - # Set the terminal's background HTML color to green. - ON_GREEN = "background-color: green" - # Set the terminal's background HTML color to yellow. - ON_YELLOW = "background-color: yellow" - # Set the terminal's background HTML color to blue. - ON_BLUE = "background-color: blue" - # Set the terminal's background HTML color to magenta. - ON_MAGENTA = "background-color: magenta" - # Set the terminal's background HTML color to cyan. - ON_CYAN = "background-color: cyan" - # Set the terminal's background HTML color to white. - ON_WHITE = "background-color: white" - - # Set color by using a string or one of the defined constants. If a third - # option is set to true, it also adds bold to the string. This is based - # on Highline implementation and it automatically appends CLEAR to the end - # of the returned String. - # - def set_color(string, *colors) - if colors.all? { |color| color.is_a?(Symbol) || color.is_a?(String) } - html_colors = colors.map { |color| lookup_color(color) } - "#{string}" - else - color, bold = colors - html_color = self.class.const_get(color.to_s.upcase) if color.is_a?(Symbol) - styles = [html_color] - styles << BOLD if bold - "#{string}" - end - end - - # Ask something to the user and receives a response. - # - # ==== Example - # ask("What is your name?") - # - # TODO: Implement #ask for Bundler::Thor::Shell::HTML - def ask(statement, color = nil) - raise NotImplementedError, "Implement #ask for Bundler::Thor::Shell::HTML" - end - - protected - - def can_display_colors? - true - end - - # Overwrite show_diff to show diff with colors if Diff::LCS is - # available. - # - def show_diff(destination, content) #:nodoc: - if diff_lcs_loaded? && ENV["THOR_DIFF"].nil? && ENV["RAILS_DIFF"].nil? - actual = File.binread(destination).to_s.split("\n") - content = content.to_s.split("\n") - - Diff::LCS.sdiff(actual, content).each do |diff| - output_diff_line(diff) - end - else - super - end - end - - def output_diff_line(diff) #:nodoc: - case diff.action - when "-" - say "- #{diff.old_element.chomp}", :red, true - when "+" - say "+ #{diff.new_element.chomp}", :green, true - when "!" - say "- #{diff.old_element.chomp}", :red, true - say "+ #{diff.new_element.chomp}", :green, true - else - say " #{diff.old_element.chomp}", nil, true - end - end - - # Check if Diff::LCS is loaded. If it is, use it to create pretty output - # for diff. - # - def diff_lcs_loaded? #:nodoc: - return true if defined?(Diff::LCS) - return @diff_lcs_loaded unless @diff_lcs_loaded.nil? - - @diff_lcs_loaded = begin - require "diff/lcs" - true - rescue LoadError - false - end - end - end - end -end diff --git a/lib/bundler/vendor/thor/lib/thor/util.rb b/lib/bundler/vendor/thor/lib/thor/util.rb deleted file mode 100644 index 5d03177a28..0000000000 --- a/lib/bundler/vendor/thor/lib/thor/util.rb +++ /dev/null @@ -1,268 +0,0 @@ -require "rbconfig" - -class Bundler::Thor - module Sandbox #:nodoc: - end - - # This module holds several utilities: - # - # 1) Methods to convert thor namespaces to constants and vice-versa. - # - # Bundler::Thor::Util.namespace_from_thor_class(Foo::Bar::Baz) #=> "foo:bar:baz" - # - # 2) Loading thor files and sandboxing: - # - # Bundler::Thor::Util.load_thorfile("~/.thor/foo") - # - module Util - class << self - # Receives a namespace and search for it in the Bundler::Thor::Base subclasses. - # - # ==== Parameters - # namespace:: The namespace to search for. - # - def find_by_namespace(namespace) - namespace = "default#{namespace}" if namespace.empty? || namespace =~ /^:/ - Bundler::Thor::Base.subclasses.detect { |klass| klass.namespace == namespace } - end - - # Receives a constant and converts it to a Bundler::Thor namespace. Since Bundler::Thor - # commands can be added to a sandbox, this method is also responsable for - # removing the sandbox namespace. - # - # This method should not be used in general because it's used to deal with - # older versions of Bundler::Thor. On current versions, if you need to get the - # namespace from a class, just call namespace on it. - # - # ==== Parameters - # constant:: The constant to be converted to the thor path. - # - # ==== Returns - # String:: If we receive Foo::Bar::Baz it returns "foo:bar:baz" - # - def namespace_from_thor_class(constant) - constant = constant.to_s.gsub(/^Bundler::Thor::Sandbox::/, "") - constant = snake_case(constant).squeeze(":") - constant - end - - # Given the contents, evaluate it inside the sandbox and returns the - # namespaces defined in the sandbox. - # - # ==== Parameters - # contents - # - # ==== Returns - # Array[Object] - # - def namespaces_in_content(contents, file = __FILE__) - old_constants = Bundler::Thor::Base.subclasses.dup - Bundler::Thor::Base.subclasses.clear - - load_thorfile(file, contents) - - new_constants = Bundler::Thor::Base.subclasses.dup - Bundler::Thor::Base.subclasses.replace(old_constants) - - new_constants.map!(&:namespace) - new_constants.compact! - new_constants - end - - # Returns the thor classes declared inside the given class. - # - def thor_classes_in(klass) - stringfied_constants = klass.constants.map(&:to_s) - Bundler::Thor::Base.subclasses.select do |subclass| - next unless subclass.name - stringfied_constants.include?(subclass.name.gsub("#{klass.name}::", "")) - end - end - - # Receives a string and convert it to snake case. SnakeCase returns snake_case. - # - # ==== Parameters - # String - # - # ==== Returns - # String - # - def snake_case(str) - return str.downcase if str =~ /^[A-Z_]+$/ - str.gsub(/\B[A-Z]/, '_\&').squeeze("_") =~ /_*(.*)/ - $+.downcase - end - - # Receives a string and convert it to camel case. camel_case returns CamelCase. - # - # ==== Parameters - # String - # - # ==== Returns - # String - # - def camel_case(str) - return str if str !~ /_/ && str =~ /[A-Z]+.*/ - str.split("_").map(&:capitalize).join - end - - # Receives a namespace and tries to retrieve a Bundler::Thor or Bundler::Thor::Group class - # from it. It first searches for a class using the all the given namespace, - # if it's not found, removes the highest entry and searches for the class - # again. If found, returns the highest entry as the class name. - # - # ==== Examples - # - # class Foo::Bar < Bundler::Thor - # def baz - # end - # end - # - # class Baz::Foo < Bundler::Thor::Group - # end - # - # Bundler::Thor::Util.namespace_to_thor_class("foo:bar") #=> Foo::Bar, nil # will invoke default command - # Bundler::Thor::Util.namespace_to_thor_class("baz:foo") #=> Baz::Foo, nil - # Bundler::Thor::Util.namespace_to_thor_class("foo:bar:baz") #=> Foo::Bar, "baz" - # - # ==== Parameters - # namespace - # - def find_class_and_command_by_namespace(namespace, fallback = true) - if namespace.include?(":") # look for a namespaced command - pieces = namespace.split(":") - command = pieces.pop - klass = Bundler::Thor::Util.find_by_namespace(pieces.join(":")) - end - unless klass # look for a Bundler::Thor::Group with the right name - klass = Bundler::Thor::Util.find_by_namespace(namespace) - command = nil - end - if !klass && fallback # try a command in the default namespace - command = namespace - klass = Bundler::Thor::Util.find_by_namespace("") - end - [klass, command] - end - alias_method :find_class_and_task_by_namespace, :find_class_and_command_by_namespace - - # Receives a path and load the thor file in the path. The file is evaluated - # inside the sandbox to avoid namespacing conflicts. - # - def load_thorfile(path, content = nil, debug = false) - content ||= File.binread(path) - - begin - Bundler::Thor::Sandbox.class_eval(content, path) - rescue StandardError => e - $stderr.puts("WARNING: unable to load thorfile #{path.inspect}: #{e.message}") - if debug - $stderr.puts(*e.backtrace) - else - $stderr.puts(e.backtrace.first) - end - end - end - - def user_home - @@user_home ||= if ENV["HOME"] - ENV["HOME"] - elsif ENV["USERPROFILE"] - ENV["USERPROFILE"] - elsif ENV["HOMEDRIVE"] && ENV["HOMEPATH"] - File.join(ENV["HOMEDRIVE"], ENV["HOMEPATH"]) - elsif ENV["APPDATA"] - ENV["APPDATA"] - else - begin - File.expand_path("~") - rescue - if File::ALT_SEPARATOR - "C:/" - else - "/" - end - end - end - end - - # Returns the root where thor files are located, depending on the OS. - # - def thor_root - File.join(user_home, ".thor").tr('\\', "/") - end - - # Returns the files in the thor root. On Windows thor_root will be something - # like this: - # - # C:\Documents and Settings\james\.thor - # - # If we don't #gsub the \ character, Dir.glob will fail. - # - def thor_root_glob - files = Dir["#{escape_globs(thor_root)}/*"] - - files.map! do |file| - File.directory?(file) ? File.join(file, "main.thor") : file - end - end - - # Where to look for Bundler::Thor files. - # - def globs_for(path) - path = escape_globs(path) - ["#{path}/Bundler::Thorfile", "#{path}/*.thor", "#{path}/tasks/*.thor", "#{path}/lib/tasks/*.thor"] - end - - # Return the path to the ruby interpreter taking into account multiple - # installations and windows extensions. - # - def ruby_command - @ruby_command ||= begin - ruby_name = RbConfig::CONFIG["ruby_install_name"] - ruby = File.join(RbConfig::CONFIG["bindir"], ruby_name) - ruby << RbConfig::CONFIG["EXEEXT"] - - # avoid using different name than ruby (on platforms supporting links) - if ruby_name != "ruby" && File.respond_to?(:readlink) - begin - alternate_ruby = File.join(RbConfig::CONFIG["bindir"], "ruby") - alternate_ruby << RbConfig::CONFIG["EXEEXT"] - - # ruby is a symlink - if File.symlink? alternate_ruby - linked_ruby = File.readlink alternate_ruby - - # symlink points to 'ruby_install_name' - ruby = alternate_ruby if linked_ruby == ruby_name || linked_ruby == ruby - end - rescue NotImplementedError # rubocop:disable HandleExceptions - # just ignore on windows - end - end - - # escape string in case path to ruby executable contain spaces. - ruby.sub!(/.*\s.*/m, '"\&"') - ruby - end - end - - # Returns a string that has had any glob characters escaped. - # The glob characters are `* ? { } [ ]`. - # - # ==== Examples - # - # Bundler::Thor::Util.escape_globs('[apps]') # => '\[apps\]' - # - # ==== Parameters - # String - # - # ==== Returns - # String - # - def escape_globs(path) - path.to_s.gsub(/[*?{}\[\]]/, '\\\\\\&') - end - end - end -end diff --git a/lib/bundler/vendor/thor/lib/thor/version.rb b/lib/bundler/vendor/thor/lib/thor/version.rb deleted file mode 100644 index df8f18821a..0000000000 --- a/lib/bundler/vendor/thor/lib/thor/version.rb +++ /dev/null @@ -1,3 +0,0 @@ -class Bundler::Thor - VERSION = "0.20.0" -end diff --git a/lib/bundler/vendored_fileutils.rb b/lib/bundler/vendored_fileutils.rb deleted file mode 100644 index d14e98baf7..0000000000 --- a/lib/bundler/vendored_fileutils.rb +++ /dev/null @@ -1,9 +0,0 @@ -# frozen_string_literal: true - -module Bundler; end -if RUBY_VERSION >= "2.4" - require "bundler/vendor/fileutils/lib/fileutils" -else - # the version we vendor is 2.4+ - require "fileutils" -end diff --git a/lib/bundler/vendored_molinillo.rb b/lib/bundler/vendored_molinillo.rb deleted file mode 100644 index 061b634f72..0000000000 --- a/lib/bundler/vendored_molinillo.rb +++ /dev/null @@ -1,4 +0,0 @@ -# frozen_string_literal: true - -module Bundler; end -require "bundler/vendor/molinillo/lib/molinillo" diff --git a/lib/bundler/vendored_persistent.rb b/lib/bundler/vendored_persistent.rb deleted file mode 100644 index de9c42fcc1..0000000000 --- a/lib/bundler/vendored_persistent.rb +++ /dev/null @@ -1,52 +0,0 @@ -# frozen_string_literal: true - -# We forcibly require OpenSSL, because net/http/persistent will only autoload -# it. On some Rubies, autoload fails but explicit require succeeds. -begin - require "openssl" -rescue LoadError - # some Ruby builds don't have OpenSSL -end -module Bundler - module Persistent - module Net - module HTTP - end - end - end -end -require "bundler/vendor/net-http-persistent/lib/net/http/persistent" - -module Bundler - class PersistentHTTP < Persistent::Net::HTTP::Persistent - def connection_for(uri) - connection = super - warn_old_tls_version_rubygems_connection(uri, connection) - connection - end - - def warn_old_tls_version_rubygems_connection(uri, connection) - return unless connection.use_ssl? - return unless (uri.host || "").end_with?("rubygems.org") - - socket = connection.instance_variable_get(:@socket) - return unless socket - socket_io = socket.io - return unless socket_io.respond_to?(:ssl_version) - ssl_version = socket_io.ssl_version - - case ssl_version - when /TLSv([\d\.]+)/ - version = Gem::Version.new($1) - if version < Gem::Version.new("1.2") - Bundler.ui.warn \ - "Warning: Your Ruby version is compiled against a copy of OpenSSL that is very old. " \ - "Starting in January 2018, RubyGems.org will refuse connection requests from these " \ - "very old versions of OpenSSL. If you will need to continue installing gems after " \ - "January 2018, please follow this guide to upgrade: http://ruby.to/tls-outdated.", - :wrap => true - end - end - end - end -end diff --git a/lib/bundler/vendored_thor.rb b/lib/bundler/vendored_thor.rb deleted file mode 100644 index 8cca090f55..0000000000 --- a/lib/bundler/vendored_thor.rb +++ /dev/null @@ -1,8 +0,0 @@ -# frozen_string_literal: true - -module Bundler - def self.require_thor_actions - Kernel.send(:require, "bundler/vendor/thor/lib/thor/actions") - end -end -require "bundler/vendor/thor/lib/thor" diff --git a/lib/bundler/version.rb b/lib/bundler/version.rb deleted file mode 100644 index 87b648681a..0000000000 --- a/lib/bundler/version.rb +++ /dev/null @@ -1,28 +0,0 @@ -# frozen_string_literal: false - -# Ruby 1.9.3 and old RubyGems don't play nice with frozen version strings -# rubocop:disable MutableConstant - -module Bundler - # We're doing this because we might write tests that deal - # with other versions of bundler and we are unsure how to - # handle this better. - VERSION = "1.16.1" unless defined?(::Bundler::VERSION) - - def self.overwrite_loaded_gem_version - begin - require "rubygems" - rescue LoadError - return - end - return unless bundler_spec = Gem.loaded_specs["bundler"] - return if bundler_spec.version == VERSION - bundler_spec.version = Bundler::VERSION - end - private_class_method :overwrite_loaded_gem_version - overwrite_loaded_gem_version - - def self.bundler_major_version - @bundler_major_version ||= VERSION.split(".").first.to_i - end -end diff --git a/lib/bundler/version_ranges.rb b/lib/bundler/version_ranges.rb deleted file mode 100644 index ec25716cde..0000000000 --- a/lib/bundler/version_ranges.rb +++ /dev/null @@ -1,76 +0,0 @@ -# frozen_string_literal: true - -module Bundler - module VersionRanges - NEq = Struct.new(:version) - ReqR = Struct.new(:left, :right) - class ReqR - Endpoint = Struct.new(:version, :inclusive) - def to_s - "#{left.inclusive ? "[" : "("}#{left.version}, #{right.version}#{right.inclusive ? "]" : ")"}" - end - INFINITY = Object.new.freeze - ZERO = Gem::Version.new("0.a") - - def cover?(v) - return false if left.inclusive && left.version > v - return false if !left.inclusive && left.version >= v - - if right.version != INFINITY - return false if right.inclusive && right.version < v - return false if !right.inclusive && right.version <= v - end - - true - end - - def empty? - left.version == right.version && !(left.inclusive && right.inclusive) - end - - def single? - left.version == right.version - end - - UNIVERSAL = ReqR.new(ReqR::Endpoint.new(Gem::Version.new("0.a"), true), ReqR::Endpoint.new(ReqR::INFINITY, false)).freeze - end - - def self.for_many(requirements) - requirements = requirements.map(&:requirements).flatten(1).map {|r| r.join(" ") } - requirements << ">= 0.a" if requirements.empty? - requirement = Gem::Requirement.new(requirements) - self.for(requirement) - end - - def self.for(requirement) - ranges = requirement.requirements.map do |op, v| - case op - when "=" then ReqR.new(ReqR::Endpoint.new(v, true), ReqR::Endpoint.new(v, true)) - when "!=" then NEq.new(v) - when ">=" then ReqR.new(ReqR::Endpoint.new(v, true), ReqR::Endpoint.new(ReqR::INFINITY, false)) - when ">" then ReqR.new(ReqR::Endpoint.new(v, false), ReqR::Endpoint.new(ReqR::INFINITY, false)) - when "<" then ReqR.new(ReqR::Endpoint.new(ReqR::ZERO, true), ReqR::Endpoint.new(v, false)) - when "<=" then ReqR.new(ReqR::Endpoint.new(ReqR::ZERO, true), ReqR::Endpoint.new(v, true)) - when "~>" then ReqR.new(ReqR::Endpoint.new(v, true), ReqR::Endpoint.new(v.bump, false)) - else raise "unknown version op #{op} in requirement #{requirement}" - end - end.uniq - ranges, neqs = ranges.partition {|r| !r.is_a?(NEq) } - - [ranges.sort_by {|range| [range.left.version, range.left.inclusive ? 0 : 1] }, neqs.map(&:version)] - end - - def self.empty?(ranges, neqs) - !ranges.reduce(ReqR::UNIVERSAL) do |last_range, curr_range| - next false unless last_range - next false if curr_range.single? && neqs.include?(curr_range.left.version) - next curr_range if last_range.right.version == ReqR::INFINITY - case last_range.right.version <=> curr_range.left.version - when 1 then next curr_range - when 0 then next(last_range.right.inclusive && curr_range.left.inclusive && !neqs.include?(curr_range.left.version) && curr_range) - when -1 then next false - end - end - end - end -end diff --git a/lib/bundler/vlad.rb b/lib/bundler/vlad.rb deleted file mode 100644 index 68181e7db8..0000000000 --- a/lib/bundler/vlad.rb +++ /dev/null @@ -1,17 +0,0 @@ -# frozen_string_literal: true - -require "bundler/shared_helpers" -Bundler::SharedHelpers.major_deprecation 2, - "The Bundler task for Vlad" - -# Vlad task for Bundler. -# -# Add "require 'bundler/vlad'" in your Vlad deploy.rb, and -# include the vlad:bundle:install task in your vlad:deploy task. -require "bundler/deployment" - -include Rake::DSL if defined? Rake::DSL - -namespace :vlad do - Bundler::Deployment.define_task(Rake::RemoteTask, :remote_task, :roles => :app) -end diff --git a/lib/bundler/worker.rb b/lib/bundler/worker.rb deleted file mode 100644 index e91cfa7805..0000000000 --- a/lib/bundler/worker.rb +++ /dev/null @@ -1,106 +0,0 @@ -# frozen_string_literal: true - -require "thread" - -module Bundler - class Worker - POISON = Object.new - - class WrappedException < StandardError - attr_reader :exception - def initialize(exn) - @exception = exn - end - end - - # @return [String] the name of the worker - attr_reader :name - - # Creates a worker pool of specified size - # - # @param size [Integer] Size of pool - # @param name [String] name the name of the worker - # @param func [Proc] job to run in inside the worker pool - def initialize(size, name, func) - @name = name - @request_queue = Queue.new - @response_queue = Queue.new - @func = func - @size = size - @threads = nil - SharedHelpers.trap("INT") { abort_threads } - end - - # Enqueue a request to be executed in the worker pool - # - # @param obj [String] mostly it is name of spec that should be downloaded - def enq(obj) - create_threads unless @threads - @request_queue.enq obj - end - - # Retrieves results of job function being executed in worker pool - def deq - result = @response_queue.deq - raise result.exception if result.is_a?(WrappedException) - result - end - - def stop - stop_threads - end - - private - - def process_queue(i) - loop do - obj = @request_queue.deq - break if obj.equal? POISON - @response_queue.enq apply_func(obj, i) - end - end - - def apply_func(obj, i) - @func.call(obj, i) - rescue Exception => e - WrappedException.new(e) - end - - # Stop the worker threads by sending a poison object down the request queue - # so as worker threads after retrieving it, shut themselves down - def stop_threads - return unless @threads - @threads.each { @request_queue.enq POISON } - @threads.each(&:join) - @threads = nil - end - - def abort_threads - return unless @threads - Bundler.ui.debug("\n#{caller.join("\n")}") - @threads.each(&:exit) - exit 1 - end - - def create_threads - creation_errors = [] - - @threads = Array.new(@size) do |i| - begin - Thread.start { process_queue(i) }.tap do |thread| - thread.name = "#{name} Worker ##{i}" if thread.respond_to?(:name=) - end - rescue ThreadError => e - creation_errors << e - nil - end - end.compact - - return if creation_errors.empty? - - message = "Failed to create threads for the #{name} worker: #{creation_errors.map(&:to_s).uniq.join(", ")}" - raise ThreadCreationError, message if @threads.empty? - Bundler.ui.info message - end - end -end diff --git a/lib/bundler/yaml_serializer.rb b/lib/bundler/yaml_serializer.rb deleted file mode 100644 index 0fd81c40ef..0000000000 --- a/lib/bundler/yaml_serializer.rb +++ /dev/null @@ -1,90 +0,0 @@ -# frozen_string_literal: true - -module Bundler - # A stub yaml serializer that can handle only hashes and strings (as of now). - module YAMLSerializer - module_function - - def dump(hash) - yaml = String.new("---") - yaml << dump_hash(hash) - end - - def dump_hash(hash) - yaml = String.new("\n") - hash.each do |k, v| - yaml << k << ":" - if v.is_a?(Hash) - yaml << dump_hash(v).gsub(/^(?!$)/, " ") # indent all non-empty lines - elsif v.is_a?(Array) # Expected to be array of strings - yaml << "\n- " << v.map {|s| s.to_s.gsub(/\s+/, " ").inspect }.join("\n- ") << "\n" - else - yaml << " " << v.to_s.gsub(/\s+/, " ").inspect << "\n" - end - end - yaml - end - - ARRAY_REGEX = / - ^ - (?:[ ]*-[ ]) # '- ' before array items - (['"]?) # optional opening quote - (.*) # value - \1 # matching closing quote - $ - /xo - - HASH_REGEX = / - ^ - ([ ]*) # indentations - (.+) # key - (?::(?=(?:\s|$))) # : (without the lookahead the #key includes this when : is present in value) - [ ]? - (?: !\s)? # optional exclamation mark found with ruby 1.9.3 - (['"]?) # optional opening quote - (.*) # value - \3 # matching closing quote - $ - /xo - - def load(str) - res = {} - stack = [res] - last_hash = nil - last_empty_key = nil - str.split(/\r?\n/).each do |line| - if match = HASH_REGEX.match(line) - indent, key, quote, val = match.captures - key = convert_to_backward_compatible_key(key) - depth = indent.scan(/ /).length - if quote.empty? && val.empty? - new_hash = {} - stack[depth][key] = new_hash - stack[depth + 1] = new_hash - last_empty_key = key - last_hash = stack[depth] - else - stack[depth][key] = val - end - elsif match = ARRAY_REGEX.match(line) - _, val = match.captures - last_hash[last_empty_key] = [] unless last_hash[last_empty_key].is_a?(Array) - - last_hash[last_empty_key].push(val) - end - end - res - end - - # for settings' keys - def convert_to_backward_compatible_key(key) - key = "#{key}/" if key =~ /https?:/i && key !~ %r{/\Z} - key = key.gsub(".", "__") if key.include?(".") - key - end - - class << self - private :dump_hash, :convert_to_backward_compatible_key - end - end -end diff --git a/lib/rubygems.rb b/lib/rubygems.rb index b7097f22cd..0475ced164 100644 --- a/lib/rubygems.rb +++ b/lib/rubygems.rb @@ -176,7 +176,7 @@ module Gem write_binary_errors end.freeze - USE_BUNDLER_FOR_GEMDEPS = true # :nodoc: + USE_BUNDLER_FOR_GEMDEPS = false # :nodoc: @@win_platform = nil diff --git a/lib/rubygems/test_case.rb b/lib/rubygems/test_case.rb index 82afb8a068..f7f216e5e3 100644 --- a/lib/rubygems/test_case.rb +++ b/lib/rubygems/test_case.rb @@ -25,7 +25,9 @@ unless Gem::Dependency.new('rdoc', '>= 3.10').matching_specs.empty? gem 'json' end -require 'bundler' +if Gem::USE_BUNDLER_FOR_GEMDEPS + require 'bundler' +end require 'minitest/autorun' require 'rubygems/deprecate' @@ -235,7 +237,9 @@ class Gem::TestCase < MiniTest::Unit::TestCase @current_dir = Dir.pwd @fetcher = nil - Bundler.ui = Bundler::UI::Silent.new + if Gem::USE_BUNDLER_FOR_GEMDEPS + Bundler.ui = Bundler::UI::Silent.new + end @back_ui = Gem::DefaultUserInteraction.ui @ui = Gem::MockGemUi.new # This needs to be a new instance since we call use_ui(@ui) when we want to @@ -331,7 +335,9 @@ class Gem::TestCase < MiniTest::Unit::TestCase Gem.loaded_specs.clear Gem.clear_default_specs Gem::Specification.unresolved_deps.clear - Bundler.reset! + if Gem::USE_BUNDLER_FOR_GEMDEPS + Bundler.reset! + end Gem.configuration.verbose = true Gem.configuration.update_sources = true diff --git a/spec/README.md b/spec/README.md index 23fc7507c3..60d4849f9c 100644 --- a/spec/README.md +++ b/spec/README.md @@ -1,14 +1,3 @@ -# spec/bundler - -spec/bundler is rspec examples for bundler library(lib/bundler.rb, lib/bundler/*). - -## Running spec/bundler - -To run rspec for bundler: -```bash -make test-bundler -``` - # spec/ruby ruby/spec (https://github.com/ruby/spec/) is diff --git a/spec/bundler/bundler/bundler_spec.rb b/spec/bundler/bundler/bundler_spec.rb deleted file mode 100644 index 19e3f0336f..0000000000 --- a/spec/bundler/bundler/bundler_spec.rb +++ /dev/null @@ -1,230 +0,0 @@ -# encoding: utf-8 -# frozen_string_literal: true - -require "bundler" - -RSpec.describe Bundler do - describe "#load_gemspec_uncached" do - let(:app_gemspec_path) { tmp("test.gemspec") } - subject { Bundler.load_gemspec_uncached(app_gemspec_path) } - - context "with incorrect YAML file" do - before do - File.open(app_gemspec_path, "wb") do |f| - f.write strip_whitespace(<<-GEMSPEC) - --- - {:!00 ao=gu\g1= 7~f - GEMSPEC - end - end - - it "catches YAML syntax errors" do - expect { subject }.to raise_error(Bundler::GemspecError, /error while loading `test.gemspec`/) - end - - context "on Rubies with a settable YAML engine", :if => defined?(YAML::ENGINE) do - context "with Syck as YAML::Engine" do - it "raises a GemspecError after YAML load throws ArgumentError" do - orig_yamler = YAML::ENGINE.yamler - YAML::ENGINE.yamler = "syck" - - expect { subject }.to raise_error(Bundler::GemspecError) - - YAML::ENGINE.yamler = orig_yamler - end - end - - context "with Psych as YAML::Engine" do - it "raises a GemspecError after YAML load throws Psych::SyntaxError" do - orig_yamler = YAML::ENGINE.yamler - YAML::ENGINE.yamler = "psych" - - expect { subject }.to raise_error(Bundler::GemspecError) - - YAML::ENGINE.yamler = orig_yamler - end - end - end - end - - context "with correct YAML file", :if => defined?(Encoding) do - it "can load a gemspec with unicode characters with default ruby encoding" do - # spec_helper forces the external encoding to UTF-8 but that's not the - # default until Ruby 2.0 - verbose = $VERBOSE - $VERBOSE = false - encoding = Encoding.default_external - Encoding.default_external = "ASCII" - $VERBOSE = verbose - - File.open(app_gemspec_path, "wb") do |file| - file.puts <<-GEMSPEC.gsub(/^\s+/, "") - # -*- encoding: utf-8 -*- - Gem::Specification.new do |gem| - gem.author = "André the Giant" - end - GEMSPEC - end - - expect(subject.author).to eq("André the Giant") - - verbose = $VERBOSE - $VERBOSE = false - Encoding.default_external = encoding - $VERBOSE = verbose - end - end - - it "sets loaded_from" do - app_gemspec_path.open("w") do |f| - f.puts <<-GEMSPEC - Gem::Specification.new do |gem| - gem.name = "validated" - end - GEMSPEC - end - - expect(subject.loaded_from).to eq(app_gemspec_path.expand_path.to_s) - end - - context "validate is true" do - subject { Bundler.load_gemspec_uncached(app_gemspec_path, true) } - - it "validates the specification" do - app_gemspec_path.open("w") do |f| - f.puts <<-GEMSPEC - Gem::Specification.new do |gem| - gem.name = "validated" - end - GEMSPEC - end - expect(Bundler.rubygems).to receive(:validate).with have_attributes(:name => "validated") - subject - end - end - - context "with gemspec containing local variables" do - before do - File.open(app_gemspec_path, "wb") do |f| - f.write strip_whitespace(<<-GEMSPEC) - must_not_leak = true - Gem::Specification.new do |gem| - gem.name = "leak check" - end - GEMSPEC - end - end - - it "should not pollute the TOPLEVEL_BINDING" do - subject - expect(TOPLEVEL_BINDING.eval("local_variables")).to_not include(:must_not_leak) - end - end - end - - describe "#which" do - let(:executable) { "executable" } - let(:path) { %w[/a /b c ../d /e] } - let(:expected) { "executable" } - - before do - ENV["PATH"] = path.join(File::PATH_SEPARATOR) - - allow(File).to receive(:file?).and_return(false) - allow(File).to receive(:executable?).and_return(false) - if expected - expect(File).to receive(:file?).with(expected).and_return(true) - expect(File).to receive(:executable?).with(expected).and_return(true) - end - end - - subject { described_class.which(executable) } - - shared_examples_for "it returns the correct executable" do - it "returns the expected file" do - expect(subject).to eq(expected) - end - end - - it_behaves_like "it returns the correct executable" - - context "when the executable in inside a quoted path" do - let(:expected) { "/e/executable" } - it_behaves_like "it returns the correct executable" - end - - context "when the executable is not found" do - let(:expected) { nil } - it_behaves_like "it returns the correct executable" - end - end - - describe "configuration" do - context "disable_shared_gems" do - it "should unset GEM_PATH with empty string" do - env = {} - expect(Bundler).to receive(:use_system_gems?).and_return(false) - Bundler.send(:configure_gem_path, env) - expect(env.keys).to include("GEM_PATH") - expect(env["GEM_PATH"]).to eq "" - end - end - end - - describe "#rm_rf" do - context "the directory is world writable" do - let(:bundler_ui) { Bundler.ui } - it "should raise a friendly error" do - allow(File).to receive(:exist?).and_return(true) - allow(bundler_fileutils).to receive(:remove_entry_secure).and_raise(ArgumentError) - allow(File).to receive(:world_writable?).and_return(true) - message = <" do - File.open(tmp("bundler-testtasks"), "w", 0o755) do |f| - ruby = ENV['BUNDLE_RUBY'] || "/usr/bin/env ruby" - f.puts "#!#{ruby}\nputs 'Hello, world'\n" - end - - with_path_added(tmp) do - bundle "testtasks" - end - - expect(exitstatus).to be_zero if exitstatus - expect(out).to eq("Hello, world") - end - - context "with no arguments" do - it "prints a concise help message", :bundler => "2" do - bundle! "" - expect(last_command.stderr).to be_empty - expect(last_command.stdout).to include("Bundler version #{Bundler::VERSION}"). - and include("\n\nBundler commands:\n\n"). - and include("\n\n Primary commands:\n"). - and include("\n\n Utilities:\n"). - and include("\n\nOptions:\n") - end - end - - context "when ENV['BUNDLE_GEMFILE'] is set to an empty string" do - it "ignores it" do - gemfile bundled_app("Gemfile"), <<-G - source "file://#{gem_repo1}" - gem 'rack' - G - - bundle :install, :env => { "BUNDLE_GEMFILE" => "" } - - expect(the_bundle).to include_gems "rack 1.0.0" - end - end - - context "when ENV['RUBYGEMS_GEMDEPS'] is set" do - it "displays a warning" do - gemfile bundled_app("Gemfile"), <<-G - source "file://#{gem_repo1}" - gem 'rack' - G - - bundle :install, :env => { "RUBYGEMS_GEMDEPS" => "foo" } - expect(out).to include("RUBYGEMS_GEMDEPS") - expect(out).to include("conflict with Bundler") - - bundle :install, :env => { "RUBYGEMS_GEMDEPS" => "" } - expect(out).not_to include("RUBYGEMS_GEMDEPS") - end - end - - context "with --verbose" do - it "prints the running command" do - gemfile "" - bundle! "info bundler", :verbose => true - expect(last_command.stdout).to start_with("Running `bundle info bundler --no-color --verbose` with bundler #{Bundler::VERSION}") - end - - it "doesn't print defaults" do - install_gemfile! "", :verbose => true - expect(last_command.stdout).to start_with("Running `bundle install --no-color --retry 0 --verbose` with bundler #{Bundler::VERSION}") - end - - it "doesn't print defaults" do - install_gemfile! "", :verbose => true - expect(last_command.stdout).to start_with("Running `bundle install --no-color --retry 0 --verbose` with bundler #{Bundler::VERSION}") - end - end - - describe "printing the outdated warning" do - shared_examples_for "no warning" do - it "prints no warning" do - bundle "fail" - expect(last_command.stdboth).to eq("Could not find command \"fail\".") - end - end - - let(:bundler_version) { "1.1" } - let(:latest_version) { nil } - before do - bundle! "config --global disable_version_check false" - - simulate_bundler_version(bundler_version) - if latest_version - info_path = home(".bundle/cache/compact_index/rubygems.org.443.29b0360b937aa4d161703e6160654e47/info/bundler") - info_path.parent.mkpath - info_path.open("w") {|f| f.write "#{latest_version}\n" } - end - end - - context "when there is no latest version" do - include_examples "no warning" - end - - context "when the latest version is equal to the current version" do - let(:latest_version) { bundler_version } - include_examples "no warning" - end - - context "when the latest version is less than the current version" do - let(:latest_version) { "0.9" } - include_examples "no warning" - end - - context "when the latest version is greater than the current version" do - let(:latest_version) { "222.0" } - it "prints the version warning" do - bundle "fail" - expect(last_command.stdout).to start_with(<<-EOS.strip) -The latest bundler is #{latest_version}, but you are currently running #{bundler_version}. -To install the latest version, run `gem install bundler` - EOS - end - - context "and disable_version_check is set" do - before { bundle! "config disable_version_check true" } - include_examples "no warning" - end - - context "running a parseable command" do - it "prints no warning" do - bundle! "config --parseable foo" - expect(last_command.stdboth).to eq "" - - bundle "platform --ruby" - expect(last_command.stdboth).to eq "Could not locate Gemfile" - end - end - - context "and is a pre-release" do - let(:latest_version) { "222.0.0.pre.4" } - it "prints the version warning" do - bundle "fail" - expect(last_command.stdout).to start_with(<<-EOS.strip) -The latest bundler is #{latest_version}, but you are currently running #{bundler_version}. -To install the latest version, run `gem install bundler --pre` - EOS - end - end - end - end -end - -RSpec.describe "bundler executable" do - it "shows the bundler version just as the `bundle` executable does", :bundler => "< 2" do - bundler "--version" - expect(out).to eq("Bundler version #{Bundler::VERSION}") - end - - it "shows the bundler version just as the `bundle` executable does", :bundler => "2" do - bundler "--version" - expect(out).to eq(Bundler::VERSION) - end -end diff --git a/spec/bundler/bundler/compact_index_client/updater_spec.rb b/spec/bundler/bundler/compact_index_client/updater_spec.rb deleted file mode 100644 index 3c4f212b60..0000000000 --- a/spec/bundler/bundler/compact_index_client/updater_spec.rb +++ /dev/null @@ -1,30 +0,0 @@ -# frozen_string_literal: true - -require "net/http" -require "bundler/compact_index_client" -require "bundler/compact_index_client/updater" - -RSpec.describe Bundler::CompactIndexClient::Updater do - subject(:updater) { described_class.new(fetcher) } - - let(:fetcher) { double(:fetcher) } - - context "when the ETag header is missing" do - # Regression test for https://github.com/bundler/bundler/issues/5463 - - let(:response) { double(:response, :body => "") } - let(:local_path) { Pathname("/tmp/localpath") } - let(:remote_path) { double(:remote_path) } - - it "MisMatchedChecksumError is raised" do - # Twice: #update retries on failure - expect(response).to receive(:[]).with("Content-Encoding").twice { "" } - expect(response).to receive(:[]).with("ETag").twice { nil } - expect(fetcher).to receive(:call).twice { response } - - expect do - updater.update(local_path, remote_path) - end.to raise_error(Bundler::CompactIndexClient::Updater::MisMatchedChecksumError) - end - end -end diff --git a/spec/bundler/bundler/definition_spec.rb b/spec/bundler/bundler/definition_spec.rb deleted file mode 100644 index 3ca0dc0f79..0000000000 --- a/spec/bundler/bundler/definition_spec.rb +++ /dev/null @@ -1,358 +0,0 @@ -# frozen_string_literal: true - -require "bundler/definition" - -RSpec.describe Bundler::Definition do - describe "#lock" do - before do - allow(Bundler).to receive(:settings) { Bundler::Settings.new(".") } - allow(Bundler::SharedHelpers).to receive(:find_gemfile) { Pathname.new("Gemfile") } - allow(Bundler).to receive(:ui) { double("UI", :info => "", :debug => "") } - end - context "when it's not possible to write to the file" do - subject { Bundler::Definition.new(nil, [], Bundler::SourceList.new, []) } - - it "raises an PermissionError with explanation" do - expect(File).to receive(:open).with("Gemfile.lock", "wb"). - and_raise(Errno::EACCES) - expect { subject.lock("Gemfile.lock") }. - to raise_error(Bundler::PermissionError, /Gemfile\.lock/) - end - end - context "when a temporary resource access issue occurs" do - subject { Bundler::Definition.new(nil, [], Bundler::SourceList.new, []) } - - it "raises a TemporaryResourceError with explanation" do - expect(File).to receive(:open).with("Gemfile.lock", "wb"). - and_raise(Errno::EAGAIN) - expect { subject.lock("Gemfile.lock") }. - to raise_error(Bundler::TemporaryResourceError, /temporarily unavailable/) - end - end - end - - describe "detects changes" do - it "for a path gem with changes", :bundler => "< 2" do - build_lib "foo", "1.0", :path => lib_path("foo") - - install_gemfile <<-G - source "file://localhost#{gem_repo1}" - gem "foo", :path => "#{lib_path("foo")}" - G - - build_lib "foo", "1.0", :path => lib_path("foo") do |s| - s.add_dependency "rack", "1.0" - end - - bundle :install, :env => { "DEBUG" => 1 } - - expect(out).to match(/re-resolving dependencies/) - lockfile_should_be <<-G - PATH - remote: #{lib_path("foo")} - specs: - foo (1.0) - rack (= 1.0) - - GEM - remote: file://localhost#{gem_repo1}/ - specs: - rack (1.0.0) - - PLATFORMS - ruby - - DEPENDENCIES - foo! - - BUNDLED WITH - #{Bundler::VERSION} - G - end - - it "for a path gem with changes", :bundler => "2" do - build_lib "foo", "1.0", :path => lib_path("foo") - - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "foo", :path => "#{lib_path("foo")}" - G - - build_lib "foo", "1.0", :path => lib_path("foo") do |s| - s.add_dependency "rack", "1.0" - end - - bundle :install, :env => { "DEBUG" => 1 } - - expect(out).to match(/re-resolving dependencies/) - lockfile_should_be <<-G - GEM - remote: file:#{gem_repo1}/ - specs: - rack (1.0.0) - - PATH - remote: #{lib_path("foo")} - specs: - foo (1.0) - rack (= 1.0) - - PLATFORMS - #{lockfile_platforms} - - DEPENDENCIES - foo! - - BUNDLED WITH - #{Bundler::VERSION} - G - end - - it "for a path gem with deps and no changes", :bundler => "< 2" do - build_lib "foo", "1.0", :path => lib_path("foo") do |s| - s.add_dependency "rack", "1.0" - s.add_development_dependency "net-ssh", "1.0" - end - - install_gemfile <<-G - source "file://localhost#{gem_repo1}" - gem "foo", :path => "#{lib_path("foo")}" - G - - bundle :check, :env => { "DEBUG" => 1 } - - expect(out).to match(/using resolution from the lockfile/) - lockfile_should_be <<-G - PATH - remote: #{lib_path("foo")} - specs: - foo (1.0) - rack (= 1.0) - - GEM - remote: file://localhost#{gem_repo1}/ - specs: - rack (1.0.0) - - PLATFORMS - ruby - - DEPENDENCIES - foo! - - BUNDLED WITH - #{Bundler::VERSION} - G - end - - it "for a path gem with deps and no changes", :bundler => "2" do - build_lib "foo", "1.0", :path => lib_path("foo") do |s| - s.add_dependency "rack", "1.0" - s.add_development_dependency "net-ssh", "1.0" - end - - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "foo", :path => "#{lib_path("foo")}" - G - - bundle :check, :env => { "DEBUG" => 1 } - - expect(out).to match(/using resolution from the lockfile/) - lockfile_should_be <<-G - GEM - remote: file:#{gem_repo1}/ - specs: - rack (1.0.0) - - PATH - remote: #{lib_path("foo")} - specs: - foo (1.0) - rack (= 1.0) - - PLATFORMS - #{lockfile_platforms} - - DEPENDENCIES - foo! - - BUNDLED WITH - #{Bundler::VERSION} - G - end - - it "for a rubygems gem" do - install_gemfile <<-G - source "file://localhost#{gem_repo1}" - gem "foo" - G - - bundle :check, :env => { "DEBUG" => 1 } - - expect(out).to match(/using resolution from the lockfile/) - lockfile_should_be <<-G - GEM - remote: file://localhost#{gem_repo1}/ - specs: - foo (1.0) - - PLATFORMS - #{lockfile_platforms} - - DEPENDENCIES - foo - - BUNDLED WITH - #{Bundler::VERSION} - G - end - end - - describe "initialize" do - context "gem version promoter" do - context "with lockfile" do - before do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "foo" - G - end - - it "should get a locked specs list when updating all" do - definition = Bundler::Definition.new(bundled_app("Gemfile.lock"), [], Bundler::SourceList.new, true) - locked_specs = definition.gem_version_promoter.locked_specs - expect(locked_specs.to_a.map(&:name)).to eq ["foo"] - expect(definition.instance_variable_get("@locked_specs").empty?).to eq true - end - end - - context "without gemfile or lockfile" do - it "should not attempt to parse empty lockfile contents" do - definition = Bundler::Definition.new(nil, [], mock_source_list, true) - expect(definition.gem_version_promoter.locked_specs.to_a).to eq [] - end - end - - context "eager unlock" do - let(:source_list) do - Bundler::SourceList.new.tap do |source_list| - source_list.global_rubygems_source = "file://#{gem_repo4}" - end - end - - before do - gemfile <<-G - source "file://#{gem_repo4}" - gem 'isolated_owner' - - gem 'shared_owner_a' - gem 'shared_owner_b' - G - - lockfile <<-L - GEM - remote: file://#{gem_repo4} - specs: - isolated_dep (2.0.1) - isolated_owner (1.0.1) - isolated_dep (~> 2.0) - shared_dep (5.0.1) - shared_owner_a (3.0.1) - shared_dep (~> 5.0) - shared_owner_b (4.0.1) - shared_dep (~> 5.0) - - PLATFORMS - ruby - - DEPENDENCIES - shared_owner_a - shared_owner_b - isolated_owner - - BUNDLED WITH - 1.13.0 - L - end - - it "should not eagerly unlock shared dependency with bundle install conservative updating behavior" do - updated_deps_in_gemfile = [Bundler::Dependency.new("isolated_owner", ">= 0"), - Bundler::Dependency.new("shared_owner_a", "3.0.2"), - Bundler::Dependency.new("shared_owner_b", ">= 0")] - unlock_hash_for_bundle_install = {} - definition = Bundler::Definition.new( - bundled_app("Gemfile.lock"), - updated_deps_in_gemfile, - source_list, - unlock_hash_for_bundle_install - ) - locked = definition.send(:converge_locked_specs).map(&:name) - expect(locked).to include "shared_dep" - end - - it "should not eagerly unlock shared dependency with bundle update conservative updating behavior" do - updated_deps_in_gemfile = [Bundler::Dependency.new("isolated_owner", ">= 0"), - Bundler::Dependency.new("shared_owner_a", ">= 0"), - Bundler::Dependency.new("shared_owner_b", ">= 0")] - definition = Bundler::Definition.new( - bundled_app("Gemfile.lock"), - updated_deps_in_gemfile, - source_list, - :gems => ["shared_owner_a"], :lock_shared_dependencies => true - ) - locked = definition.send(:converge_locked_specs).map(&:name) - expect(locked).to eq %w[isolated_dep isolated_owner shared_dep shared_owner_b] - expect(locked.include?("shared_dep")).to be_truthy - end - end - end - end - - describe "find_resolved_spec" do - it "with no platform set in SpecSet" do - ss = Bundler::SpecSet.new([build_stub_spec("a", "1.0"), build_stub_spec("b", "1.0")]) - dfn = Bundler::Definition.new(nil, [], mock_source_list, true) - dfn.instance_variable_set("@specs", ss) - found = dfn.find_resolved_spec(build_spec("a", "0.9", "ruby").first) - expect(found.name).to eq "a" - expect(found.version.to_s).to eq "1.0" - end - end - - describe "find_indexed_specs" do - it "with no platform set in indexed specs" do - index = Bundler::Index.new - %w[1.0.0 1.0.1 1.1.0].each {|v| index << build_stub_spec("foo", v) } - - dfn = Bundler::Definition.new(nil, [], mock_source_list, true) - dfn.instance_variable_set("@index", index) - found = dfn.find_indexed_specs(build_spec("foo", "0.9", "ruby").first) - expect(found.length).to eq 3 - end - end - - def build_stub_spec(name, version) - Bundler::StubSpecification.new(name, version, nil, nil) - end - - def mock_source_list - Class.new do - def all_sources - [] - end - - def path_sources - [] - end - - def rubygems_remotes - [] - end - - def replace_sources!(arg) - nil - end - end.new - end -end diff --git a/spec/bundler/bundler/dsl_spec.rb b/spec/bundler/bundler/dsl_spec.rb deleted file mode 100644 index f706e1b9ad..0000000000 --- a/spec/bundler/bundler/dsl_spec.rb +++ /dev/null @@ -1,289 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe Bundler::Dsl do - before do - @rubygems = double("rubygems") - allow(Bundler::Source::Rubygems).to receive(:new) { @rubygems } - end - - describe "#git_source" do - it "registers custom hosts" do - subject.git_source(:example) {|repo_name| "git@git.example.com:#{repo_name}.git" } - subject.git_source(:foobar) {|repo_name| "git@foobar.com:#{repo_name}.git" } - subject.gem("dobry-pies", :example => "strzalek/dobry-pies") - example_uri = "git@git.example.com:strzalek/dobry-pies.git" - expect(subject.dependencies.first.source.uri).to eq(example_uri) - end - - it "raises exception on invalid hostname" do - expect do - subject.git_source(:group) {|repo_name| "git@git.example.com:#{repo_name}.git" } - end.to raise_error(Bundler::InvalidOption) - end - - it "expects block passed" do - expect { subject.git_source(:example) }.to raise_error(Bundler::InvalidOption) - end - - context "default hosts (git, gist)", :bundler => "< 2" do - it "converts :github to :git" do - subject.gem("sparks", :github => "indirect/sparks") - github_uri = "git://github.com/indirect/sparks.git" - expect(subject.dependencies.first.source.uri).to eq(github_uri) - end - - it "converts numeric :gist to :git" do - subject.gem("not-really-a-gem", :gist => 2_859_988) - github_uri = "https://gist.github.com/2859988.git" - expect(subject.dependencies.first.source.uri).to eq(github_uri) - end - - it "converts :gist to :git" do - subject.gem("not-really-a-gem", :gist => "2859988") - github_uri = "https://gist.github.com/2859988.git" - expect(subject.dependencies.first.source.uri).to eq(github_uri) - end - - it "converts 'rails' to 'rails/rails'" do - subject.gem("rails", :github => "rails") - github_uri = "git://github.com/rails/rails.git" - expect(subject.dependencies.first.source.uri).to eq(github_uri) - end - - it "converts :bitbucket to :git" do - subject.gem("not-really-a-gem", :bitbucket => "mcorp/flatlab-rails") - bitbucket_uri = "https://mcorp@bitbucket.org/mcorp/flatlab-rails.git" - expect(subject.dependencies.first.source.uri).to eq(bitbucket_uri) - end - - it "converts 'mcorp' to 'mcorp/mcorp'" do - subject.gem("not-really-a-gem", :bitbucket => "mcorp") - bitbucket_uri = "https://mcorp@bitbucket.org/mcorp/mcorp.git" - expect(subject.dependencies.first.source.uri).to eq(bitbucket_uri) - end - end - - context "default git sources", :bundler => "2" do - it "has none" do - expect(subject.instance_variable_get(:@git_sources)).to eq({}) - end - end - end - - describe "#method_missing" do - it "raises an error for unknown DSL methods" do - expect(Bundler).to receive(:read_file).with(bundled_app("Gemfile").to_s). - and_return("unknown") - - error_msg = "There was an error parsing `Gemfile`: Undefined local variable or method `unknown' for Gemfile. Bundler cannot continue." - expect { subject.eval_gemfile("Gemfile") }. - to raise_error(Bundler::GemfileError, Regexp.new(error_msg)) - end - end - - describe "#eval_gemfile" do - it "handles syntax errors with a useful message" do - expect(Bundler).to receive(:read_file).with(bundled_app("Gemfile").to_s).and_return("}") - expect { subject.eval_gemfile("Gemfile") }. - to raise_error(Bundler::GemfileError, /There was an error parsing `Gemfile`: (syntax error, unexpected tSTRING_DEND|(compile error - )?syntax error, unexpected '\}'). Bundler cannot continue./) - end - - it "distinguishes syntax errors from evaluation errors" do - expect(Bundler).to receive(:read_file).with(bundled_app("Gemfile").to_s).and_return( - "ruby '2.1.5', :engine => 'ruby', :engine_version => '1.2.4'" - ) - expect { subject.eval_gemfile("Gemfile") }. - to raise_error(Bundler::GemfileError, /There was an error evaluating `Gemfile`: ruby_version must match the :engine_version for MRI/) - end - end - - describe "#gem" do - [:ruby, :ruby_18, :ruby_19, :ruby_20, :ruby_21, :ruby_22, :ruby_23, :ruby_24, :ruby_25, :mri, :mri_18, :mri_19, - :mri_20, :mri_21, :mri_22, :mri_23, :mri_24, :mri_25, :jruby, :rbx].each do |platform| - it "allows #{platform} as a valid platform" do - subject.gem("foo", :platform => platform) - end - end - - it "rejects invalid platforms" do - expect { subject.gem("foo", :platform => :bogus) }. - to raise_error(Bundler::GemfileError, /is not a valid platform/) - end - - it "rejects empty gem name" do - expect { subject.gem("") }. - to raise_error(Bundler::GemfileError, /an empty gem name is not valid/) - end - - it "rejects with a leading space in the name" do - expect { subject.gem(" foo") }. - to raise_error(Bundler::GemfileError, /' foo' is not a valid gem name because it contains whitespace/) - end - - it "rejects with a trailing space in the name" do - expect { subject.gem("foo ") }. - to raise_error(Bundler::GemfileError, /'foo ' is not a valid gem name because it contains whitespace/) - end - - it "rejects with a space in the gem name" do - expect { subject.gem("fo o") }. - to raise_error(Bundler::GemfileError, /'fo o' is not a valid gem name because it contains whitespace/) - end - - it "rejects with a tab in the gem name" do - expect { subject.gem("fo\to") }. - to raise_error(Bundler::GemfileError, /'fo\to' is not a valid gem name because it contains whitespace/) - end - - it "rejects with a newline in the gem name" do - expect { subject.gem("fo\no") }. - to raise_error(Bundler::GemfileError, /'fo\no' is not a valid gem name because it contains whitespace/) - end - - it "rejects with a carriage return in the gem name" do - expect { subject.gem("fo\ro") }. - to raise_error(Bundler::GemfileError, /'fo\ro' is not a valid gem name because it contains whitespace/) - end - - it "rejects with a form feed in the gem name" do - expect { subject.gem("fo\fo") }. - to raise_error(Bundler::GemfileError, /'fo\fo' is not a valid gem name because it contains whitespace/) - end - - it "rejects symbols as gem name" do - expect { subject.gem(:foo) }. - to raise_error(Bundler::GemfileError, /You need to specify gem names as Strings. Use 'gem "foo"' instead/) - end - - it "rejects branch option on non-git gems" do - expect { subject.gem("foo", :branch => "test") }. - to raise_error(Bundler::GemfileError, /The `branch` option for `gem 'foo'` is not allowed. Only gems with a git source can specify a branch/) - end - - it "allows specifying a branch on git gems" do - subject.gem("foo", :branch => "test", :git => "http://mytestrepo") - dep = subject.dependencies.last - expect(dep.name).to eq "foo" - end - - it "allows specifying a branch on git gems with a git_source" do - subject.git_source(:test_source) {|n| "https://github.com/#{n}" } - subject.gem("foo", :branch => "test", :test_source => "bundler/bundler") - dep = subject.dependencies.last - expect(dep.name).to eq "foo" - end - end - - describe "#gemspec" do - let(:spec) do - Gem::Specification.new do |gem| - gem.name = "example" - gem.platform = platform - end - end - - before do - allow(Dir).to receive(:[]).and_return(["spec_path"]) - allow(Bundler).to receive(:load_gemspec).with("spec_path").and_return(spec) - allow(Bundler).to receive(:default_gemfile).and_return(Pathname.new("./Gemfile")) - end - - context "with a ruby platform" do - let(:platform) { "ruby" } - - it "keeps track of the ruby platforms in the dependency" do - subject.gemspec - expect(subject.dependencies.last.platforms).to eq(Bundler::Dependency::REVERSE_PLATFORM_MAP[Gem::Platform::RUBY]) - end - end - - context "with a jruby platform" do - let(:platform) { "java" } - - it "keeps track of the jruby platforms in the dependency" do - allow(Gem::Platform).to receive(:local).and_return(java) - subject.gemspec - expect(subject.dependencies.last.platforms).to eq(Bundler::Dependency::REVERSE_PLATFORM_MAP[Gem::Platform::JAVA]) - end - end - end - - context "can bundle groups of gems with" do - # git "https://github.com/rails/rails.git" do - # gem "railties" - # gem "action_pack" - # gem "active_model" - # end - describe "#git" do - it "from a single repo" do - rails_gems = %w[railties action_pack active_model] - subject.git "https://github.com/rails/rails.git" do - rails_gems.each {|rails_gem| subject.send :gem, rails_gem } - end - expect(subject.dependencies.map(&:name)).to match_array rails_gems - end - end - - # github 'spree' do - # gem 'spree_core' - # gem 'spree_api' - # gem 'spree_backend' - # end - describe "#github", :bundler => "< 2" do - it "from github" do - spree_gems = %w[spree_core spree_api spree_backend] - subject.github "spree" do - spree_gems.each {|spree_gem| subject.send :gem, spree_gem } - end - - subject.dependencies.each do |d| - expect(d.source.uri).to eq("git://github.com/spree/spree.git") - end - end - end - - describe "#github", :bundler => "2" do - it "from github" do - expect do - spree_gems = %w[spree_core spree_api spree_backend] - subject.github "spree" do - spree_gems.each {|spree_gem| subject.send :gem, spree_gem } - end - end.to raise_error(Bundler::DeprecatedError, /github method has been removed/) - end - end - end - - describe "syntax errors" do - it "will raise a Bundler::GemfileError" do - gemfile "gem 'foo', :path => /unquoted/string/syntax/error" - expect { Bundler::Dsl.evaluate(bundled_app("Gemfile"), nil, true) }. - to raise_error(Bundler::GemfileError, /There was an error parsing `Gemfile`:( compile error -)? unknown regexp options - trg. Bundler cannot continue./) - end - end - - describe "Runtime errors", :unless => Bundler.current_ruby.on_18? do - it "will raise a Bundler::GemfileError" do - gemfile "s = 'foo'.freeze; s.strip!" - expect { Bundler::Dsl.evaluate(bundled_app("Gemfile"), nil, true) }. - to raise_error(Bundler::GemfileError, /There was an error parsing `Gemfile`: can't modify frozen String. Bundler cannot continue./i) - end - end - - describe "#with_source" do - context "if there was a rubygem source already defined" do - it "restores it after it's done" do - other_source = double("other-source") - allow(Bundler::Source::Rubygems).to receive(:new).and_return(other_source) - allow(Bundler).to receive(:default_gemfile).and_return(Pathname.new("./Gemfile")) - - subject.source("https://other-source.org") do - subject.gem("dobry-pies", :path => "foo") - subject.gem("foo") - end - - expect(subject.dependencies.last.source).to eq(other_source) - end - end - end -end diff --git a/spec/bundler/bundler/endpoint_specification_spec.rb b/spec/bundler/bundler/endpoint_specification_spec.rb deleted file mode 100644 index a9371f6617..0000000000 --- a/spec/bundler/bundler/endpoint_specification_spec.rb +++ /dev/null @@ -1,71 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe Bundler::EndpointSpecification do - let(:name) { "foo" } - let(:version) { "1.0.0" } - let(:platform) { Gem::Platform::RUBY } - let(:dependencies) { [] } - let(:metadata) { nil } - - subject(:spec) { described_class.new(name, version, platform, dependencies, metadata) } - - describe "#build_dependency" do - let(:name) { "foo" } - let(:requirement1) { "~> 1.1" } - let(:requirement2) { ">= 1.1.7" } - - it "should return a Gem::Dependency" do - expect(subject.send(:build_dependency, name, [requirement1, requirement2])). - to eq(Gem::Dependency.new(name, requirement1, requirement2)) - end - - context "when an ArgumentError occurs" do - before do - allow(Gem::Dependency).to receive(:new).with(name, [requirement1, requirement2]) { - raise ArgumentError.new("Some error occurred") - } - end - - it "should raise the original error" do - expect { subject.send(:build_dependency, name, [requirement1, requirement2]) }.to raise_error( - ArgumentError, "Some error occurred" - ) - end - end - - context "when there is an ill formed requirement" do - before do - allow(Gem::Dependency).to receive(:new).with(name, [requirement1, requirement2]) { - raise ArgumentError.new("Ill-formed requirement [\"# ">\n" } } - it "raises a helpful error message" do - expect { subject }.to raise_error( - Bundler::GemspecError, - a_string_including("There was an error parsing the metadata for the gem foo (1.0.0)"). - and(a_string_including('The metadata was {"rubygems"=>">\n"}')) - ) - end - end - end - - it "supports equality comparison" do - other_spec = described_class.new("bar", version, platform, dependencies, metadata) - expect(spec).to eql(spec) - expect(spec).to_not eql(other_spec) - end -end diff --git a/spec/bundler/bundler/env_spec.rb b/spec/bundler/bundler/env_spec.rb deleted file mode 100644 index 83c03e67d5..0000000000 --- a/spec/bundler/bundler/env_spec.rb +++ /dev/null @@ -1,143 +0,0 @@ -# frozen_string_literal: true - -require "bundler/settings" - -RSpec.describe Bundler::Env do - let(:git_proxy_stub) { Bundler::Source::Git::GitProxy.new(nil, nil, nil) } - - describe "#report" do - it "prints the environment" do - out = described_class.report - - expect(out).to include("Environment") - expect(out).to include(Bundler::VERSION) - expect(out).to include(Gem::VERSION) - expect(out).to include(described_class.send(:ruby_version)) - expect(out).to include(described_class.send(:git_version)) - expect(out).to include(OpenSSL::OPENSSL_VERSION) - end - - context "when there is a Gemfile and a lockfile and print_gemfile is true" do - before do - gemfile "gem 'rack', '1.0.0'" - - lockfile <<-L - GEM - remote: file:#{gem_repo1}/ - specs: - rack (1.0.0) - - DEPENDENCIES - rack - - BUNDLED WITH - 1.10.0 - L - end - - let(:output) { described_class.report(:print_gemfile => true) } - - it "prints the Gemfile" do - expect(output).to include("Gemfile") - expect(output).to include("'rack', '1.0.0'") - end - - it "prints the lockfile" do - expect(output).to include("Gemfile.lock") - expect(output).to include("rack (1.0.0)") - end - end - - context "when there no Gemfile and print_gemfile is true" do - let(:output) { described_class.report(:print_gemfile => true) } - - it "prints the environment" do - expect(output).to start_with("## Environment") - end - end - - context "when Gemfile contains a gemspec and print_gemspecs is true" do - let(:gemspec) do - strip_whitespace(<<-GEMSPEC) - Gem::Specification.new do |gem| - gem.name = "foo" - gem.author = "Fumofu" - end - GEMSPEC - end - - before do - gemfile("gemspec") - - File.open(bundled_app.join("foo.gemspec"), "wb") do |f| - f.write(gemspec) - end - end - - it "prints the gemspec" do - output = described_class.report(:print_gemspecs => true) - - expect(output).to include("foo.gemspec") - expect(output).to include(gemspec) - end - end - - context "when eval_gemfile is used" do - it "prints all gemfiles" do - create_file "other/Gemfile-other", "gem 'rack'" - create_file "other/Gemfile", "eval_gemfile 'Gemfile-other'" - create_file "Gemfile-alt", <<-G - source "file:#{gem_repo1}" - eval_gemfile "other/Gemfile" - G - gemfile "eval_gemfile #{File.expand_path("Gemfile-alt").dump}" - - output = described_class.report(:print_gemspecs => true) - expect(output).to include(strip_whitespace(<<-ENV)) - ## Gemfile - - ### Gemfile - - ```ruby - eval_gemfile #{File.expand_path("Gemfile-alt").dump} - ``` - - ### Gemfile-alt - - ```ruby - source "file:#{gem_repo1}" - eval_gemfile "other/Gemfile" - ``` - - ### other/Gemfile - - ```ruby - eval_gemfile 'Gemfile-other' - ``` - - ### other/Gemfile-other - - ```ruby - gem 'rack' - ``` - - ### Gemfile.lock - - ``` - - ``` - ENV - end - end - - context "when the git version is OS specific" do - it "includes OS specific information with the version number" do - expect(git_proxy_stub).to receive(:git).with("--version"). - and_return("git version 1.2.3 (Apple Git-BS)") - expect(Bundler::Source::Git::GitProxy).to receive(:new).and_return(git_proxy_stub) - - expect(described_class.report).to include("Git 1.2.3 (Apple Git-BS)") - end - end - end -end diff --git a/spec/bundler/bundler/environment_preserver_spec.rb b/spec/bundler/bundler/environment_preserver_spec.rb deleted file mode 100644 index 530ca6f835..0000000000 --- a/spec/bundler/bundler/environment_preserver_spec.rb +++ /dev/null @@ -1,79 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe Bundler::EnvironmentPreserver do - let(:preserver) { described_class.new(env, ["foo"]) } - - describe "#backup" do - let(:env) { { "foo" => "my-foo", "bar" => "my-bar" } } - subject { preserver.backup } - - it "should create backup entries" do - expect(subject["BUNDLER_ORIG_foo"]).to eq("my-foo") - end - - it "should keep the original entry" do - expect(subject["foo"]).to eq("my-foo") - end - - it "should not create backup entries for unspecified keys" do - expect(subject.key?("BUNDLER_ORIG_bar")).to eq(false) - end - - it "should not affect the original env" do - subject - expect(env.keys.sort).to eq(%w[bar foo]) - end - - context "when a key is empty" do - let(:env) { { "foo" => "" } } - - it "should not create backup entries" do - expect(subject).not_to have_key "BUNDLER_ORIG_foo" - end - end - - context "when an original key is set" do - let(:env) { { "foo" => "my-foo", "BUNDLER_ORIG_foo" => "orig-foo" } } - - it "should keep the original value in the BUNDLER_ORIG_ variable" do - expect(subject["BUNDLER_ORIG_foo"]).to eq("orig-foo") - end - - it "should keep the variable" do - expect(subject["foo"]).to eq("my-foo") - end - end - end - - describe "#restore" do - subject { preserver.restore } - - context "when an original key is set" do - let(:env) { { "foo" => "my-foo", "BUNDLER_ORIG_foo" => "orig-foo" } } - - it "should restore the original value" do - expect(subject["foo"]).to eq("orig-foo") - end - - it "should delete the backup value" do - expect(subject.key?("BUNDLER_ORIG_foo")).to eq(false) - end - end - - context "when no original key is set" do - let(:env) { { "foo" => "my-foo" } } - - it "should keep the current value" do - expect(subject["foo"]).to eq("my-foo") - end - end - - context "when the original key is empty" do - let(:env) { { "foo" => "my-foo", "BUNDLER_ORIG_foo" => "" } } - - it "should keep the current value" do - expect(subject["foo"]).to eq("my-foo") - end - end - end -end diff --git a/spec/bundler/bundler/fetcher/base_spec.rb b/spec/bundler/bundler/fetcher/base_spec.rb deleted file mode 100644 index df1245d44d..0000000000 --- a/spec/bundler/bundler/fetcher/base_spec.rb +++ /dev/null @@ -1,76 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe Bundler::Fetcher::Base do - let(:downloader) { double(:downloader) } - let(:remote) { double(:remote) } - let(:display_uri) { "http://sample_uri.com" } - - class TestClass < described_class; end - - subject { TestClass.new(downloader, remote, display_uri) } - - describe "#initialize" do - context "with the abstract Base class" do - it "should raise an error" do - expect { described_class.new(downloader, remote, display_uri) }.to raise_error(RuntimeError, "Abstract class") - end - end - - context "with a class that inherits the Base class" do - it "should set the passed attributes" do - expect(subject.downloader).to eq(downloader) - expect(subject.remote).to eq(remote) - expect(subject.display_uri).to eq("http://sample_uri.com") - end - end - end - - describe "#remote_uri" do - let(:remote_uri_obj) { double(:remote_uri_obj) } - - before { allow(remote).to receive(:uri).and_return(remote_uri_obj) } - - it "should return the remote's uri" do - expect(subject.remote_uri).to eq(remote_uri_obj) - end - end - - describe "#fetch_uri" do - let(:remote_uri_obj) { URI("http://rubygems.org") } - - before { allow(subject).to receive(:remote_uri).and_return(remote_uri_obj) } - - context "when the remote uri's host is rubygems.org" do - it "should create a copy of the remote uri with index.rubygems.org as the host" do - fetched_uri = subject.fetch_uri - expect(fetched_uri.host).to eq("index.rubygems.org") - expect(fetched_uri).to_not be(remote_uri_obj) - end - end - - context "when the remote uri's host is not rubygems.org" do - let(:remote_uri_obj) { URI("http://otherhost.org") } - - it "should return the remote uri" do - expect(subject.fetch_uri).to eq(URI("http://otherhost.org")) - end - end - - it "memoizes the fetched uri" do - expect(remote_uri_obj).to receive(:host).once - 2.times { subject.fetch_uri } - end - end - - describe "#available?" do - it "should return whether the api is available" do - expect(subject.available?).to be_truthy - end - end - - describe "#api_fetcher?" do - it "should return false" do - expect(subject.api_fetcher?).to be_falsey - end - end -end diff --git a/spec/bundler/bundler/fetcher/compact_index_spec.rb b/spec/bundler/bundler/fetcher/compact_index_spec.rb deleted file mode 100644 index e0f58766ea..0000000000 --- a/spec/bundler/bundler/fetcher/compact_index_spec.rb +++ /dev/null @@ -1,103 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe Bundler::Fetcher::CompactIndex do - let(:downloader) { double(:downloader) } - let(:display_uri) { URI("http://sampleuri.com") } - let(:remote) { double(:remote, :cache_slug => "lsjdf", :uri => display_uri) } - let(:compact_index) { described_class.new(downloader, remote, display_uri) } - - before do - allow(compact_index).to receive(:log_specs) {} - end - - describe "#specs_for_names" do - it "has only one thread open at the end of the run" do - compact_index.specs_for_names(["lskdjf"]) - - thread_count = Thread.list.count {|thread| thread.status == "run" } - expect(thread_count).to eq 1 - end - - it "calls worker#stop during the run" do - expect_any_instance_of(Bundler::Worker).to receive(:stop).at_least(:once) - - compact_index.specs_for_names(["lskdjf"]) - end - - describe "#available?" do - before do - allow(compact_index).to receive(:compact_index_client). - and_return(double(:compact_index_client, :update_and_parse_checksums! => true)) - end - - it "returns true" do - expect(compact_index).to be_available - end - - context "when OpenSSL is not available" do - before do - allow(compact_index).to receive(:require).with("openssl").and_raise(LoadError) - end - - it "returns true" do - expect(compact_index).to be_available - end - end - - context "when OpenSSL is FIPS-enabled", :ruby => ">= 2.0.0" do - def remove_cached_md5_availability - return unless Bundler::SharedHelpers.instance_variable_defined?(:@md5_available) - Bundler::SharedHelpers.remove_instance_variable(:@md5_available) - end - - before do - remove_cached_md5_availability - stub_const("OpenSSL::OPENSSL_FIPS", true) - end - - after { remove_cached_md5_availability } - - context "when FIPS-mode is active" do - before do - allow(OpenSSL::Digest::MD5).to receive(:digest). - and_raise(OpenSSL::Digest::DigestError) - end - - it "returns false" do - expect(compact_index).to_not be_available - end - end - - it "returns true" do - expect(compact_index).to be_available - end - end - end - - context "logging" do - before { allow(compact_index).to receive(:log_specs).and_call_original } - - context "with debug on" do - before do - allow(Bundler).to receive_message_chain(:ui, :debug?).and_return(true) - end - - it "should log at info level" do - expect(Bundler).to receive_message_chain(:ui, :debug).with('Looking up gems ["lskdjf"]') - compact_index.specs_for_names(["lskdjf"]) - end - end - - context "with debug off" do - before do - allow(Bundler).to receive_message_chain(:ui, :debug?).and_return(false) - end - - it "should log at info level" do - expect(Bundler).to receive_message_chain(:ui, :info).with(".", false) - compact_index.specs_for_names(["lskdjf"]) - end - end - end - end -end diff --git a/spec/bundler/bundler/fetcher/dependency_spec.rb b/spec/bundler/bundler/fetcher/dependency_spec.rb deleted file mode 100644 index 081fdff34d..0000000000 --- a/spec/bundler/bundler/fetcher/dependency_spec.rb +++ /dev/null @@ -1,287 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe Bundler::Fetcher::Dependency do - let(:downloader) { double(:downloader) } - let(:remote) { double(:remote, :uri => URI("http://localhost:5000")) } - let(:display_uri) { "http://sample_uri.com" } - - subject { described_class.new(downloader, remote, display_uri) } - - describe "#available?" do - let(:dependency_api_uri) { double(:dependency_api_uri) } - let(:fetched_spec) { double(:fetched_spec) } - - before do - allow(subject).to receive(:dependency_api_uri).and_return(dependency_api_uri) - allow(downloader).to receive(:fetch).with(dependency_api_uri).and_return(fetched_spec) - end - - it "should be truthy" do - expect(subject.available?).to be_truthy - end - - context "when there is no network access" do - before do - allow(downloader).to receive(:fetch).with(dependency_api_uri) { - raise Bundler::Fetcher::NetworkDownError.new("Network Down Message") - } - end - - it "should raise an HTTPError with the original message" do - expect { subject.available? }.to raise_error(Bundler::HTTPError, "Network Down Message") - end - end - - context "when authentication is required" do - let(:remote_uri) { "http://remote_uri.org" } - - before do - allow(downloader).to receive(:fetch).with(dependency_api_uri) { - raise Bundler::Fetcher::AuthenticationRequiredError.new(remote_uri) - } - end - - it "should raise the original error" do - expect { subject.available? }.to raise_error(Bundler::Fetcher::AuthenticationRequiredError, - %r{Authentication is required for http://remote_uri.org}) - end - end - - context "when there is an http error" do - before { allow(downloader).to receive(:fetch).with(dependency_api_uri) { raise Bundler::HTTPError.new } } - - it "should be falsey" do - expect(subject.available?).to be_falsey - end - end - end - - describe "#api_fetcher?" do - it "should return true" do - expect(subject.api_fetcher?).to be_truthy - end - end - - describe "#specs" do - let(:gem_names) { %w[foo bar] } - let(:full_dependency_list) { ["bar"] } - let(:last_spec_list) { [["boulder", gem_version1, "ruby", resque]] } - let(:fail_errors) { double(:fail_errors) } - let(:bundler_retry) { double(:bundler_retry) } - let(:gem_version1) { double(:gem_version1) } - let(:resque) { double(:resque) } - let(:remote_uri) { "http://remote-uri.org" } - - before do - stub_const("Bundler::Fetcher::FAIL_ERRORS", fail_errors) - allow(Bundler::Retry).to receive(:new).with("dependency api", fail_errors).and_return(bundler_retry) - allow(bundler_retry).to receive(:attempts) {|&block| block.call } - allow(subject).to receive(:log_specs) {} - allow(subject).to receive(:remote_uri).and_return(remote_uri) - allow(Bundler).to receive_message_chain(:ui, :debug?) - allow(Bundler).to receive_message_chain(:ui, :info) - allow(Bundler).to receive_message_chain(:ui, :debug) - end - - context "when there are given gem names that are not in the full dependency list" do - let(:spec_list) { [["top", gem_version2, "ruby", faraday]] } - let(:deps_list) { [] } - let(:dependency_specs) { [spec_list, deps_list] } - let(:gem_version2) { double(:gem_version2) } - let(:faraday) { double(:faraday) } - - before { allow(subject).to receive(:dependency_specs).with(["foo"]).and_return(dependency_specs) } - - it "should return a hash with the remote_uri and the list of specs" do - expect(subject.specs(gem_names, full_dependency_list, last_spec_list)).to eq([ - ["top", gem_version2, "ruby", faraday], - ["boulder", gem_version1, "ruby", resque], - ]) - end - end - - context "when all given gem names are in the full dependency list" do - let(:gem_names) { ["foo"] } - let(:full_dependency_list) { %w[foo bar] } - let(:last_spec_list) { ["boulder"] } - - it "should return a hash with the remote_uri and the last spec list" do - expect(subject.specs(gem_names, full_dependency_list, last_spec_list)).to eq(["boulder"]) - end - end - - context "logging" do - before { allow(subject).to receive(:log_specs).and_call_original } - - context "with debug on" do - before do - allow(Bundler).to receive_message_chain(:ui, :debug?).and_return(true) - allow(subject).to receive(:dependency_specs).with(["foo"]).and_return([[], []]) - end - - it "should log the query list at debug level" do - expect(Bundler).to receive_message_chain(:ui, :debug).with("Query List: [\"foo\"]") - expect(Bundler).to receive_message_chain(:ui, :debug).with("Query List: []") - subject.specs(gem_names, full_dependency_list, last_spec_list) - end - end - - context "with debug off" do - before do - allow(Bundler).to receive_message_chain(:ui, :debug?).and_return(false) - allow(subject).to receive(:dependency_specs).with(["foo"]).and_return([[], []]) - end - - it "should log at info level" do - expect(Bundler).to receive_message_chain(:ui, :info).with(".", false) - expect(Bundler).to receive_message_chain(:ui, :info).with(".", false) - subject.specs(gem_names, full_dependency_list, last_spec_list) - end - end - end - - shared_examples_for "the error is properly handled" do - it "should return nil" do - expect(subject.specs(gem_names, full_dependency_list, last_spec_list)).to be_nil - end - - context "debug logging is not on" do - before { allow(Bundler).to receive_message_chain(:ui, :debug?).and_return(false) } - - it "should log a new line to info" do - expect(Bundler).to receive_message_chain(:ui, :info).with("") - subject.specs(gem_names, full_dependency_list, last_spec_list) - end - end - end - - shared_examples_for "the error suggests retrying with the full index" do - it "should log the inability to fetch from API at debug level" do - expect(Bundler).to receive_message_chain(:ui, :debug).with("could not fetch from the dependency API\nit's suggested to retry using the full index via `bundle install --full-index`") - subject.specs(gem_names, full_dependency_list, last_spec_list) - end - end - - context "when an HTTPError occurs" do - before { allow(subject).to receive(:dependency_specs) { raise Bundler::HTTPError.new } } - - it_behaves_like "the error is properly handled" - it_behaves_like "the error suggests retrying with the full index" - end - - context "when a GemspecError occurs" do - before { allow(subject).to receive(:dependency_specs) { raise Bundler::GemspecError.new } } - - it_behaves_like "the error is properly handled" - it_behaves_like "the error suggests retrying with the full index" - end - - context "when a MarshalError occurs" do - before { allow(subject).to receive(:dependency_specs) { raise Bundler::MarshalError.new } } - - it_behaves_like "the error is properly handled" - - it "should log the inability to fetch from API and mention retrying" do - expect(Bundler).to receive_message_chain(:ui, :debug).with("could not fetch from the dependency API, trying the full index") - subject.specs(gem_names, full_dependency_list, last_spec_list) - end - end - end - - describe "#dependency_specs" do - let(:gem_names) { [%w[foo bar], %w[bundler rubocop]] } - let(:gem_list) { double(:gem_list) } - let(:formatted_specs_and_deps) { double(:formatted_specs_and_deps) } - - before do - allow(subject).to receive(:unmarshalled_dep_gems).with(gem_names).and_return(gem_list) - allow(subject).to receive(:get_formatted_specs_and_deps).with(gem_list).and_return(formatted_specs_and_deps) - end - - it "should log the query list at debug level" do - expect(Bundler).to receive_message_chain(:ui, :debug).with( - "Query Gemcutter Dependency Endpoint API: foo,bar,bundler,rubocop" - ) - subject.dependency_specs(gem_names) - end - - it "should return formatted specs and a unique list of dependencies" do - expect(subject.dependency_specs(gem_names)).to eq(formatted_specs_and_deps) - end - end - - describe "#unmarshalled_dep_gems" do - let(:gem_names) { [%w[foo bar], %w[bundler rubocop]] } - let(:dep_api_uri) { double(:dep_api_uri) } - let(:unmarshalled_gems) { double(:unmarshalled_gems) } - let(:fetch_response) { double(:fetch_response, :body => double(:body)) } - let(:rubygems_limit) { 50 } - - before { allow(subject).to receive(:dependency_api_uri).with(gem_names).and_return(dep_api_uri) } - - it "should fetch dependencies from RubyGems and unmarshal them" do - expect(gem_names).to receive(:each_slice).with(rubygems_limit).and_call_original - expect(downloader).to receive(:fetch).with(dep_api_uri).and_return(fetch_response) - expect(Bundler).to receive(:load_marshal).with(fetch_response.body).and_return([unmarshalled_gems]) - expect(subject.unmarshalled_dep_gems(gem_names)).to eq([unmarshalled_gems]) - end - end - - describe "#get_formatted_specs_and_deps" do - let(:gem_list) do - [ - { - :dependencies => { - "resque" => "req3,req4", - }, - :name => "typhoeus", - :number => "1.0.1", - :platform => "ruby", - }, - { - :dependencies => { - "faraday" => "req1,req2", - }, - :name => "grape", - :number => "2.0.2", - :platform => "jruby", - }, - ] - end - - it "should return formatted specs and a unique list of dependencies" do - spec_list, deps_list = subject.get_formatted_specs_and_deps(gem_list) - expect(spec_list).to eq([["typhoeus", "1.0.1", "ruby", [["resque", ["req3,req4"]]]], - ["grape", "2.0.2", "jruby", [["faraday", ["req1,req2"]]]]]) - expect(deps_list).to eq(%w[resque faraday]) - end - end - - describe "#dependency_api_uri" do - let(:uri) { URI("http://gem-api.com") } - - context "with gem names" do - let(:gem_names) { %w[foo bar bundler rubocop] } - - before { allow(subject).to receive(:fetch_uri).and_return(uri) } - - it "should return an api calling uri with the gems in the query" do - expect(subject.dependency_api_uri(gem_names).to_s).to eq( - "http://gem-api.com/api/v1/dependencies?gems=bar%2Cbundler%2Cfoo%2Crubocop" - ) - end - end - - context "with no gem names" do - let(:gem_names) { [] } - - before { allow(subject).to receive(:fetch_uri).and_return(uri) } - - it "should return an api calling uri with no query" do - expect(subject.dependency_api_uri(gem_names).to_s).to eq( - "http://gem-api.com/api/v1/dependencies" - ) - end - end - end -end diff --git a/spec/bundler/bundler/fetcher/downloader_spec.rb b/spec/bundler/bundler/fetcher/downloader_spec.rb deleted file mode 100644 index c9b4fa662a..0000000000 --- a/spec/bundler/bundler/fetcher/downloader_spec.rb +++ /dev/null @@ -1,250 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe Bundler::Fetcher::Downloader do - let(:connection) { double(:connection) } - let(:redirect_limit) { 5 } - let(:uri) { URI("http://www.uri-to-fetch.com/api/v2/endpoint") } - let(:options) { double(:options) } - - subject { described_class.new(connection, redirect_limit) } - - describe "fetch" do - let(:counter) { 0 } - let(:httpv) { "1.1" } - let(:http_response) { double(:response) } - - before do - allow(subject).to receive(:request).with(uri, options).and_return(http_response) - allow(http_response).to receive(:body).and_return("Body with info") - end - - context "when the # requests counter is greater than the redirect limit" do - let(:counter) { redirect_limit + 1 } - - it "should raise a Bundler::HTTPError specifying too many redirects" do - expect { subject.fetch(uri, options, counter) }.to raise_error(Bundler::HTTPError, "Too many redirects") - end - end - - context "logging" do - let(:http_response) { Net::HTTPSuccess.new("1.1", 200, "Success") } - - it "should log the HTTP response code and message to debug" do - expect(Bundler).to receive_message_chain(:ui, :debug).with("HTTP 200 Success #{uri}") - subject.fetch(uri, options, counter) - end - end - - context "when the request response is a Net::HTTPRedirection" do - let(:http_response) { Net::HTTPRedirection.new(httpv, 308, "Moved") } - - before { http_response["location"] = "http://www.redirect-uri.com/api/v2/endpoint" } - - it "should try to fetch the redirect uri and iterate the # requests counter" do - expect(subject).to receive(:fetch).with(URI("http://www.uri-to-fetch.com/api/v2/endpoint"), options, 0).and_call_original - expect(subject).to receive(:fetch).with(URI("http://www.redirect-uri.com/api/v2/endpoint"), options, 1) - subject.fetch(uri, options, counter) - end - - context "when the redirect uri and original uri are the same" do - let(:uri) { URI("ssh://username:password@www.uri-to-fetch.com/api/v2/endpoint") } - - before { http_response["location"] = "ssh://www.uri-to-fetch.com/api/v1/endpoint" } - - it "should set the same user and password for the redirect uri" do - expect(subject).to receive(:fetch).with(URI("ssh://username:password@www.uri-to-fetch.com/api/v2/endpoint"), options, 0).and_call_original - expect(subject).to receive(:fetch).with(URI("ssh://username:password@www.uri-to-fetch.com/api/v1/endpoint"), options, 1) - subject.fetch(uri, options, counter) - end - end - end - - context "when the request response is a Net::HTTPSuccess" do - let(:http_response) { Net::HTTPSuccess.new("1.1", 200, "Success") } - - it "should return the response body" do - expect(subject.fetch(uri, options, counter)).to eq(http_response) - end - end - - context "when the request response is a Net::HTTPRequestEntityTooLarge" do - let(:http_response) { Net::HTTPRequestEntityTooLarge.new("1.1", 413, "Too Big") } - - it "should raise a Bundler::Fetcher::FallbackError with the response body" do - expect { subject.fetch(uri, options, counter) }.to raise_error(Bundler::Fetcher::FallbackError, "Body with info") - end - end - - context "when the request response is a Net::HTTPUnauthorized" do - let(:http_response) { Net::HTTPUnauthorized.new("1.1", 401, "Unauthorized") } - - it "should raise a Bundler::Fetcher::AuthenticationRequiredError with the uri host" do - expect { subject.fetch(uri, options, counter) }.to raise_error(Bundler::Fetcher::AuthenticationRequiredError, - /Authentication is required for www.uri-to-fetch.com/) - end - end - - context "when the request response is a Net::HTTPNotFound" do - let(:http_response) { Net::HTTPNotFound.new("1.1", 404, "Not Found") } - - it "should raise a Bundler::Fetcher::FallbackError with Net::HTTPNotFound" do - expect { subject.fetch(uri, options, counter) }.to raise_error(Bundler::Fetcher::FallbackError, "Net::HTTPNotFound") - end - end - - context "when the request response is some other type" do - let(:http_response) { Net::HTTPBadGateway.new("1.1", 500, "Fatal Error") } - - it "should raise a Bundler::HTTPError with the response class and body" do - expect { subject.fetch(uri, options, counter) }.to raise_error(Bundler::HTTPError, "Net::HTTPBadGateway: Body with info") - end - end - end - - describe "request" do - let(:net_http_get) { double(:net_http_get) } - let(:response) { double(:response) } - - before do - allow(Net::HTTP::Get).to receive(:new).with("/api/v2/endpoint", options).and_return(net_http_get) - allow(connection).to receive(:request).with(uri, net_http_get).and_return(response) - end - - it "should log the HTTP GET request to debug" do - expect(Bundler).to receive_message_chain(:ui, :debug).with("HTTP GET http://www.uri-to-fetch.com/api/v2/endpoint") - subject.request(uri, options) - end - - context "when there is a user provided in the request" do - context "and there is also a password provided" do - context "that contains cgi escaped characters" do - let(:uri) { URI("http://username:password%24@www.uri-to-fetch.com/api/v2/endpoint") } - - it "should request basic authentication with the username and password" do - expect(net_http_get).to receive(:basic_auth).with("username", "password$") - subject.request(uri, options) - end - end - - context "that is all unescaped characters" do - let(:uri) { URI("http://username:password@www.uri-to-fetch.com/api/v2/endpoint") } - it "should request basic authentication with the username and proper cgi compliant password" do - expect(net_http_get).to receive(:basic_auth).with("username", "password") - subject.request(uri, options) - end - end - end - - context "and there is no password provided" do - let(:uri) { URI("http://username@www.uri-to-fetch.com/api/v2/endpoint") } - - it "should request basic authentication with just the user" do - expect(net_http_get).to receive(:basic_auth).with("username", nil) - subject.request(uri, options) - end - end - - context "that contains cgi escaped characters" do - let(:uri) { URI("http://username%24@www.uri-to-fetch.com/api/v2/endpoint") } - - it "should request basic authentication with the proper cgi compliant password user" do - expect(net_http_get).to receive(:basic_auth).with("username$", nil) - subject.request(uri, options) - end - end - end - - context "when the request response causes a NoMethodError" do - before { allow(connection).to receive(:request).with(uri, net_http_get) { raise NoMethodError.new(message) } } - - context "and the error message is about use_ssl=" do - let(:message) { "undefined method 'use_ssl='" } - - it "should raise a LoadError about openssl" do - expect { subject.request(uri, options) }.to raise_error(LoadError, "cannot load such file -- openssl") - end - end - - context "and the error message is not about use_ssl=" do - let(:message) { "undefined method 'undefined_method_call'" } - - it "should raise the original NoMethodError" do - expect { subject.request(uri, options) }.to raise_error(NoMethodError, "undefined method 'undefined_method_call'") - end - end - end - - context "when the request response causes a OpenSSL::SSL::SSLError" do - before { allow(connection).to receive(:request).with(uri, net_http_get) { raise OpenSSL::SSL::SSLError.new } } - - it "should raise a LoadError about openssl" do - expect { subject.request(uri, options) }.to raise_error(Bundler::Fetcher::CertificateFailureError, - %r{Could not verify the SSL certificate for http://www.uri-to-fetch.com/api/v2/endpoint}) - end - end - - context "when the request response causes an error included in HTTP_ERRORS" do - let(:message) { nil } - let(:error) { RuntimeError.new(message) } - - before do - stub_const("Bundler::Fetcher::HTTP_ERRORS", [RuntimeError]) - allow(connection).to receive(:request).with(uri, net_http_get) { raise error } - end - - it "should trace log the error" do - allow(Bundler).to receive_message_chain(:ui, :debug) - expect(Bundler).to receive_message_chain(:ui, :trace).with(error) - expect { subject.request(uri, options) }.to raise_error(Bundler::HTTPError) - end - - context "when error message is about the host being down" do - let(:message) { "host down: http://www.uri-to-fetch.com" } - - it "should raise a Bundler::Fetcher::NetworkDownError" do - expect { subject.request(uri, options) }.to raise_error(Bundler::Fetcher::NetworkDownError, - /Could not reach host www.uri-to-fetch.com/) - end - end - - context "when error message is about getaddrinfo issues" do - let(:message) { "getaddrinfo: nodename nor servname provided for http://www.uri-to-fetch.com" } - - it "should raise a Bundler::Fetcher::NetworkDownError" do - expect { subject.request(uri, options) }.to raise_error(Bundler::Fetcher::NetworkDownError, - /Could not reach host www.uri-to-fetch.com/) - end - end - - context "when error message is about neither host down or getaddrinfo" do - let(:message) { "other error about network" } - - it "should raise a Bundler::HTTPError" do - expect { subject.request(uri, options) }.to raise_error(Bundler::HTTPError, - "Network error while fetching http://www.uri-to-fetch.com/api/v2/endpoint (other error about network)") - end - - context "when the there are credentials provided in the request" do - let(:uri) { URI("http://username:password@www.uri-to-fetch.com/api/v2/endpoint") } - before do - allow(net_http_get).to receive(:basic_auth).with("username", "password") - end - - it "should raise a Bundler::HTTPError that doesn't contain the password" do - expect { subject.request(uri, options) }.to raise_error(Bundler::HTTPError, - "Network error while fetching http://username@www.uri-to-fetch.com/api/v2/endpoint (other error about network)") - end - end - end - - context "when error message is about no route to host" do - let(:message) { "Failed to open TCP connection to www.uri-to-fetch.com:443 " } - - it "should raise a Bundler::Fetcher::HTTPError" do - expect { subject.request(uri, options) }.to raise_error(Bundler::HTTPError, - "Network error while fetching http://www.uri-to-fetch.com/api/v2/endpoint (#{message})") - end - end - end - end -end diff --git a/spec/bundler/bundler/fetcher/index_spec.rb b/spec/bundler/bundler/fetcher/index_spec.rb deleted file mode 100644 index 0cf0ae764e..0000000000 --- a/spec/bundler/bundler/fetcher/index_spec.rb +++ /dev/null @@ -1,99 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe Bundler::Fetcher::Index do - let(:downloader) { nil } - let(:remote) { nil } - let(:display_uri) { "http://sample_uri.com" } - let(:rubygems) { double(:rubygems) } - let(:gem_names) { %w[foo bar] } - - subject { described_class.new(downloader, remote, display_uri) } - - before { allow(Bundler).to receive(:rubygems).and_return(rubygems) } - - it "fetches and returns the list of remote specs" do - expect(rubygems).to receive(:fetch_all_remote_specs) { nil } - subject.specs(gem_names) - end - - context "error handling" do - shared_examples_for "the error is properly handled" do - let(:remote_uri) { URI("http://remote-uri.org") } - before do - allow(subject).to receive(:remote_uri).and_return(remote_uri) - end - - context "when certificate verify failed" do - let(:error_message) { "certificate verify failed" } - - it "should raise a Bundler::Fetcher::CertificateFailureError" do - expect { subject.specs(gem_names) }.to raise_error(Bundler::Fetcher::CertificateFailureError, - %r{Could not verify the SSL certificate for http://sample_uri.com}) - end - end - - context "when a 401 response occurs" do - let(:error_message) { "401" } - - it "should raise a Bundler::Fetcher::AuthenticationRequiredError" do - expect { subject.specs(gem_names) }.to raise_error(Bundler::Fetcher::AuthenticationRequiredError, - %r{Authentication is required for http://remote-uri.org}) - end - end - - context "when a 403 response occurs" do - let(:error_message) { "403" } - - before do - allow(remote_uri).to receive(:userinfo).and_return(userinfo) - end - - context "and there was userinfo" do - let(:userinfo) { double(:userinfo) } - - it "should raise a Bundler::Fetcher::BadAuthenticationError" do - expect { subject.specs(gem_names) }.to raise_error(Bundler::Fetcher::BadAuthenticationError, - %r{Bad username or password for http://remote-uri.org}) - end - end - - context "and there was no userinfo" do - let(:userinfo) { nil } - - it "should raise a Bundler::Fetcher::AuthenticationRequiredError" do - expect { subject.specs(gem_names) }.to raise_error(Bundler::Fetcher::AuthenticationRequiredError, - %r{Authentication is required for http://remote-uri.org}) - end - end - end - - context "any other message is returned" do - let(:error_message) { "You get an error, you get an error!" } - - before { allow(Bundler).to receive(:ui).and_return(double(:trace => nil)) } - - it "should raise a Bundler::HTTPError" do - expect { subject.specs(gem_names) }.to raise_error(Bundler::HTTPError, "Could not fetch specs from http://sample_uri.com") - end - end - end - - context "when a Gem::RemoteFetcher::FetchError occurs" do - before { allow(rubygems).to receive(:fetch_all_remote_specs) { raise Gem::RemoteFetcher::FetchError.new(error_message, nil) } } - - it_behaves_like "the error is properly handled" - end - - context "when a OpenSSL::SSL::SSLError occurs" do - before { allow(rubygems).to receive(:fetch_all_remote_specs) { raise OpenSSL::SSL::SSLError.new(error_message) } } - - it_behaves_like "the error is properly handled" - end - - context "when a Net::HTTPFatalError occurs" do - before { allow(rubygems).to receive(:fetch_all_remote_specs) { raise Net::HTTPFatalError.new(error_message, 404) } } - - it_behaves_like "the error is properly handled" - end - end -end diff --git a/spec/bundler/bundler/fetcher_spec.rb b/spec/bundler/bundler/fetcher_spec.rb deleted file mode 100644 index 184b9efa64..0000000000 --- a/spec/bundler/bundler/fetcher_spec.rb +++ /dev/null @@ -1,161 +0,0 @@ -# frozen_string_literal: true - -require "bundler/fetcher" - -RSpec.describe Bundler::Fetcher do - let(:uri) { URI("https://example.com") } - let(:remote) { double("remote", :uri => uri, :original_uri => nil) } - - subject(:fetcher) { Bundler::Fetcher.new(remote) } - - before do - allow(Bundler).to receive(:root) { Pathname.new("root") } - end - - describe "#connection" do - context "when Gem.configuration doesn't specify http_proxy" do - it "specify no http_proxy" do - expect(fetcher.http_proxy).to be_nil - end - it "consider environment vars when determine proxy" do - with_env_vars("HTTP_PROXY" => "http://proxy-example.com") do - expect(fetcher.http_proxy).to match("http://proxy-example.com") - end - end - end - context "when Gem.configuration specifies http_proxy " do - let(:proxy) { "http://proxy-example2.com" } - before do - allow(Bundler.rubygems.configuration).to receive(:[]).with(:http_proxy).and_return(proxy) - end - it "consider Gem.configuration when determine proxy" do - expect(fetcher.http_proxy).to match("http://proxy-example2.com") - end - it "consider Gem.configuration when determine proxy" do - with_env_vars("HTTP_PROXY" => "http://proxy-example.com") do - expect(fetcher.http_proxy).to match("http://proxy-example2.com") - end - end - context "when the proxy is :no_proxy" do - let(:proxy) { :no_proxy } - it "does not set a proxy" do - expect(fetcher.http_proxy).to be_nil - end - end - end - - context "when a rubygems source mirror is set" do - let(:orig_uri) { URI("http://zombo.com") } - let(:remote_with_mirror) do - double("remote", :uri => uri, :original_uri => orig_uri, :anonymized_uri => uri) - end - - let(:fetcher) { Bundler::Fetcher.new(remote_with_mirror) } - - it "sets the 'X-Gemfile-Source' header containing the original source" do - expect( - fetcher.send(:connection).override_headers["X-Gemfile-Source"] - ).to eq("http://zombo.com") - end - end - - context "when there is no rubygems source mirror set" do - let(:remote_no_mirror) do - double("remote", :uri => uri, :original_uri => nil, :anonymized_uri => uri) - end - - let(:fetcher) { Bundler::Fetcher.new(remote_no_mirror) } - - it "does not set the 'X-Gemfile-Source' header" do - expect(fetcher.send(:connection).override_headers["X-Gemfile-Source"]).to be_nil - end - end - - context "when there are proxy environment variable(s) set" do - it "consider http_proxy" do - with_env_vars("HTTP_PROXY" => "http://proxy-example3.com") do - expect(fetcher.http_proxy).to match("http://proxy-example3.com") - end - end - it "consider no_proxy" do - with_env_vars("HTTP_PROXY" => "http://proxy-example4.com", "NO_PROXY" => ".example.com,.example.net") do - expect( - fetcher.send(:connection).no_proxy - ).to eq([".example.com", ".example.net"]) - end - end - end - - context "when no ssl configuration is set" do - it "no cert" do - expect(fetcher.send(:connection).cert).to be_nil - expect(fetcher.send(:connection).key).to be_nil - end - end - - context "when bunder ssl ssl configuration is set" do - before do - cert = File.join(Spec::Path.tmpdir, "cert") - File.open(cert, "w") {|f| f.write "PEM" } - allow(Bundler.settings).to receive(:[]).and_return(nil) - allow(Bundler.settings).to receive(:[]).with(:ssl_client_cert).and_return(cert) - expect(OpenSSL::X509::Certificate).to receive(:new).with("PEM").and_return("cert") - expect(OpenSSL::PKey::RSA).to receive(:new).with("PEM").and_return("key") - end - after do - FileUtils.rm File.join(Spec::Path.tmpdir, "cert") - end - it "use bundler configuration" do - expect(fetcher.send(:connection).cert).to eq("cert") - expect(fetcher.send(:connection).key).to eq("key") - end - end - - context "when gem ssl configuration is set" do - before do - allow(Bundler.rubygems.configuration).to receive_messages( - :http_proxy => nil, - :ssl_client_cert => "cert", - :ssl_ca_cert => "ca" - ) - expect(File).to receive(:read).and_return("") - expect(OpenSSL::X509::Certificate).to receive(:new).and_return("cert") - expect(OpenSSL::PKey::RSA).to receive(:new).and_return("key") - store = double("ca store") - expect(store).to receive(:add_file) - expect(OpenSSL::X509::Store).to receive(:new).and_return(store) - end - it "use gem configuration" do - expect(fetcher.send(:connection).cert).to eq("cert") - expect(fetcher.send(:connection).key).to eq("key") - end - end - end - - describe "#user_agent" do - it "builds user_agent with current ruby version and Bundler settings" do - allow(Bundler.settings).to receive(:all).and_return(%w[foo bar]) - expect(fetcher.user_agent).to match(%r{bundler/(\d.)}) - expect(fetcher.user_agent).to match(%r{rubygems/(\d.)}) - expect(fetcher.user_agent).to match(%r{ruby/(\d.)}) - expect(fetcher.user_agent).to match(%r{options/foo,bar}) - end - - describe "include CI information" do - it "from one CI" do - with_env_vars("JENKINS_URL" => "foo") do - ci_part = fetcher.user_agent.split(" ").find {|x| x.match(%r{\Aci/}) } - expect(ci_part).to match("jenkins") - end - end - - it "from many CI" do - with_env_vars("TRAVIS" => "foo", "CI_NAME" => "my_ci") do - ci_part = fetcher.user_agent.split(" ").find {|x| x.match(%r{\Aci/}) } - expect(ci_part).to match("travis") - expect(ci_part).to match("my_ci") - end - end - end - end -end diff --git a/spec/bundler/bundler/friendly_errors_spec.rb b/spec/bundler/bundler/friendly_errors_spec.rb deleted file mode 100644 index 2a1be491ef..0000000000 --- a/spec/bundler/bundler/friendly_errors_spec.rb +++ /dev/null @@ -1,270 +0,0 @@ -# frozen_string_literal: true - -require "bundler" -require "bundler/friendly_errors" -require "cgi" - -RSpec.describe Bundler, "friendly errors" do - context "with invalid YAML in .gemrc" do - before do - File.open(Gem.configuration.config_file_name, "w") do |f| - f.write "invalid: yaml: hah" - end - end - - after do - FileUtils.rm(Gem.configuration.config_file_name) - end - - it "reports a relevant friendly error message", :ruby => ">= 1.9", :rubygems => "< 2.5.0" do - gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - G - - bundle :install, :env => { "DEBUG" => true } - - expect(out).to include("Your RubyGems configuration") - expect(out).to include("invalid YAML syntax") - expect(out).to include("Psych::SyntaxError") - expect(out).not_to include("ERROR REPORT TEMPLATE") - expect(exitstatus).to eq(25) if exitstatus - end - - it "reports a relevant friendly error message", :ruby => ">= 1.9", :rubygems => ">= 2.5.0" do - gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - G - - bundle :install, :env => { "DEBUG" => true } - - expect(last_command.stderr).to include("Failed to load #{home(".gemrc")}") - expect(exitstatus).to eq(0) if exitstatus - end - end - - it "calls log_error in case of exception" do - exception = Exception.new - expect(Bundler::FriendlyErrors).to receive(:exit_status).with(exception).and_return(1) - expect do - Bundler.with_friendly_errors do - raise exception - end - end.to raise_error(SystemExit) - end - - it "calls exit_status on exception" do - exception = Exception.new - expect(Bundler::FriendlyErrors).to receive(:log_error).with(exception) - expect do - Bundler.with_friendly_errors do - raise exception - end - end.to raise_error(SystemExit) - end - - describe "#log_error" do - shared_examples "Bundler.ui receive error" do |error, message| - it "" do - expect(Bundler.ui).to receive(:error).with(message || error.message) - Bundler::FriendlyErrors.log_error(error) - end - end - - shared_examples "Bundler.ui receive trace" do |error| - it "" do - expect(Bundler.ui).to receive(:trace).with(error) - Bundler::FriendlyErrors.log_error(error) - end - end - - context "YamlSyntaxError" do - it_behaves_like "Bundler.ui receive error", Bundler::YamlSyntaxError.new(StandardError.new, "sample_message") - - it "Bundler.ui receive trace" do - std_error = StandardError.new - exception = Bundler::YamlSyntaxError.new(std_error, "sample_message") - expect(Bundler.ui).to receive(:trace).with(std_error) - Bundler::FriendlyErrors.log_error(exception) - end - end - - context "Dsl::DSLError, GemspecError" do - it_behaves_like "Bundler.ui receive error", Bundler::Dsl::DSLError.new("description", "dsl_path", "backtrace") - it_behaves_like "Bundler.ui receive error", Bundler::GemspecError.new - end - - context "GemRequireError" do - let(:orig_error) { StandardError.new } - let(:error) { Bundler::GemRequireError.new(orig_error, "sample_message") } - - before do - allow(orig_error).to receive(:backtrace).and_return([]) - end - - it "Bundler.ui receive error" do - expect(Bundler.ui).to receive(:error).with(error.message) - Bundler::FriendlyErrors.log_error(error) - end - - it "writes to Bundler.ui.trace" do - expect(Bundler.ui).to receive(:trace).with(orig_error, nil, true) - Bundler::FriendlyErrors.log_error(error) - end - end - - context "BundlerError" do - it "Bundler.ui receive error" do - error = Bundler::BundlerError.new - expect(Bundler.ui).to receive(:error).with(error.message, :wrap => true) - Bundler::FriendlyErrors.log_error(error) - end - it_behaves_like "Bundler.ui receive trace", Bundler::BundlerError.new - end - - context "Thor::Error" do - it_behaves_like "Bundler.ui receive error", Bundler::Thor::Error.new - end - - context "LoadError" do - let(:error) { LoadError.new("cannot load such file -- openssl") } - - it "Bundler.ui receive error" do - expect(Bundler.ui).to receive(:error).with("\nCould not load OpenSSL.") - Bundler::FriendlyErrors.log_error(error) - end - - it "Bundler.ui receive warn" do - expect(Bundler.ui).to receive(:warn).with(any_args, :wrap => true) - Bundler::FriendlyErrors.log_error(error) - end - - it "Bundler.ui receive trace" do - expect(Bundler.ui).to receive(:trace).with(error) - Bundler::FriendlyErrors.log_error(error) - end - end - - context "Interrupt" do - it "Bundler.ui receive error" do - expect(Bundler.ui).to receive(:error).with("\nQuitting...") - Bundler::FriendlyErrors.log_error(Interrupt.new) - end - it_behaves_like "Bundler.ui receive trace", Interrupt.new - end - - context "Gem::InvalidSpecificationException" do - it "Bundler.ui receive error" do - error = Gem::InvalidSpecificationException.new - expect(Bundler.ui).to receive(:error).with(error.message, :wrap => true) - Bundler::FriendlyErrors.log_error(error) - end - end - - context "SystemExit" do - # Does nothing - end - - context "Java::JavaLang::OutOfMemoryError" do - module Java - module JavaLang - class OutOfMemoryError < StandardError; end - end - end - - it "Bundler.ui receive error" do - error = Java::JavaLang::OutOfMemoryError.new - expect(Bundler.ui).to receive(:error).with(/JVM has run out of memory/) - Bundler::FriendlyErrors.log_error(error) - end - end - - context "unexpected error" do - it "calls request_issue_report_for with error" do - error = StandardError.new - expect(Bundler::FriendlyErrors).to receive(:request_issue_report_for).with(error) - Bundler::FriendlyErrors.log_error(error) - end - end - end - - describe "#exit_status" do - it "calls status_code for BundlerError" do - error = Bundler::BundlerError.new - expect(error).to receive(:status_code).and_return("sample_status_code") - expect(Bundler::FriendlyErrors.exit_status(error)).to eq("sample_status_code") - end - - it "returns 15 for Thor::Error" do - error = Bundler::Thor::Error.new - expect(Bundler::FriendlyErrors.exit_status(error)).to eq(15) - end - - it "calls status for SystemExit" do - error = SystemExit.new - expect(error).to receive(:status).and_return("sample_status") - expect(Bundler::FriendlyErrors.exit_status(error)).to eq("sample_status") - end - - it "returns 1 in other cases" do - error = StandardError.new - expect(Bundler::FriendlyErrors.exit_status(error)).to eq(1) - end - end - - describe "#request_issue_report_for" do - it "calls relevant methods for Bundler.ui" do - expect(Bundler.ui).to receive(:info) - expect(Bundler.ui).to receive(:error) - expect(Bundler.ui).to receive(:warn) - Bundler::FriendlyErrors.request_issue_report_for(StandardError.new) - end - - it "includes error class, message and backlog" do - error = StandardError.new - allow(Bundler::FriendlyErrors).to receive(:issues_url).and_return("") - - expect(error).to receive(:class).at_least(:once) - expect(error).to receive(:message).at_least(:once) - expect(error).to receive(:backtrace).at_least(:once) - Bundler::FriendlyErrors.request_issue_report_for(error) - end - end - - describe "#issues_url" do - it "generates a search URL for the exception message" do - exception = Exception.new("Exception message") - - expect(Bundler::FriendlyErrors.issues_url(exception)).to eq("https://github.com/bundler/bundler/search?q=Exception+message&type=Issues") - end - - it "generates a search URL for only the first line of a multi-line exception message" do - exception = Exception.new(< "false", "BUNDLE_GEM__TEST" => "false", "BUNDLE_GEM__COC" => "false" - bundle "gem #{app_name}" - end - - context "determining gemspec" do - subject { Bundler::GemHelper.new(app_path) } - - context "fails" do - it "when there is no gemspec" do - FileUtils.rm app_gemspec_path - expect { subject }.to raise_error(/Unable to determine name/) - end - - it "when there are two gemspecs and the name isn't specified" do - FileUtils.touch app_path.join("#{app_name}-2.gemspec") - expect { subject }.to raise_error(/Unable to determine name/) - end - end - - context "interpolates the name" do - before do - # Remove exception that prevents public pushes on older RubyGems versions - if Gem::Version.new(Gem::VERSION) < Gem::Version.new("2.0") - content = File.read(app_gemspec_path) - content.sub!(/raise "RubyGems 2\.0 or newer.*/, "") - File.open(app_gemspec_path, "w") {|f| f.write(content) } - end - end - - it "when there is only one gemspec" do - expect(subject.gemspec.name).to eq(app_name) - end - - it "for a hidden gemspec" do - FileUtils.mv app_gemspec_path, app_path.join(".gemspec") - expect(subject.gemspec.name).to eq(app_name) - end - end - - it "handles namespaces and converts them to CamelCase" do - bundle "gem #{app_name}-foo_bar" - underscore_path = bundled_app "#{app_name}-foo_bar" - - lib = underscore_path.join("lib/#{app_name}/foo_bar.rb").read - expect(lib).to include("module LoremIpsum") - expect(lib).to include("module FooBar") - end - end - - context "gem management" do - def mock_confirm_message(message) - expect(Bundler.ui).to receive(:confirm).with(message) - end - - def mock_build_message(name, version) - message = "#{name} #{version} built to pkg/#{name}-#{version}.gem." - mock_confirm_message message - end - - subject! { Bundler::GemHelper.new(app_path) } - let(:app_version) { "0.1.0" } - let(:app_gem_dir) { app_path.join("pkg") } - let(:app_gem_path) { app_gem_dir.join("#{app_name}-#{app_version}.gem") } - let(:app_gemspec_content) { remove_push_guard(File.read(app_gemspec_path)) } - - before(:each) do - content = app_gemspec_content.gsub("TODO: ", "") - content.sub!(/homepage\s+= ".*"/, 'homepage = ""') - File.open(app_gemspec_path, "w") {|file| file << content } - end - - def remove_push_guard(gemspec_content) - # Remove exception that prevents public pushes on older RubyGems versions - if Gem::Version.new(Gem::VERSION) < Gem::Version.new("2.0") - gemspec_content.sub!(/raise "RubyGems 2\.0 or newer.*/, "") - end - gemspec_content - end - - it "uses a shell UI for output" do - expect(Bundler.ui).to be_a(Bundler::UI::Shell) - end - - describe "#install" do - let!(:rake_application) { Rake.application } - - before(:each) do - Rake.application = Rake::Application.new - end - - after(:each) do - Rake.application = rake_application - end - - context "defines Rake tasks" do - let(:task_names) do - %w[build install release release:guard_clean - release:source_control_push release:rubygem_push] - end - - context "before installation" do - it "raises an error with appropriate message" do - task_names.each do |name| - expect { Rake.application[name] }. - to raise_error(/^Don't know how to build task '#{name}'/) - end - end - end - - context "after installation" do - before do - subject.install - end - - it "adds Rake tasks successfully" do - task_names.each do |name| - expect { Rake.application[name] }.not_to raise_error - expect(Rake.application[name]).to be_instance_of Rake::Task - end - end - - it "provides a way to access the gemspec object" do - expect(subject.gemspec.name).to eq(app_name) - end - end - end - end - - describe "#build_gem" do - context "when build failed" do - it "raises an error with appropriate message" do - # break the gemspec by adding back the TODOs - File.open(app_gemspec_path, "w") {|file| file << app_gemspec_content } - expect { subject.build_gem }.to raise_error(/TODO/) - end - end - - context "when build was successful" do - it "creates .gem file" do - mock_build_message app_name, app_version - subject.build_gem - expect(app_gem_path).to exist - end - end - end - - describe "#install_gem" do - context "when installation was successful" do - it "gem is installed" do - mock_build_message app_name, app_version - mock_confirm_message "#{app_name} (#{app_version}) installed." - subject.install_gem(nil, :local) - expect(app_gem_path).to exist - gem_command! :list - expect(out).to include("#{app_name} (#{app_version})") - end - end - - context "when installation fails" do - it "raises an error with appropriate message" do - # create empty gem file in order to simulate install failure - allow(subject).to receive(:build_gem) do - FileUtils.mkdir_p(app_gem_dir) - FileUtils.touch app_gem_path - app_gem_path - end - expect { subject.install_gem }.to raise_error(/Couldn't install gem/) - end - end - end - - describe "rake release" do - let!(:rake_application) { Rake.application } - - before(:each) do - Rake.application = Rake::Application.new - subject.install - end - - after(:each) do - Rake.application = rake_application - end - - before do - Dir.chdir(app_path) do - `git init` - `git config user.email "you@example.com"` - `git config user.name "name"` - `git config push.default simple` - end - - # silence messages - allow(Bundler.ui).to receive(:confirm) - allow(Bundler.ui).to receive(:error) - end - - context "fails" do - it "when there are unstaged files" do - expect { Rake.application["release"].invoke }. - to raise_error("There are files that need to be committed first.") - end - - it "when there are uncommitted files" do - Dir.chdir(app_path) { `git add .` } - expect { Rake.application["release"].invoke }. - to raise_error("There are files that need to be committed first.") - end - - it "when there is no git remote" do - Dir.chdir(app_path) { `git commit -a -m "initial commit"` } - expect { Rake.application["release"].invoke }.to raise_error(RuntimeError) - end - end - - context "succeeds" do - before do - Dir.chdir(gem_repo1) { `git init --bare` } - Dir.chdir(app_path) do - `git remote add origin file://#{gem_repo1}` - `git commit -a -m "initial commit"` - end - end - - it "on releasing" do - mock_build_message app_name, app_version - mock_confirm_message "Tagged v#{app_version}." - mock_confirm_message "Pushed git commits and tags." - expect(subject).to receive(:rubygem_push).with(app_gem_path.to_s) - - Dir.chdir(app_path) { sys_exec("git push -u origin master") } - - Rake.application["release"].invoke - end - - it "even if tag already exists" do - mock_build_message app_name, app_version - mock_confirm_message "Tag v#{app_version} has already been created." - expect(subject).to receive(:rubygem_push).with(app_gem_path.to_s) - - Dir.chdir(app_path) do - `git tag -a -m \"Version #{app_version}\" v#{app_version}` - end - - Rake.application["release"].invoke - end - end - end - - describe "release:rubygem_push" do - let!(:rake_application) { Rake.application } - - before(:each) do - Rake.application = Rake::Application.new - subject.install - allow(subject).to receive(:sh) - end - - after(:each) do - Rake.application = rake_application - end - - before do - Dir.chdir(app_path) do - `git init` - `git config user.email "you@example.com"` - `git config user.name "name"` - `git config push.default simple` - end - - # silence messages - allow(Bundler.ui).to receive(:confirm) - allow(Bundler.ui).to receive(:error) - - credentials = double("credentials", "file?" => true) - allow(Bundler.user_home).to receive(:join). - with(".gem/credentials").and_return(credentials) - end - - describe "success messaging" do - context "No allowed_push_host set" do - before do - allow(subject).to receive(:allowed_push_host).and_return(nil) - end - - around do |example| - orig_host = ENV["RUBYGEMS_HOST"] - ENV["RUBYGEMS_HOST"] = rubygems_host_env - - example.run - - ENV["RUBYGEMS_HOST"] = orig_host - end - - context "RUBYGEMS_HOST env var is set" do - let(:rubygems_host_env) { "https://custom.env.gemhost.com" } - - it "should report successful push to the host from the environment" do - mock_confirm_message "Pushed #{app_name} #{app_version} to #{rubygems_host_env}" - - Rake.application["release:rubygem_push"].invoke - end - end - - context "RUBYGEMS_HOST env var is not set" do - let(:rubygems_host_env) { nil } - - it "should report successful push to rubygems.org" do - mock_confirm_message "Pushed #{app_name} #{app_version} to rubygems.org" - - Rake.application["release:rubygem_push"].invoke - end - end - - context "RUBYGEMS_HOST env var is an empty string" do - let(:rubygems_host_env) { "" } - - it "should report successful push to rubygems.org" do - mock_confirm_message "Pushed #{app_name} #{app_version} to rubygems.org" - - Rake.application["release:rubygem_push"].invoke - end - end - end - - context "allowed_push_host set in gemspec" do - before do - allow(subject).to receive(:allowed_push_host).and_return("https://my.gemhost.com") - end - - it "should report successful push to the allowed gem host" do - mock_confirm_message "Pushed #{app_name} #{app_version} to https://my.gemhost.com" - - Rake.application["release:rubygem_push"].invoke - end - end - end - end - end -end diff --git a/spec/bundler/bundler/gem_version_promoter_spec.rb b/spec/bundler/bundler/gem_version_promoter_spec.rb deleted file mode 100644 index 01e0232fba..0000000000 --- a/spec/bundler/bundler/gem_version_promoter_spec.rb +++ /dev/null @@ -1,179 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe Bundler::GemVersionPromoter do - context "conservative resolver" do - def versions(result) - result.flatten.map(&:version).map(&:to_s) - end - - def make_instance(*args) - @gvp = Bundler::GemVersionPromoter.new(*args).tap do |gvp| - gvp.class.class_eval { public :filter_dep_specs, :sort_dep_specs } - end - end - - def unlocking(options) - make_instance(Bundler::SpecSet.new([]), ["foo"]).tap do |p| - p.level = options[:level] if options[:level] - p.strict = options[:strict] if options[:strict] - end - end - - def keep_locked(options) - make_instance(Bundler::SpecSet.new([]), ["bar"]).tap do |p| - p.level = options[:level] if options[:level] - p.strict = options[:strict] if options[:strict] - end - end - - def build_spec_groups(name, versions) - versions.map do |v| - Bundler::Resolver::SpecGroup.new(build_spec(name, v)) - end - end - - # Rightmost (highest array index) in result is most preferred. - # Leftmost (lowest array index) in result is least preferred. - # `build_spec_groups` has all versions of gem in index. - # `build_spec` is the version currently in the .lock file. - # - # In default (not strict) mode, all versions in the index will - # be returned, allowing Bundler the best chance to resolve all - # dependencies, but sometimes resulting in upgrades that some - # would not consider conservative. - context "filter specs (strict) level patch" do - it "when keeping build_spec, keep current, next release" do - keep_locked(:level => :patch) - res = @gvp.filter_dep_specs( - build_spec_groups("foo", %w[1.7.8 1.7.9 1.8.0]), - build_spec("foo", "1.7.8").first - ) - expect(versions(res)).to eq %w[1.7.9 1.7.8] - end - - it "when unlocking prefer next release first" do - unlocking(:level => :patch) - res = @gvp.filter_dep_specs( - build_spec_groups("foo", %w[1.7.8 1.7.9 1.8.0]), - build_spec("foo", "1.7.8").first - ) - expect(versions(res)).to eq %w[1.7.8 1.7.9] - end - - it "when unlocking keep current when already at latest release" do - unlocking(:level => :patch) - res = @gvp.filter_dep_specs( - build_spec_groups("foo", %w[1.7.9 1.8.0 2.0.0]), - build_spec("foo", "1.7.9").first - ) - expect(versions(res)).to eq %w[1.7.9] - end - end - - context "filter specs (strict) level minor" do - it "when unlocking favor next releases, remove minor and major increases" do - unlocking(:level => :minor) - res = @gvp.filter_dep_specs( - build_spec_groups("foo", %w[0.2.0 0.3.0 0.3.1 0.9.0 1.0.0 2.0.0 2.0.1]), - build_spec("foo", "0.2.0").first - ) - expect(versions(res)).to eq %w[0.2.0 0.3.0 0.3.1 0.9.0] - end - - it "when keep locked, keep current, then favor next release, remove minor and major increases" do - keep_locked(:level => :minor) - res = @gvp.filter_dep_specs( - build_spec_groups("foo", %w[0.2.0 0.3.0 0.3.1 0.9.0 1.0.0 2.0.0 2.0.1]), - build_spec("foo", "0.2.0").first - ) - expect(versions(res)).to eq %w[0.3.0 0.3.1 0.9.0 0.2.0] - end - end - - context "sort specs (not strict) level patch" do - it "when not unlocking, same order but make sure build_spec version is most preferred to stay put" do - keep_locked(:level => :patch) - res = @gvp.sort_dep_specs( - build_spec_groups("foo", %w[1.5.4 1.6.5 1.7.6 1.7.7 1.7.8 1.7.9 1.8.0 1.8.1 2.0.0 2.0.1]), - build_spec("foo", "1.7.7").first - ) - expect(versions(res)).to eq %w[1.5.4 1.6.5 1.7.6 2.0.0 2.0.1 1.8.0 1.8.1 1.7.8 1.7.9 1.7.7] - end - - it "when unlocking favor next release, then current over minor increase" do - unlocking(:level => :patch) - res = @gvp.sort_dep_specs( - build_spec_groups("foo", %w[1.7.7 1.7.8 1.7.9 1.8.0]), - build_spec("foo", "1.7.8").first - ) - expect(versions(res)).to eq %w[1.7.7 1.8.0 1.7.8 1.7.9] - end - - it "when unlocking do proper integer comparison, not string" do - unlocking(:level => :patch) - res = @gvp.sort_dep_specs( - build_spec_groups("foo", %w[1.7.7 1.7.8 1.7.9 1.7.15 1.8.0]), - build_spec("foo", "1.7.8").first - ) - expect(versions(res)).to eq %w[1.7.7 1.8.0 1.7.8 1.7.9 1.7.15] - end - - it "leave current when unlocking but already at latest release" do - unlocking(:level => :patch) - res = @gvp.sort_dep_specs( - build_spec_groups("foo", %w[1.7.9 1.8.0 2.0.0]), - build_spec("foo", "1.7.9").first - ) - expect(versions(res)).to eq %w[2.0.0 1.8.0 1.7.9] - end - end - - context "sort specs (not strict) level minor" do - it "when unlocking favor next release, then minor increase over current" do - unlocking(:level => :minor) - res = @gvp.sort_dep_specs( - build_spec_groups("foo", %w[0.2.0 0.3.0 0.3.1 0.9.0 1.0.0 2.0.0 2.0.1]), - build_spec("foo", "0.2.0").first - ) - expect(versions(res)).to eq %w[2.0.0 2.0.1 1.0.0 0.2.0 0.3.0 0.3.1 0.9.0] - end - end - - context "level error handling" do - subject { Bundler::GemVersionPromoter.new } - - it "should raise if not major, minor or patch is passed" do - expect { subject.level = :minjor }.to raise_error ArgumentError - end - - it "should raise if invalid classes passed" do - [123, nil].each do |value| - expect { subject.level = value }.to raise_error ArgumentError - end - end - - it "should accept major, minor patch symbols" do - [:major, :minor, :patch].each do |value| - subject.level = value - expect(subject.level).to eq value - end - end - - it "should accept major, minor patch strings" do - %w[major minor patch].each do |value| - subject.level = value - expect(subject.level).to eq value.to_sym - end - end - end - - context "debug output" do - it "should not kerblooie on its own debug output" do - gvp = unlocking(:level => :patch) - dep = Bundler::DepProxy.new(dep("foo", "1.2.0").first, "ruby") - result = gvp.send(:debug_format_result, dep, build_spec_groups("foo", %w[1.2.0 1.3.0])) - expect(result.class).to eq Array - end - end - end -end diff --git a/spec/bundler/bundler/index_spec.rb b/spec/bundler/bundler/index_spec.rb deleted file mode 100644 index 0f3f6e4944..0000000000 --- a/spec/bundler/bundler/index_spec.rb +++ /dev/null @@ -1,36 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe Bundler::Index do - let(:specs) { [] } - subject { described_class.build {|i| i.use(specs) } } - - context "specs with a nil platform" do - let(:spec) do - Gem::Specification.new do |s| - s.name = "json" - s.version = "1.8.3" - allow(s).to receive(:platform).and_return(nil) - end - end - let(:specs) { [spec] } - - describe "#search_by_spec" do - it "finds the spec when a nil platform is specified" do - expect(subject.search(spec)).to eq([spec]) - end - - it "finds the spec when a ruby platform is specified" do - query = spec.dup.tap {|s| s.platform = "ruby" } - expect(subject.search(query)).to eq([spec]) - end - end - end - - context "with specs that include development dependencies" do - let(:specs) { [*build_spec("a", "1.0.0") {|s| s.development("b", "~> 1.0") }] } - - it "does not include b in #dependency_names" do - expect(subject.dependency_names).not_to include("b") - end - end -end diff --git a/spec/bundler/bundler/installer/gem_installer_spec.rb b/spec/bundler/bundler/installer/gem_installer_spec.rb deleted file mode 100644 index 7340a3acc0..0000000000 --- a/spec/bundler/bundler/installer/gem_installer_spec.rb +++ /dev/null @@ -1,29 +0,0 @@ -# frozen_string_literal: true - -require "bundler/installer/gem_installer" - -RSpec.describe Bundler::GemInstaller do - let(:installer) { instance_double("Installer") } - let(:spec_source) { instance_double("SpecSource") } - let(:spec) { instance_double("Specification", :name => "dummy", :version => "0.0.1", :loaded_from => "dummy", :source => spec_source) } - - subject { described_class.new(spec, installer) } - - context "spec_settings is nil" do - it "invokes install method with empty build_args", :rubygems => ">= 2" do - allow(spec_source).to receive(:install).with(spec, :force => false, :ensure_builtin_gems_cached => false, :build_args => []) - subject.install_from_spec - end - end - - context "spec_settings is build option" do - it "invokes install method with build_args", :rubygems => ">= 2" do - allow(Bundler.settings).to receive(:[]).with(:bin) - allow(Bundler.settings).to receive(:[]).with(:inline) - allow(Bundler.settings).to receive(:[]).with(:forget_cli_options) - allow(Bundler.settings).to receive(:[]).with("build.dummy").and_return("--with-dummy-config=dummy") - expect(spec_source).to receive(:install).with(spec, :force => false, :ensure_builtin_gems_cached => false, :build_args => ["--with-dummy-config=dummy"]) - subject.install_from_spec - end - end -end diff --git a/spec/bundler/bundler/installer/parallel_installer_spec.rb b/spec/bundler/bundler/installer/parallel_installer_spec.rb deleted file mode 100644 index ace5c1a23a..0000000000 --- a/spec/bundler/bundler/installer/parallel_installer_spec.rb +++ /dev/null @@ -1,47 +0,0 @@ -# frozen_string_literal: true - -require "bundler/installer/parallel_installer" - -RSpec.describe Bundler::ParallelInstaller do - let(:installer) { instance_double("Installer") } - let(:all_specs) { [] } - let(:size) { 1 } - let(:standalone) { false } - let(:force) { false } - - subject { described_class.new(installer, all_specs, size, standalone, force) } - - context "when dependencies that are not on the overall installation list are the only ones not installed" do - let(:all_specs) do - [ - build_spec("alpha", "1.0") {|s| s.runtime "a", "1" }, - ].flatten - end - - it "prints a warning" do - expect(Bundler.ui).to receive(:warn).with(<<-W.strip) -Your lockfile was created by an old Bundler that left some things out. -You can fix this by adding the missing gems to your Gemfile, running bundle install, and then removing the gems from your Gemfile. -The missing gems are: -* a depended upon by alpha - W - subject.check_for_corrupt_lockfile - end - - context "when size > 1" do - let(:size) { 500 } - - it "prints a warning and sets size to 1" do - expect(Bundler.ui).to receive(:warn).with(<<-W.strip) -Your lockfile was created by an old Bundler that left some things out. -Because of the missing DEPENDENCIES, we can only install gems one at a time, instead of installing 500 at a time. -You can fix this by adding the missing gems to your Gemfile, running bundle install, and then removing the gems from your Gemfile. -The missing gems are: -* a depended upon by alpha - W - subject.check_for_corrupt_lockfile - expect(subject.size).to eq(1) - end - end - end -end diff --git a/spec/bundler/bundler/installer/spec_installation_spec.rb b/spec/bundler/bundler/installer/spec_installation_spec.rb deleted file mode 100644 index a9cf09a372..0000000000 --- a/spec/bundler/bundler/installer/spec_installation_spec.rb +++ /dev/null @@ -1,62 +0,0 @@ -# frozen_string_literal: true - -require "bundler/installer/parallel_installer" - -RSpec.describe Bundler::ParallelInstaller::SpecInstallation do - let!(:dep) do - a_spec = Object.new - def a_spec.name - "I like tests" - end - a_spec - end - - describe "#ready_to_enqueue?" do - context "when in enqueued state" do - it "is falsey" do - spec = described_class.new(dep) - spec.state = :enqueued - expect(spec.ready_to_enqueue?).to be_falsey - end - end - - context "when in installed state" do - it "returns falsey" do - spec = described_class.new(dep) - spec.state = :installed - expect(spec.ready_to_enqueue?).to be_falsey - end - end - - it "returns truthy" do - spec = described_class.new(dep) - expect(spec.ready_to_enqueue?).to be_truthy - end - end - - describe "#dependencies_installed?" do - context "when all dependencies are installed" do - it "returns true" do - dependencies = [] - dependencies << instance_double("SpecInstallation", :spec => "alpha", :name => "alpha", :installed? => true, :all_dependencies => [], :type => :production) - dependencies << instance_double("SpecInstallation", :spec => "beta", :name => "beta", :installed? => true, :all_dependencies => [], :type => :production) - all_specs = dependencies + [instance_double("SpecInstallation", :spec => "gamma", :name => "gamma", :installed? => false, :all_dependencies => [], :type => :production)] - spec = described_class.new(dep) - allow(spec).to receive(:all_dependencies).and_return(dependencies) - expect(spec.dependencies_installed?(all_specs)).to be_truthy - end - end - - context "when all dependencies are not installed" do - it "returns false" do - dependencies = [] - dependencies << instance_double("SpecInstallation", :spec => "alpha", :name => "alpha", :installed? => false, :all_dependencies => [], :type => :production) - dependencies << instance_double("SpecInstallation", :spec => "beta", :name => "beta", :installed? => true, :all_dependencies => [], :type => :production) - all_specs = dependencies + [instance_double("SpecInstallation", :spec => "gamma", :name => "gamma", :installed? => false, :all_dependencies => [], :type => :production)] - spec = described_class.new(dep) - allow(spec).to receive(:all_dependencies).and_return(dependencies) - expect(spec.dependencies_installed?(all_specs)).to be_falsey - end - end - end -end diff --git a/spec/bundler/bundler/lockfile_parser_spec.rb b/spec/bundler/bundler/lockfile_parser_spec.rb deleted file mode 100644 index 3a6d61336f..0000000000 --- a/spec/bundler/bundler/lockfile_parser_spec.rb +++ /dev/null @@ -1,153 +0,0 @@ -# frozen_string_literal: true - -require "bundler/lockfile_parser" - -RSpec.describe Bundler::LockfileParser do - let(:lockfile_contents) { strip_whitespace(<<-L) } - GIT - remote: https://github.com/alloy/peiji-san.git - revision: eca485d8dc95f12aaec1a434b49d295c7e91844b - specs: - peiji-san (1.2.0) - - GEM - remote: https://rubygems.org/ - specs: - rake (10.3.2) - - PLATFORMS - ruby - - DEPENDENCIES - peiji-san! - rake - - RUBY VERSION - ruby 2.1.3p242 - - BUNDLED WITH - 1.12.0.rc.2 - L - - describe ".sections_in_lockfile" do - it "returns the attributes" do - attributes = described_class.sections_in_lockfile(lockfile_contents) - expect(attributes).to contain_exactly( - "BUNDLED WITH", "DEPENDENCIES", "GEM", "GIT", "PLATFORMS", "RUBY VERSION" - ) - end - end - - describe ".unknown_sections_in_lockfile" do - let(:lockfile_contents) { strip_whitespace(<<-L) } - UNKNOWN ATTR - - UNKNOWN ATTR 2 - random contents - L - - it "returns the unknown attributes" do - attributes = described_class.unknown_sections_in_lockfile(lockfile_contents) - expect(attributes).to contain_exactly("UNKNOWN ATTR", "UNKNOWN ATTR 2") - end - end - - describe ".sections_to_ignore" do - subject { described_class.sections_to_ignore(base_version) } - - context "with a nil base version" do - let(:base_version) { nil } - - it "returns the same as > 1.0" do - expect(subject).to contain_exactly( - described_class::BUNDLED, described_class::RUBY, described_class::PLUGIN - ) - end - end - - context "with a prerelease base version" do - let(:base_version) { Gem::Version.create("1.11.0.rc.1") } - - it "returns the same as for the release version" do - expect(subject).to contain_exactly( - described_class::RUBY, described_class::PLUGIN - ) - end - end - - context "with a current version" do - let(:base_version) { Gem::Version.create(Bundler::VERSION) } - - it "returns an empty array" do - expect(subject).to eq([]) - end - end - - context "with a future version" do - let(:base_version) { Gem::Version.create("5.5.5") } - - it "returns an empty array" do - expect(subject).to eq([]) - end - end - end - - describe "#initialize" do - before { allow(Bundler::SharedHelpers).to receive(:find_gemfile).and_return(bundled_app("gems.rb")) } - subject { described_class.new(lockfile_contents) } - - let(:sources) do - [Bundler::Source::Git.new("uri" => "https://github.com/alloy/peiji-san.git", "revision" => "eca485d8dc95f12aaec1a434b49d295c7e91844b"), - Bundler::Source::Rubygems.new("remotes" => ["https://rubygems.org"])] - end - let(:dependencies) do - { - "peiji-san" => Bundler::Dependency.new("peiji-san", ">= 0"), - "rake" => Bundler::Dependency.new("rake", ">= 0"), - } - end - let(:specs) do - [ - Bundler::LazySpecification.new("peiji-san", v("1.2.0"), rb), - Bundler::LazySpecification.new("rake", v("10.3.2"), rb), - ] - end - let(:platforms) { [rb] } - let(:bundler_version) { Gem::Version.new("1.12.0.rc.2") } - let(:ruby_version) { "ruby 2.1.3p242" } - - shared_examples_for "parsing" do - it "parses correctly" do - expect(subject.sources).to eq sources - expect(subject.dependencies).to eq dependencies - expect(subject.specs).to eq specs - expect(Hash[subject.specs.map {|s| [s, s.dependencies] }]).to eq Hash[subject.specs.map {|s| [s, s.dependencies] }] - expect(subject.platforms).to eq platforms - expect(subject.bundler_version).to eq bundler_version - expect(subject.ruby_version).to eq ruby_version - end - end - - include_examples "parsing" - - context "when an extra section is at the end" do - let(:lockfile_contents) { super() + "\n\nFOO BAR\n baz\n baa\n qux\n" } - include_examples "parsing" - end - - context "when an extra section is at the start" do - let(:lockfile_contents) { "FOO BAR\n baz\n baa\n qux\n\n" + super() } - include_examples "parsing" - end - - context "when an extra section is in the middle" do - let(:lockfile_contents) { super().split(/(?=GEM)/).insert(1, "FOO BAR\n baz\n baa\n qux\n\n").join } - include_examples "parsing" - end - - context "when a dependency has options" do - let(:lockfile_contents) { super().sub("peiji-san!", "peiji-san!\n foo: bar") } - include_examples "parsing" - end - end -end diff --git a/spec/bundler/bundler/mirror_spec.rb b/spec/bundler/bundler/mirror_spec.rb deleted file mode 100644 index 0a8b9f8926..0000000000 --- a/spec/bundler/bundler/mirror_spec.rb +++ /dev/null @@ -1,329 +0,0 @@ -# frozen_string_literal: true - -require "bundler/mirror" - -RSpec.describe Bundler::Settings::Mirror do - let(:mirror) { Bundler::Settings::Mirror.new } - - it "returns zero when fallback_timeout is not set" do - expect(mirror.fallback_timeout).to eq(0) - end - - it "takes a number as a fallback_timeout" do - mirror.fallback_timeout = 1 - expect(mirror.fallback_timeout).to eq(1) - end - - it "takes truthy as a default fallback timeout" do - mirror.fallback_timeout = true - expect(mirror.fallback_timeout).to eq(0.1) - end - - it "takes falsey as a zero fallback timeout" do - mirror.fallback_timeout = false - expect(mirror.fallback_timeout).to eq(0) - end - - it "takes a string with 'true' as a default fallback timeout" do - mirror.fallback_timeout = "true" - expect(mirror.fallback_timeout).to eq(0.1) - end - - it "takes a string with 'false' as a zero fallback timeout" do - mirror.fallback_timeout = "false" - expect(mirror.fallback_timeout).to eq(0) - end - - it "takes a string for the uri but returns an uri object" do - mirror.uri = "http://localhost:9292" - expect(mirror.uri).to eq(URI("http://localhost:9292")) - end - - it "takes an uri object for the uri" do - mirror.uri = URI("http://localhost:9293") - expect(mirror.uri).to eq(URI("http://localhost:9293")) - end - - context "without a uri" do - it "invalidates the mirror" do - mirror.validate! - expect(mirror.valid?).to be_falsey - end - end - - context "with an uri" do - before { mirror.uri = "http://localhost:9292" } - - context "without a fallback timeout" do - it "is not valid by default" do - expect(mirror.valid?).to be_falsey - end - - context "when probed" do - let(:probe) { double } - - context "with a replying mirror" do - before do - allow(probe).to receive(:replies?).and_return(true) - mirror.validate!(probe) - end - - it "is valid" do - expect(mirror.valid?).to be_truthy - end - end - - context "with a non replying mirror" do - before do - allow(probe).to receive(:replies?).and_return(false) - mirror.validate!(probe) - end - - it "is still valid" do - expect(mirror.valid?).to be_truthy - end - end - end - end - - context "with a fallback timeout" do - before { mirror.fallback_timeout = 1 } - - it "is not valid by default" do - expect(mirror.valid?).to be_falsey - end - - context "when probed" do - let(:probe) { double } - - context "with a replying mirror" do - before do - allow(probe).to receive(:replies?).and_return(true) - mirror.validate!(probe) - end - - it "is valid" do - expect(mirror.valid?).to be_truthy - end - - it "is validated only once" do - allow(probe).to receive(:replies?).and_raise("Only once!") - mirror.validate!(probe) - expect(mirror.valid?).to be_truthy - end - end - - context "with a non replying mirror" do - before do - allow(probe).to receive(:replies?).and_return(false) - mirror.validate!(probe) - end - - it "is not valid" do - expect(mirror.valid?).to be_falsey - end - - it "is validated only once" do - allow(probe).to receive(:replies?).and_raise("Only once!") - mirror.validate!(probe) - expect(mirror.valid?).to be_falsey - end - end - end - end - - describe "#==" do - it "returns true if uri and fallback timeout are the same" do - uri = "https://ruby.taobao.org" - mirror = Bundler::Settings::Mirror.new(uri, 1) - another_mirror = Bundler::Settings::Mirror.new(uri, 1) - - expect(mirror == another_mirror).to be true - end - end - end -end - -RSpec.describe Bundler::Settings::Mirrors do - let(:localhost_uri) { URI("http://localhost:9292") } - - context "with a just created mirror" do - let(:mirrors) do - probe = double - allow(probe).to receive(:replies?).and_return(true) - Bundler::Settings::Mirrors.new(probe) - end - - it "returns a mirror that contains the source uri for an unknown uri" do - mirror = mirrors.for("http://rubygems.org/") - expect(mirror).to eq(Bundler::Settings::Mirror.new("http://rubygems.org/")) - end - - it "parses a mirror key and returns a mirror for the parsed uri" do - mirrors.parse("mirror.http://rubygems.org/", localhost_uri) - expect(mirrors.for("http://rubygems.org/").uri).to eq(localhost_uri) - end - - it "parses a relative mirror key and returns a mirror for the parsed http uri" do - mirrors.parse("mirror.rubygems.org", localhost_uri) - expect(mirrors.for("http://rubygems.org/").uri).to eq(localhost_uri) - end - - it "parses a relative mirror key and returns a mirror for the parsed https uri" do - mirrors.parse("mirror.rubygems.org", localhost_uri) - expect(mirrors.for("https://rubygems.org/").uri).to eq(localhost_uri) - end - - context "with a uri parsed already" do - before { mirrors.parse("mirror.http://rubygems.org/", localhost_uri) } - - it "takes a mirror fallback_timeout and assigns the timeout" do - mirrors.parse("mirror.http://rubygems.org.fallback_timeout", "2") - expect(mirrors.for("http://rubygems.org/").fallback_timeout).to eq(2) - end - - it "parses a 'true' fallback timeout and sets the default timeout" do - mirrors.parse("mirror.http://rubygems.org.fallback_timeout", "true") - expect(mirrors.for("http://rubygems.org/").fallback_timeout).to eq(0.1) - end - - it "parses a 'false' fallback timeout and sets it to zero" do - mirrors.parse("mirror.http://rubygems.org.fallback_timeout", "false") - expect(mirrors.for("http://rubygems.org/").fallback_timeout).to eq(0) - end - end - end - - context "with a mirror prober that replies on time" do - let(:mirrors) do - probe = double - allow(probe).to receive(:replies?).and_return(true) - Bundler::Settings::Mirrors.new(probe) - end - - context "with a default fallback_timeout for rubygems.org" do - before do - mirrors.parse("mirror.http://rubygems.org/", localhost_uri) - mirrors.parse("mirror.http://rubygems.org.fallback_timeout", "true") - end - - it "returns localhost" do - expect(mirrors.for("http://rubygems.org").uri).to eq(localhost_uri) - end - end - - context "with a mirror for all" do - before do - mirrors.parse("mirror.all", localhost_uri) - end - - context "without a fallback timeout" do - it "returns localhost uri for rubygems" do - expect(mirrors.for("http://rubygems.org").uri).to eq(localhost_uri) - end - - it "returns localhost for any other url" do - expect(mirrors.for("http://whatever.com/").uri).to eq(localhost_uri) - end - end - context "with a fallback timeout" do - before { mirrors.parse("mirror.all.fallback_timeout", "1") } - - it "returns localhost uri for rubygems" do - expect(mirrors.for("http://rubygems.org").uri).to eq(localhost_uri) - end - - it "returns localhost for any other url" do - expect(mirrors.for("http://whatever.com/").uri).to eq(localhost_uri) - end - end - end - end - - context "with a mirror prober that does not reply on time" do - let(:mirrors) do - probe = double - allow(probe).to receive(:replies?).and_return(false) - Bundler::Settings::Mirrors.new(probe) - end - - context "with a localhost mirror for all" do - before { mirrors.parse("mirror.all", localhost_uri) } - - context "without a fallback timeout" do - it "returns localhost" do - expect(mirrors.for("http://whatever.com").uri).to eq(localhost_uri) - end - end - - context "with a fallback timeout" do - before { mirrors.parse("mirror.all.fallback_timeout", "true") } - - it "returns the source uri, not localhost" do - expect(mirrors.for("http://whatever.com").uri).to eq(URI("http://whatever.com/")) - end - end - end - - context "with localhost as a mirror for rubygems.org" do - before { mirrors.parse("mirror.http://rubygems.org/", localhost_uri) } - - context "without a fallback timeout" do - it "returns the uri that is not mirrored" do - expect(mirrors.for("http://whatever.com").uri).to eq(URI("http://whatever.com/")) - end - - it "returns localhost for rubygems.org" do - expect(mirrors.for("http://rubygems.org/").uri).to eq(localhost_uri) - end - end - - context "with a fallback timeout" do - before { mirrors.parse("mirror.http://rubygems.org/.fallback_timeout", "true") } - - it "returns the uri that is not mirrored" do - expect(mirrors.for("http://whatever.com").uri).to eq(URI("http://whatever.com/")) - end - - it "returns rubygems.org for rubygems.org" do - expect(mirrors.for("http://rubygems.org/").uri).to eq(URI("http://rubygems.org/")) - end - end - end - end -end - -RSpec.describe Bundler::Settings::TCPSocketProbe do - let(:probe) { Bundler::Settings::TCPSocketProbe.new } - - context "with a listening TCP Server" do - def with_server_and_mirror - server = TCPServer.new("127.0.0.1", 0) - mirror = Bundler::Settings::Mirror.new("http://localhost:#{server.addr[1]}", 1) - yield server, mirror - server.close unless server.closed? - end - - it "probes the server correctly" do - with_server_and_mirror do |server, mirror| - expect(server.closed?).to be_falsey - expect(probe.replies?(mirror)).to be_truthy - end - end - - it "probes falsey when the server is down" do - with_server_and_mirror do |server, mirror| - server.close - expect(probe.replies?(mirror)).to be_falsey - end - end - end - - context "with an invalid mirror" do - let(:mirror) { Bundler::Settings::Mirror.new("http://127.0.0.127:9292", true) } - - it "fails with a timeout when there is nothing to tcp handshake" do - expect(probe.replies?(mirror)).to be_falsey - end - end -end diff --git a/spec/bundler/bundler/plugin/api/source_spec.rb b/spec/bundler/bundler/plugin/api/source_spec.rb deleted file mode 100644 index 2c50ff56a4..0000000000 --- a/spec/bundler/bundler/plugin/api/source_spec.rb +++ /dev/null @@ -1,82 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe Bundler::Plugin::API::Source do - let(:uri) { "uri://to/test" } - let(:type) { "spec_type" } - - subject(:source) do - klass = Class.new - klass.send :include, Bundler::Plugin::API::Source - klass.new("uri" => uri, "type" => type) - end - - describe "attributes" do - it "allows access to uri" do - expect(source.uri).to eq("uri://to/test") - end - - it "allows access to name" do - expect(source.name).to eq("spec_type at uri://to/test") - end - end - - context "post_install" do - let(:installer) { double(:installer) } - - before do - allow(Bundler::Source::Path::Installer).to receive(:new) { installer } - end - - it "calls Path::Installer's post_install" do - expect(installer).to receive(:post_install).once - - source.post_install(double(:spec)) - end - end - - context "install_path" do - let(:uri) { "uri://to/a/repository-name" } - let(:hash) { Digest(:SHA1).hexdigest(uri) } - let(:install_path) { Pathname.new "/bundler/install/path" } - - before do - allow(Bundler).to receive(:install_path) { install_path } - end - - it "returns basename with uri_hash" do - expected = Pathname.new "#{install_path}/repository-name-#{hash[0..11]}" - expect(source.install_path).to eq(expected) - end - end - - context "to_lock" do - it "returns the string with remote and type" do - expected = strip_whitespace <<-L - PLUGIN SOURCE - remote: #{uri} - type: #{type} - specs: - L - - expect(source.to_lock).to eq(expected) - end - - context "with additional options to lock" do - before do - allow(source).to receive(:options_to_lock) { { "first" => "option" } } - end - - it "includes them" do - expected = strip_whitespace <<-L - PLUGIN SOURCE - remote: #{uri} - type: #{type} - first: option - specs: - L - - expect(source.to_lock).to eq(expected) - end - end - end -end diff --git a/spec/bundler/bundler/plugin/api_spec.rb b/spec/bundler/bundler/plugin/api_spec.rb deleted file mode 100644 index 58fb908572..0000000000 --- a/spec/bundler/bundler/plugin/api_spec.rb +++ /dev/null @@ -1,83 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe Bundler::Plugin::API do - context "plugin declarations" do - before do - stub_const "UserPluginClass", Class.new(Bundler::Plugin::API) - end - - describe "#command" do - it "declares a command plugin with same class as handler" do - expect(Bundler::Plugin). - to receive(:add_command).with("meh", UserPluginClass).once - - UserPluginClass.command "meh" - end - - it "accepts another class as argument that handles the command" do - stub_const "NewClass", Class.new - expect(Bundler::Plugin).to receive(:add_command).with("meh", NewClass).once - - UserPluginClass.command "meh", NewClass - end - end - - describe "#source" do - it "declares a source plugin with same class as handler" do - expect(Bundler::Plugin). - to receive(:add_source).with("a_source", UserPluginClass).once - - UserPluginClass.source "a_source" - end - - it "accepts another class as argument that handles the command" do - stub_const "NewClass", Class.new - expect(Bundler::Plugin).to receive(:add_source).with("a_source", NewClass).once - - UserPluginClass.source "a_source", NewClass - end - end - - describe "#hook" do - it "accepts a block and passes it to Plugin module" do - foo = double("tester") - expect(foo).to receive(:called) - - expect(Bundler::Plugin).to receive(:add_hook).with("post-foo").and_yield - - Bundler::Plugin::API.hook("post-foo") { foo.called } - end - end - end - - context "bundler interfaces provided" do - before do - stub_const "UserPluginClass", Class.new(Bundler::Plugin::API) - end - - subject(:api) { UserPluginClass.new } - - # A test of delegation - it "provides the Bundler's functions" do - expect(Bundler).to receive(:an_unknown_function).once - - api.an_unknown_function - end - - it "includes Bundler::SharedHelpers' functions" do - expect(Bundler::SharedHelpers).to receive(:an_unknown_helper).once - - api.an_unknown_helper - end - - context "#tmp" do - it "provides a tmp dir" do - expect(api.tmp("mytmp")).to be_directory - end - - it "accepts multiple names for suffix" do - expect(api.tmp("myplugin", "download")).to be_directory - end - end - end -end diff --git a/spec/bundler/bundler/plugin/dsl_spec.rb b/spec/bundler/bundler/plugin/dsl_spec.rb deleted file mode 100644 index be23db3bba..0000000000 --- a/spec/bundler/bundler/plugin/dsl_spec.rb +++ /dev/null @@ -1,38 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe Bundler::Plugin::DSL do - DSL = Bundler::Plugin::DSL - - subject(:dsl) { Bundler::Plugin::DSL.new } - - before do - allow(Bundler).to receive(:root) { Pathname.new "/" } - end - - describe "it ignores only the methods defined in Bundler::Dsl" do - it "doesn't raises error for Dsl methods" do - expect { dsl.install_if }.not_to raise_error - end - - it "raises error for other methods" do - expect { dsl.no_method }.to raise_error(DSL::PluginGemfileError) - end - end - - describe "source block" do - it "adds #source with :type to list and also inferred_plugins list" do - expect(dsl).to receive(:plugin).with("bundler-source-news").once - - dsl.source("some_random_url", :type => "news") {} - - expect(dsl.inferred_plugins).to eq(["bundler-source-news"]) - end - - it "registers a source type plugin only once for multiple declataions" do - expect(dsl).to receive(:plugin).with("bundler-source-news").and_call_original.once - - dsl.source("some_random_url", :type => "news") {} - dsl.source("another_random_url", :type => "news") {} - end - end -end diff --git a/spec/bundler/bundler/plugin/index_spec.rb b/spec/bundler/bundler/plugin/index_spec.rb deleted file mode 100644 index 163b563b2a..0000000000 --- a/spec/bundler/bundler/plugin/index_spec.rb +++ /dev/null @@ -1,178 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe Bundler::Plugin::Index do - Index = Bundler::Plugin::Index - - before do - gemfile "" - path = lib_path(plugin_name) - index.register_plugin("new-plugin", path.to_s, [path.join("lib").to_s], commands, sources, hooks) - end - - let(:plugin_name) { "new-plugin" } - let(:commands) { [] } - let(:sources) { [] } - let(:hooks) { [] } - - subject(:index) { Index.new } - - describe "#register plugin" do - it "is available for retrieval" do - expect(index.plugin_path(plugin_name)).to eq(lib_path(plugin_name)) - end - - it "load_paths is available for retrival" do - expect(index.load_paths(plugin_name)).to eq([lib_path(plugin_name).join("lib").to_s]) - end - - it "is persistent" do - new_index = Index.new - expect(new_index.plugin_path(plugin_name)).to eq(lib_path(plugin_name)) - end - - it "load_paths are persistent" do - new_index = Index.new - expect(new_index.load_paths(plugin_name)).to eq([lib_path(plugin_name).join("lib").to_s]) - end - end - - describe "commands" do - let(:commands) { ["newco"] } - - it "returns the plugins name on query" do - expect(index.command_plugin("newco")).to eq(plugin_name) - end - - it "raises error on conflict" do - expect do - index.register_plugin("aplugin", lib_path("aplugin").to_s, lib_path("aplugin").join("lib").to_s, ["newco"], [], []) - end.to raise_error(Index::CommandConflict) - end - - it "is persistent" do - new_index = Index.new - expect(new_index.command_plugin("newco")).to eq(plugin_name) - end - end - - describe "source" do - let(:sources) { ["new_source"] } - - it "returns the plugins name on query" do - expect(index.source_plugin("new_source")).to eq(plugin_name) - end - - it "raises error on conflict" do - expect do - index.register_plugin("aplugin", lib_path("aplugin").to_s, lib_path("aplugin").join("lib").to_s, [], ["new_source"], []) - end.to raise_error(Index::SourceConflict) - end - - it "is persistent" do - new_index = Index.new - expect(new_index.source_plugin("new_source")).to eq(plugin_name) - end - end - - describe "hook" do - let(:hooks) { ["after-bar"] } - - it "returns the plugins name on query" do - expect(index.hook_plugins("after-bar")).to include(plugin_name) - end - - it "is persistent" do - new_index = Index.new - expect(new_index.hook_plugins("after-bar")).to eq([plugin_name]) - end - - context "that are not registered", :focused do - let(:file) { double("index-file") } - - before do - index.hook_plugins("not-there") - allow(File).to receive(:open).and_yield(file) - end - - it "should not save it with next registered hook" do - expect(file).to receive(:puts) do |content| - expect(content).not_to include("not-there") - end - - index.register_plugin("aplugin", lib_path("aplugin").to_s, lib_path("aplugin").join("lib").to_s, [], [], []) - end - end - end - - describe "global index" do - before do - Dir.chdir(tmp) do - Bundler::Plugin.reset! - path = lib_path("gplugin") - index.register_plugin("gplugin", path.to_s, [path.join("lib").to_s], [], ["glb_source"], []) - end - end - - it "skips sources" do - new_index = Index.new - expect(new_index.source_plugin("glb_source")).to be_falsy - end - end - - describe "after conflict" do - let(:commands) { ["foo"] } - let(:sources) { ["bar"] } - let(:hooks) { ["hoook"] } - - shared_examples "it cleans up" do - it "the path" do - expect(index.installed?("cplugin")).to be_falsy - end - - it "the command" do - expect(index.command_plugin("xfoo")).to be_falsy - end - - it "the source" do - expect(index.source_plugin("xbar")).to be_falsy - end - - it "the hook" do - expect(index.hook_plugins("xhoook")).to be_empty - end - end - - context "on command conflict it cleans up" do - before do - expect do - path = lib_path("cplugin") - index.register_plugin("cplugin", path.to_s, [path.join("lib").to_s], ["foo"], ["xbar"], ["xhoook"]) - end.to raise_error(Index::CommandConflict) - end - - include_examples "it cleans up" - end - - context "on source conflict it cleans up" do - before do - expect do - path = lib_path("cplugin") - index.register_plugin("cplugin", path.to_s, [path.join("lib").to_s], ["xfoo"], ["bar"], ["xhoook"]) - end.to raise_error(Index::SourceConflict) - end - - include_examples "it cleans up" - end - - context "on command and source conflict it cleans up" do - before do - expect do - path = lib_path("cplugin") - index.register_plugin("cplugin", path.to_s, [path.join("lib").to_s], ["foo"], ["bar"], ["xhoook"]) - end.to raise_error(Index::CommandConflict) - end - - include_examples "it cleans up" - end - end -end diff --git a/spec/bundler/bundler/plugin/installer_spec.rb b/spec/bundler/bundler/plugin/installer_spec.rb deleted file mode 100644 index f8bf8450c9..0000000000 --- a/spec/bundler/bundler/plugin/installer_spec.rb +++ /dev/null @@ -1,104 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe Bundler::Plugin::Installer do - subject(:installer) { Bundler::Plugin::Installer.new } - - before do - # allow(Bundler::SharedHelpers).to receive(:find_gemfile).and_return(Pathname.new("/Gemfile")) - end - - describe "cli install" do - it "uses Gem.sources when non of the source is provided" do - sources = double(:sources) - Bundler.settings # initialize it before we have to touch rubygems.ext_lock - allow(Bundler).to receive_message_chain("rubygems.sources") { sources } - - allow(installer).to receive(:install_rubygems). - with("new-plugin", [">= 0"], sources).once - - installer.install("new-plugin", {}) - end - - describe "with mocked installers" do - let(:spec) { double(:spec) } - it "returns the installed spec after installing git plugins" do - allow(installer).to receive(:install_git). - and_return("new-plugin" => spec) - - expect(installer.install(["new-plugin"], :git => "https://some.ran/dom")). - to eq("new-plugin" => spec) - end - - it "returns the installed spec after installing rubygems plugins" do - allow(installer).to receive(:install_rubygems). - and_return("new-plugin" => spec) - - expect(installer.install(["new-plugin"], :source => "https://some.ran/dom")). - to eq("new-plugin" => spec) - end - end - - describe "with actual installers" do - before do - build_repo2 do - build_plugin "re-plugin" - build_plugin "ma-plugin" - end - end - - context "git plugins" do - before do - build_git "ga-plugin", :path => lib_path("ga-plugin") do |s| - s.write "plugins.rb" - end - end - - let(:result) do - installer.install(["ga-plugin"], :git => "file://#{lib_path("ga-plugin")}") - end - - it "returns the installed spec after installing" do - spec = result["ga-plugin"] - expect(spec.full_name).to eq "ga-plugin-1.0" - end - - it "has expected full gem path" do - rev = revision_for(lib_path("ga-plugin")) - expect(result["ga-plugin"].full_gem_path). - to eq(Bundler::Plugin.root.join("bundler", "gems", "ga-plugin-#{rev[0..11]}").to_s) - end - end - - context "rubygems plugins" do - let(:result) do - installer.install(["re-plugin"], :source => "file://#{gem_repo2}") - end - - it "returns the installed spec after installing " do - expect(result["re-plugin"]).to be_kind_of(Bundler::RemoteSpecification) - end - - it "has expected full_gem)path" do - expect(result["re-plugin"].full_gem_path). - to eq(global_plugin_gem("re-plugin-1.0").to_s) - end - end - - context "multiple plugins" do - let(:result) do - installer.install(["re-plugin", "ma-plugin"], :source => "file://#{gem_repo2}") - end - - it "returns the installed spec after installing " do - expect(result["re-plugin"]).to be_kind_of(Bundler::RemoteSpecification) - expect(result["ma-plugin"]).to be_kind_of(Bundler::RemoteSpecification) - end - - it "has expected full_gem)path" do - expect(result["re-plugin"].full_gem_path).to eq(global_plugin_gem("re-plugin-1.0").to_s) - expect(result["ma-plugin"].full_gem_path).to eq(global_plugin_gem("ma-plugin-1.0").to_s) - end - end - end - end -end diff --git a/spec/bundler/bundler/plugin/source_list_spec.rb b/spec/bundler/bundler/plugin/source_list_spec.rb deleted file mode 100644 index 64a1233dd1..0000000000 --- a/spec/bundler/bundler/plugin/source_list_spec.rb +++ /dev/null @@ -1,25 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe Bundler::Plugin::SourceList do - SourceList = Bundler::Plugin::SourceList - - before do - allow(Bundler).to receive(:root) { Pathname.new "/" } - end - - subject(:source_list) { SourceList.new } - - describe "adding sources uses classes for plugin" do - it "uses Plugin::Installer::Rubygems for rubygems sources" do - source = source_list. - add_rubygems_source("remotes" => ["https://existing-rubygems.org"]) - expect(source).to be_instance_of(Bundler::Plugin::Installer::Rubygems) - end - - it "uses Plugin::Installer::Git for git sources" do - source = source_list. - add_git_source("uri" => "git://existing-git.org/path.git") - expect(source).to be_instance_of(Bundler::Plugin::Installer::Git) - end - end -end diff --git a/spec/bundler/bundler/plugin_spec.rb b/spec/bundler/bundler/plugin_spec.rb deleted file mode 100644 index 9796b580a3..0000000000 --- a/spec/bundler/bundler/plugin_spec.rb +++ /dev/null @@ -1,291 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe Bundler::Plugin do - Plugin = Bundler::Plugin - - let(:installer) { double(:installer) } - let(:index) { double(:index) } - let(:spec) { double(:spec) } - let(:spec2) { double(:spec2) } - - before do - build_lib "new-plugin", :path => lib_path("new-plugin") do |s| - s.write "plugins.rb" - end - - build_lib "another-plugin", :path => lib_path("another-plugin") do |s| - s.write "plugins.rb" - end - - allow(spec).to receive(:full_gem_path). - and_return(lib_path("new-plugin").to_s) - allow(spec).to receive(:load_paths). - and_return([lib_path("new-plugin").join("lib").to_s]) - - allow(spec2).to receive(:full_gem_path). - and_return(lib_path("another-plugin").to_s) - allow(spec2).to receive(:load_paths). - and_return([lib_path("another-plugin").join("lib").to_s]) - - allow(Plugin::Installer).to receive(:new) { installer } - allow(Plugin).to receive(:index) { index } - allow(index).to receive(:register_plugin) - end - - describe "install command" do - let(:opts) { { "version" => "~> 1.0", "source" => "foo" } } - - before do - allow(installer).to receive(:install).with(["new-plugin"], opts) do - { "new-plugin" => spec } - end - end - - it "passes the name and options to installer" do - allow(installer).to receive(:install).with(["new-plugin"], opts) do - { "new-plugin" => spec } - end.once - - subject.install ["new-plugin"], opts - end - - it "validates the installed plugin" do - allow(subject). - to receive(:validate_plugin!).with(lib_path("new-plugin")).once - - subject.install ["new-plugin"], opts - end - - it "registers the plugin with index" do - allow(index).to receive(:register_plugin). - with("new-plugin", lib_path("new-plugin").to_s, [lib_path("new-plugin").join("lib").to_s], []).once - subject.install ["new-plugin"], opts - end - - context "multiple plugins" do - it do - allow(installer).to receive(:install). - with(["new-plugin", "another-plugin"], opts) do - { - "new-plugin" => spec, - "another-plugin" => spec2, - } - end.once - - allow(subject).to receive(:validate_plugin!).twice - allow(index).to receive(:register_plugin).twice - subject.install ["new-plugin", "another-plugin"], opts - end - end - end - - describe "evaluate gemfile for plugins" do - let(:definition) { double("definition") } - let(:builder) { double("builder") } - let(:gemfile) { bundled_app("Gemfile") } - - before do - allow(Plugin::DSL).to receive(:new) { builder } - allow(builder).to receive(:eval_gemfile).with(gemfile) - allow(builder).to receive(:to_definition) { definition } - allow(builder).to receive(:inferred_plugins) { [] } - end - - it "doesn't calls installer without any plugins" do - allow(definition).to receive(:dependencies) { [] } - allow(installer).to receive(:install_definition).never - - subject.gemfile_install(gemfile) - end - - context "with dependencies" do - let(:plugin_specs) do - { - "new-plugin" => spec, - "another-plugin" => spec2, - } - end - - before do - allow(index).to receive(:installed?) { nil } - allow(definition).to receive(:dependencies) { [Bundler::Dependency.new("new-plugin", ">=0"), Bundler::Dependency.new("another-plugin", ">=0")] } - allow(installer).to receive(:install_definition) { plugin_specs } - end - - it "should validate and register the plugins" do - expect(subject).to receive(:validate_plugin!).twice - expect(subject).to receive(:register_plugin).twice - - subject.gemfile_install(gemfile) - end - - it "should pass the optional plugins to #register_plugin" do - allow(builder).to receive(:inferred_plugins) { ["another-plugin"] } - - expect(subject).to receive(:register_plugin). - with("new-plugin", spec, false).once - - expect(subject).to receive(:register_plugin). - with("another-plugin", spec2, true).once - - subject.gemfile_install(gemfile) - end - end - end - - describe "#command?" do - it "returns true value for commands in index" do - allow(index). - to receive(:command_plugin).with("newcommand") { "my-plugin" } - result = subject.command? "newcommand" - expect(result).to be_truthy - end - - it "returns false value for commands not in index" do - allow(index).to receive(:command_plugin).with("newcommand") { nil } - result = subject.command? "newcommand" - expect(result).to be_falsy - end - end - - describe "#exec_command" do - it "raises UndefinedCommandError when command is not found" do - allow(index).to receive(:command_plugin).with("newcommand") { nil } - expect { subject.exec_command("newcommand", []) }. - to raise_error(Plugin::UndefinedCommandError) - end - end - - describe "#source?" do - it "returns true value for sources in index" do - allow(index). - to receive(:command_plugin).with("foo-source") { "my-plugin" } - result = subject.command? "foo-source" - expect(result).to be_truthy - end - - it "returns false value for source not in index" do - allow(index).to receive(:command_plugin).with("foo-source") { nil } - result = subject.command? "foo-source" - expect(result).to be_falsy - end - end - - describe "#source" do - it "raises UnknownSourceError when source is not found" do - allow(index).to receive(:source_plugin).with("bar") { nil } - expect { subject.source("bar") }. - to raise_error(Plugin::UnknownSourceError) - end - - it "loads the plugin, if not loaded" do - allow(index).to receive(:source_plugin).with("foo-bar") { "plugin_name" } - - expect(subject).to receive(:load_plugin).with("plugin_name") - subject.source("foo-bar") - end - - it "returns the class registered with #add_source" do - allow(index).to receive(:source_plugin).with("foo") { "plugin_name" } - stub_const "NewClass", Class.new - - subject.add_source("foo", NewClass) - expect(subject.source("foo")).to be(NewClass) - end - end - - describe "#source_from_lock" do - it "returns instance of registered class initialized with locked opts" do - opts = { "type" => "l_source", "remote" => "xyz", "other" => "random" } - allow(index).to receive(:source_plugin).with("l_source") { "plugin_name" } - - stub_const "SClass", Class.new - s_instance = double(:s_instance) - subject.add_source("l_source", SClass) - - expect(SClass).to receive(:new). - with(hash_including("type" => "l_source", "uri" => "xyz", "other" => "random")) { s_instance } - expect(subject.source_from_lock(opts)).to be(s_instance) - end - end - - describe "#root" do - context "in app dir" do - before do - gemfile "" - end - - it "returns plugin dir in app .bundle path" do - expect(subject.root).to eq(bundled_app.join(".bundle/plugin")) - end - end - - context "outside app dir" do - it "returns plugin dir in global bundle path" do - Dir.chdir tmp - expect(subject.root).to eq(home.join(".bundle/plugin")) - end - end - end - - describe "#hook" do - before do - path = lib_path("foo-plugin") - build_lib "foo-plugin", :path => path do |s| - s.write "plugins.rb", code - end - - allow(index).to receive(:hook_plugins).with(event). - and_return(["foo-plugin"]) - allow(index).to receive(:plugin_path).with("foo-plugin").and_return(path) - allow(index).to receive(:load_paths).with("foo-plugin").and_return([]) - end - - let(:code) { <<-RUBY } - Bundler::Plugin::API.hook("event-1") { puts "hook for event 1" } - RUBY - - let(:event) { "event-1" } - - it "executes the hook" do - out = capture(:stdout) do - Plugin.hook("event-1") - end.strip - - expect(out).to eq("hook for event 1") - end - - context "single plugin declaring more than one hook" do - let(:code) { <<-RUBY } - Bundler::Plugin::API.hook("event-1") {} - Bundler::Plugin::API.hook("event-2") {} - puts "loaded" - RUBY - - let(:event) { /event-1|event-2/ } - - it "evals plugins.rb once" do - out = capture(:stdout) do - Plugin.hook("event-1") - Plugin.hook("event-2") - end.strip - - expect(out).to eq("loaded") - end - end - - context "a block is passed" do - let(:code) { <<-RUBY } - Bundler::Plugin::API.hook("#{event}") { |&blk| blk.call } - RUBY - - it "is passed to the hook" do - out = capture(:stdout) do - Plugin.hook("event-1") { puts "win" } - end.strip - - expect(out).to eq("win") - end - end - end -end diff --git a/spec/bundler/bundler/psyched_yaml_spec.rb b/spec/bundler/bundler/psyched_yaml_spec.rb deleted file mode 100644 index d5d68c5cc3..0000000000 --- a/spec/bundler/bundler/psyched_yaml_spec.rb +++ /dev/null @@ -1,9 +0,0 @@ -# frozen_string_literal: true - -require "bundler/psyched_yaml" - -RSpec.describe "Bundler::YamlLibrarySyntaxError" do - it "is raised on YAML parse errors" do - expect { YAML.parse "{foo" }.to raise_error(Bundler::YamlLibrarySyntaxError) - end -end diff --git a/spec/bundler/bundler/remote_specification_spec.rb b/spec/bundler/bundler/remote_specification_spec.rb deleted file mode 100644 index 8115e026d8..0000000000 --- a/spec/bundler/bundler/remote_specification_spec.rb +++ /dev/null @@ -1,187 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe Bundler::RemoteSpecification do - let(:name) { "foo" } - let(:version) { Gem::Version.new("1.0.0") } - let(:platform) { Gem::Platform::RUBY } - let(:spec_fetcher) { double(:spec_fetcher) } - - subject { described_class.new(name, version, platform, spec_fetcher) } - - it "is Comparable" do - expect(described_class.ancestors).to include(Comparable) - end - - it "can match platforms" do - expect(described_class.ancestors).to include(Bundler::MatchPlatform) - end - - describe "#fetch_platform" do - let(:remote_spec) { double(:remote_spec, :platform => "jruby") } - - before { allow(spec_fetcher).to receive(:fetch_spec).and_return(remote_spec) } - - it "should return the spec platform" do - expect(subject.fetch_platform).to eq("jruby") - end - end - - describe "#full_name" do - context "when platform is ruby" do - it "should return the spec name and version" do - expect(subject.full_name).to eq("foo-1.0.0") - end - end - - context "when platform is nil" do - let(:platform) { nil } - - it "should return the spec name and version" do - expect(subject.full_name).to eq("foo-1.0.0") - end - end - - context "when platform is a non-ruby platform" do - let(:platform) { "jruby" } - - it "should return the spec name, version, and platform" do - expect(subject.full_name).to eq("foo-1.0.0-jruby") - end - end - end - - describe "#<=>" do - let(:other_name) { name } - let(:other_version) { version } - let(:other_platform) { platform } - let(:other_spec_fetcher) { spec_fetcher } - - shared_examples_for "a comparison" do - context "which exactly matches" do - it "returns 0" do - expect(subject <=> other).to eq(0) - end - end - - context "which is different by name" do - let(:other_name) { "a" } - it "returns 1" do - expect(subject <=> other).to eq(1) - end - end - - context "which has a lower version" do - let(:other_version) { Gem::Version.new("0.9.0") } - it "returns 1" do - expect(subject <=> other).to eq(1) - end - end - - context "which has a higher version" do - let(:other_version) { Gem::Version.new("1.1.0") } - it "returns -1" do - expect(subject <=> other).to eq(-1) - end - end - - context "which has a different platform" do - let(:other_platform) { Gem::Platform.new("x86-mswin32") } - it "returns -1" do - expect(subject <=> other).to eq(-1) - end - end - end - - context "comparing another Bundler::RemoteSpecification" do - let(:other) do - Bundler::RemoteSpecification.new(other_name, other_version, - other_platform, nil) - end - - it_should_behave_like "a comparison" - end - - context "comparing a Gem::Specification" do - let(:other) do - Gem::Specification.new(other_name, other_version).tap do |s| - s.platform = other_platform - end - end - - it_should_behave_like "a comparison" - end - - context "comparing a non sortable object" do - let(:other) { Object.new } - let(:remote_spec) { double(:remote_spec, :platform => "jruby") } - - before do - allow(spec_fetcher).to receive(:fetch_spec).and_return(remote_spec) - allow(remote_spec).to receive(:<=>).and_return(nil) - end - - it "should use default object comparison" do - expect(subject <=> other).to eq(nil) - end - end - end - - describe "#__swap__" do - let(:spec) { double(:spec, :dependencies => []) } - let(:new_spec) { double(:new_spec, :dependencies => [], :runtime_dependencies => []) } - - before { subject.instance_variable_set(:@_remote_specification, spec) } - - it "should replace remote specification with the passed spec" do - expect(subject.instance_variable_get(:@_remote_specification)).to be(spec) - subject.__swap__(new_spec) - expect(subject.instance_variable_get(:@_remote_specification)).to be(new_spec) - end - end - - describe "#sort_obj" do - context "when platform is ruby" do - it "should return a sorting delegate array with name, version, and -1" do - expect(subject.sort_obj).to match_array(["foo", version, -1]) - end - end - - context "when platform is not ruby" do - let(:platform) { "jruby" } - - it "should return a sorting delegate array with name, version, and 1" do - expect(subject.sort_obj).to match_array(["foo", version, 1]) - end - end - end - - describe "method missing" do - context "and is present in Gem::Specification" do - let(:remote_spec) { double(:remote_spec, :authors => "abcd") } - - before do - allow(subject).to receive(:_remote_specification).and_return(remote_spec) - expect(subject.methods.map(&:to_sym)).not_to include(:authors) - end - - it "should send through to Gem::Specification" do - expect(subject.authors).to eq("abcd") - end - end - end - - describe "respond to missing?" do - context "and is present in Gem::Specification" do - let(:remote_spec) { double(:remote_spec, :authors => "abcd") } - - before do - allow(subject).to receive(:_remote_specification).and_return(remote_spec) - expect(subject.methods.map(&:to_sym)).not_to include(:authors) - end - - it "should send through to Gem::Specification" do - expect(subject.respond_to?(:authors)).to be_truthy - end - end - end -end diff --git a/spec/bundler/bundler/retry_spec.rb b/spec/bundler/bundler/retry_spec.rb deleted file mode 100644 index b893580d72..0000000000 --- a/spec/bundler/bundler/retry_spec.rb +++ /dev/null @@ -1,81 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe Bundler::Retry do - it "return successful result if no errors" do - attempts = 0 - result = Bundler::Retry.new(nil, nil, 3).attempt do - attempts += 1 - :success - end - expect(result).to eq(:success) - expect(attempts).to eq(1) - end - - it "returns the first valid result" do - jobs = [proc { raise "foo" }, proc { :bar }, proc { raise "foo" }] - attempts = 0 - result = Bundler::Retry.new(nil, nil, 3).attempt do - attempts += 1 - jobs.shift.call - end - expect(result).to eq(:bar) - expect(attempts).to eq(2) - end - - it "raises the last error" do - errors = [StandardError, StandardError, StandardError, Bundler::GemfileNotFound] - attempts = 0 - expect do - Bundler::Retry.new(nil, nil, 3).attempt do - attempts += 1 - raise errors.shift - end - end.to raise_error(Bundler::GemfileNotFound) - expect(attempts).to eq(4) - end - - it "raises exceptions" do - error = Bundler::GemfileNotFound - attempts = 0 - expect do - Bundler::Retry.new(nil, error).attempt do - attempts += 1 - raise error - end - end.to raise_error(error) - expect(attempts).to eq(1) - end - - context "logging" do - let(:error) { Bundler::GemfileNotFound } - let(:failure_message) { "Retrying test due to error (2/2): #{error} #{error}" } - - context "with debugging on" do - it "print error message with newline" do - allow(Bundler.ui).to receive(:debug?).and_return(true) - expect(Bundler.ui).to_not receive(:info) - expect(Bundler.ui).to receive(:warn).with(failure_message, true) - - expect do - Bundler::Retry.new("test", [], 1).attempt do - raise error - end - end.to raise_error(error) - end - end - - context "with debugging off" do - it "print error message with newlines" do - allow(Bundler.ui).to receive(:debug?).and_return(false) - expect(Bundler.ui).to receive(:info).with("").twice - expect(Bundler.ui).to receive(:warn).with(failure_message, false) - - expect do - Bundler::Retry.new("test", [], 1).attempt do - raise error - end - end.to raise_error(error) - end - end - end -end diff --git a/spec/bundler/bundler/ruby_dsl_spec.rb b/spec/bundler/bundler/ruby_dsl_spec.rb deleted file mode 100644 index bc1ca98457..0000000000 --- a/spec/bundler/bundler/ruby_dsl_spec.rb +++ /dev/null @@ -1,95 +0,0 @@ -# frozen_string_literal: true - -require "bundler/ruby_dsl" - -RSpec.describe Bundler::RubyDsl do - class MockDSL - include Bundler::RubyDsl - - attr_reader :ruby_version - end - - let(:dsl) { MockDSL.new } - let(:ruby_version) { "2.0.0" } - let(:version) { "2.0.0" } - let(:engine) { "jruby" } - let(:engine_version) { "9000" } - let(:patchlevel) { "100" } - let(:options) do - { :patchlevel => patchlevel, - :engine => engine, - :engine_version => engine_version } - end - - let(:invoke) do - proc do - args = Array(ruby_version) + [options] - dsl.ruby(*args) - end - end - - subject do - invoke.call - dsl.ruby_version - end - - describe "#ruby_version" do - shared_examples_for "it stores the ruby version" do - it "stores the version" do - expect(subject.versions).to eq(Array(ruby_version)) - expect(subject.gem_version.version).to eq(version) - end - - it "stores the engine details" do - expect(subject.engine).to eq(engine) - expect(subject.engine_versions).to eq(Array(engine_version)) - end - - it "stores the patchlevel" do - expect(subject.patchlevel).to eq(patchlevel) - end - end - - context "with a plain version" do - it_behaves_like "it stores the ruby version" - end - - context "with a single requirement" do - let(:ruby_version) { ">= 2.0.0" } - it_behaves_like "it stores the ruby version" - end - - context "with two requirements in the same string" do - let(:ruby_version) { ">= 2.0.0, < 3.0" } - it "raises an error" do - expect { subject }.to raise_error(ArgumentError) - end - end - - context "with two requirements" do - let(:ruby_version) { ["~> 2.0.0", "> 2.0.1"] } - it_behaves_like "it stores the ruby version" - end - - context "with multiple engine versions" do - let(:engine_version) { ["> 200", "< 300"] } - it_behaves_like "it stores the ruby version" - end - - context "with no options hash" do - let(:invoke) { proc { dsl.ruby(ruby_version) } } - - let(:patchlevel) { nil } - let(:engine) { "ruby" } - let(:engine_version) { version } - - it_behaves_like "it stores the ruby version" - - context "and with multiple requirements" do - let(:ruby_version) { ["~> 2.0.0", "> 2.0.1"] } - let(:engine_version) { ruby_version } - it_behaves_like "it stores the ruby version" - end - end - end -end diff --git a/spec/bundler/bundler/ruby_version_spec.rb b/spec/bundler/bundler/ruby_version_spec.rb deleted file mode 100644 index 3f30821b5c..0000000000 --- a/spec/bundler/bundler/ruby_version_spec.rb +++ /dev/null @@ -1,524 +0,0 @@ -# frozen_string_literal: true - -require "bundler/ruby_version" - -RSpec.describe "Bundler::RubyVersion and its subclasses" do - let(:version) { "2.0.0" } - let(:patchlevel) { "645" } - let(:engine) { "jruby" } - let(:engine_version) { "2.0.1" } - - describe Bundler::RubyVersion do - subject { Bundler::RubyVersion.new(version, patchlevel, engine, engine_version) } - - let(:ruby_version) { subject } - let(:other_version) { version } - let(:other_patchlevel) { patchlevel } - let(:other_engine) { engine } - let(:other_engine_version) { engine_version } - let(:other_ruby_version) { Bundler::RubyVersion.new(other_version, other_patchlevel, other_engine, other_engine_version) } - - describe "#initialize" do - context "no engine is passed" do - let(:engine) { nil } - - it "should set ruby as the engine" do - expect(subject.engine).to eq("ruby") - end - end - - context "no engine_version is passed" do - let(:engine_version) { nil } - - it "should set engine version as the passed version" do - expect(subject.engine_versions).to eq(["2.0.0"]) - end - end - - context "with engine in symbol" do - let(:engine) { :jruby } - - it "should coerce engine to string" do - expect(subject.engine).to eq("jruby") - end - end - - context "is called with multiple requirements" do - let(:version) { ["<= 2.0.0", "> 1.9.3"] } - let(:engine_version) { nil } - - it "sets the versions" do - expect(subject.versions).to eq(version) - end - - it "sets the engine versions" do - expect(subject.engine_versions).to eq(version) - end - end - - context "is called with multiple engine requirements" do - let(:engine_version) { [">= 2.0", "< 2.3"] } - - it "sets the engine versions" do - expect(subject.engine_versions).to eq(engine_version) - end - end - end - - describe ".from_string" do - shared_examples_for "returning" do - it "returns the original RubyVersion" do - expect(described_class.from_string(subject.to_s)).to eq(subject) - end - end - - include_examples "returning" - - context "no patchlevel" do - let(:patchlevel) { nil } - - include_examples "returning" - end - - context "engine is ruby" do - let(:engine) { "ruby" } - let(:engine_version) { version } - - include_examples "returning" - end - - context "with multiple requirements" do - let(:engine_version) { ["> 9", "< 11"] } - let(:version) { ["> 8", "< 10"] } - let(:patchlevel) { nil } - - it "returns nil" do - expect(described_class.from_string(subject.to_s)).to be_nil - end - end - end - - describe "#to_s" do - it "should return info string with the ruby version, patchlevel, engine, and engine version" do - expect(subject.to_s).to eq("ruby 2.0.0p645 (jruby 2.0.1)") - end - - context "no patchlevel" do - let(:patchlevel) { nil } - - it "should return info string with the version, engine, and engine version" do - expect(subject.to_s).to eq("ruby 2.0.0 (jruby 2.0.1)") - end - end - - context "engine is ruby" do - let(:engine) { "ruby" } - - it "should return info string with the ruby version and patchlevel" do - expect(subject.to_s).to eq("ruby 2.0.0p645") - end - end - - context "with multiple requirements" do - let(:engine_version) { ["> 9", "< 11"] } - let(:version) { ["> 8", "< 10"] } - let(:patchlevel) { nil } - - it "should return info string with all requirements" do - expect(subject.to_s).to eq("ruby > 8, < 10 (jruby > 9, < 11)") - end - end - end - - describe "#==" do - shared_examples_for "two ruby versions are not equal" do - it "should return false" do - expect(subject).to_not eq(other_ruby_version) - end - end - - context "the versions, pathlevels, engines, and engine_versions match" do - it "should return true" do - expect(subject).to eq(other_ruby_version) - end - end - - context "the versions do not match" do - let(:other_version) { "1.21.6" } - - it_behaves_like "two ruby versions are not equal" - end - - context "the patchlevels do not match" do - let(:other_patchlevel) { "21" } - - it_behaves_like "two ruby versions are not equal" - end - - context "the engines do not match" do - let(:other_engine) { "ruby" } - - it_behaves_like "two ruby versions are not equal" - end - - context "the engine versions do not match" do - let(:other_engine_version) { "1.11.2" } - - it_behaves_like "two ruby versions are not equal" - end - end - - describe "#host" do - before do - allow(RbConfig::CONFIG).to receive(:[]).with("host_cpu").and_return("x86_64") - allow(RbConfig::CONFIG).to receive(:[]).with("host_vendor").and_return("apple") - allow(RbConfig::CONFIG).to receive(:[]).with("host_os").and_return("darwin14.5.0") - end - - it "should return an info string with the host cpu, vendor, and os" do - expect(subject.host).to eq("x86_64-apple-darwin14.5.0") - end - - it "memoizes the info string with the host cpu, vendor, and os" do - expect(RbConfig::CONFIG).to receive(:[]).with("host_cpu").once.and_call_original - expect(RbConfig::CONFIG).to receive(:[]).with("host_vendor").once.and_call_original - expect(RbConfig::CONFIG).to receive(:[]).with("host_os").once.and_call_original - 2.times { ruby_version.host } - end - end - - describe "#gem_version" do - let(:gem_version) { "2.0.0" } - let(:gem_version_obj) { Gem::Version.new(gem_version) } - - shared_examples_for "it parses the version from the requirement string" do |version| - let(:version) { version } - it "should return the underlying version" do - expect(ruby_version.gem_version).to eq(gem_version_obj) - expect(ruby_version.gem_version.version).to eq(gem_version) - end - end - - it_behaves_like "it parses the version from the requirement string", "2.0.0" - it_behaves_like "it parses the version from the requirement string", ">= 2.0.0" - it_behaves_like "it parses the version from the requirement string", "~> 2.0.0" - it_behaves_like "it parses the version from the requirement string", "< 2.0.0" - it_behaves_like "it parses the version from the requirement string", "= 2.0.0" - it_behaves_like "it parses the version from the requirement string", ["> 2.0.0", "< 2.4.5"] - end - - describe "#diff" do - let(:engine) { "ruby" } - - shared_examples_for "there is a difference in the engines" do - it "should return a tuple with :engine and the two different engines" do - expect(ruby_version.diff(other_ruby_version)).to eq([:engine, engine, other_engine]) - end - end - - shared_examples_for "there is a difference in the versions" do - it "should return a tuple with :version and the two different versions" do - expect(ruby_version.diff(other_ruby_version)).to eq([:version, Array(version).join(", "), Array(other_version).join(", ")]) - end - end - - shared_examples_for "there is a difference in the engine versions" do - it "should return a tuple with :engine_version and the two different engine versions" do - expect(ruby_version.diff(other_ruby_version)).to eq([:engine_version, Array(engine_version).join(", "), Array(other_engine_version).join(", ")]) - end - end - - shared_examples_for "there is a difference in the patchlevels" do - it "should return a tuple with :patchlevel and the two different patchlevels" do - expect(ruby_version.diff(other_ruby_version)).to eq([:patchlevel, patchlevel, other_patchlevel]) - end - end - - shared_examples_for "there are no differences" do - it "should return nil" do - expect(ruby_version.diff(other_ruby_version)).to be_nil - end - end - - context "all things match exactly" do - it_behaves_like "there are no differences" - end - - context "detects engine discrepancies first" do - let(:other_version) { "2.0.1" } - let(:other_patchlevel) { "643" } - let(:other_engine) { "rbx" } - let(:other_engine_version) { "2.0.0" } - - it_behaves_like "there is a difference in the engines" - end - - context "detects version discrepancies second" do - let(:other_version) { "2.0.1" } - let(:other_patchlevel) { "643" } - let(:other_engine_version) { "2.0.0" } - - it_behaves_like "there is a difference in the versions" - end - - context "detects version discrepancies with multiple requirements second" do - let(:other_version) { "2.0.1" } - let(:other_patchlevel) { "643" } - let(:other_engine_version) { "2.0.0" } - - let(:version) { ["> 2.0.0", "< 1.0.0"] } - - it_behaves_like "there is a difference in the versions" - end - - context "detects engine version discrepancies third" do - let(:other_patchlevel) { "643" } - let(:other_engine_version) { "2.0.0" } - - it_behaves_like "there is a difference in the engine versions" - end - - context "detects engine version discrepancies with multiple requirements third" do - let(:other_patchlevel) { "643" } - let(:other_engine_version) { "2.0.0" } - - let(:engine_version) { ["> 2.0.0", "< 1.0.0"] } - - it_behaves_like "there is a difference in the engine versions" - end - - context "detects patchlevel discrepancies last" do - let(:other_patchlevel) { "643" } - - it_behaves_like "there is a difference in the patchlevels" - end - - context "successfully matches gem requirements" do - let(:version) { ">= 2.0.0" } - let(:patchlevel) { "< 643" } - let(:engine) { "ruby" } - let(:engine_version) { "~> 2.0.1" } - let(:other_version) { "2.0.0" } - let(:other_patchlevel) { "642" } - let(:other_engine) { "ruby" } - let(:other_engine_version) { "2.0.5" } - - it_behaves_like "there are no differences" - end - - context "successfully matches multiple gem requirements" do - let(:version) { [">= 2.0.0", "< 2.4.5"] } - let(:patchlevel) { "< 643" } - let(:engine) { "ruby" } - let(:engine_version) { ["~> 2.0.1", "< 2.4.5"] } - let(:other_version) { "2.0.0" } - let(:other_patchlevel) { "642" } - let(:other_engine) { "ruby" } - let(:other_engine_version) { "2.0.5" } - - it_behaves_like "there are no differences" - end - - context "successfully detects bad gem requirements with versions with multiple requirements" do - let(:version) { ["~> 2.0.0", "< 2.0.5"] } - let(:patchlevel) { "< 643" } - let(:engine) { "ruby" } - let(:engine_version) { "~> 2.0.1" } - let(:other_version) { "2.0.5" } - let(:other_patchlevel) { "642" } - let(:other_engine) { "ruby" } - let(:other_engine_version) { "2.0.5" } - - it_behaves_like "there is a difference in the versions" - end - - context "successfully detects bad gem requirements with versions" do - let(:version) { "~> 2.0.0" } - let(:patchlevel) { "< 643" } - let(:engine) { "ruby" } - let(:engine_version) { "~> 2.0.1" } - let(:other_version) { "2.1.0" } - let(:other_patchlevel) { "642" } - let(:other_engine) { "ruby" } - let(:other_engine_version) { "2.0.5" } - - it_behaves_like "there is a difference in the versions" - end - - context "successfully detects bad gem requirements with patchlevels" do - let(:version) { ">= 2.0.0" } - let(:patchlevel) { "< 643" } - let(:engine) { "ruby" } - let(:engine_version) { "~> 2.0.1" } - let(:other_version) { "2.0.0" } - let(:other_patchlevel) { "645" } - let(:other_engine) { "ruby" } - let(:other_engine_version) { "2.0.5" } - - it_behaves_like "there is a difference in the patchlevels" - end - - context "successfully detects bad gem requirements with engine versions" do - let(:version) { ">= 2.0.0" } - let(:patchlevel) { "< 643" } - let(:engine) { "ruby" } - let(:engine_version) { "~> 2.0.1" } - let(:other_version) { "2.0.0" } - let(:other_patchlevel) { "642" } - let(:other_engine) { "ruby" } - let(:other_engine_version) { "2.1.0" } - - it_behaves_like "there is a difference in the engine versions" - end - - context "with a patchlevel of -1" do - let(:version) { ">= 2.0.0" } - let(:patchlevel) { "-1" } - let(:engine) { "ruby" } - let(:engine_version) { "~> 2.0.1" } - let(:other_version) { version } - let(:other_engine) { engine } - let(:other_engine_version) { engine_version } - - context "and comparing with another patchlevel of -1" do - let(:other_patchlevel) { patchlevel } - - it_behaves_like "there are no differences" - end - - context "and comparing with a patchlevel that is not -1" do - let(:other_patchlevel) { "642" } - - it_behaves_like "there is a difference in the patchlevels" - end - end - end - - describe "#system" do - subject { Bundler::RubyVersion.system } - - let(:bundler_system_ruby_version) { subject } - - before do - Bundler::RubyVersion.instance_variable_set("@ruby_version", nil) - end - - it "should return an instance of Bundler::RubyVersion" do - expect(subject).to be_kind_of(Bundler::RubyVersion) - end - - it "memoizes the instance of Bundler::RubyVersion" do - expect(Bundler::RubyVersion).to receive(:new).once.and_call_original - 2.times { subject } - end - - describe "#version" do - it "should return a copy of the value of RUBY_VERSION" do - expect(subject.versions).to eq([RUBY_VERSION]) - expect(subject.versions.first).to_not be(RUBY_VERSION) - end - end - - describe "#engine" do - context "RUBY_ENGINE is defined" do - before { stub_const("RUBY_ENGINE", "jruby") } - before { stub_const("JRUBY_VERSION", "2.1.1") } - - it "should return a copy of the value of RUBY_ENGINE" do - expect(subject.engine).to eq("jruby") - expect(subject.engine).to_not be(RUBY_ENGINE) - end - end - - context "RUBY_ENGINE is not defined" do - before { stub_const("RUBY_ENGINE", nil) } - - it "should return the string 'ruby'" do - expect(subject.engine).to eq("ruby") - end - end - end - - describe "#engine_version" do - context "engine is ruby" do - before do - stub_const("RUBY_VERSION", "2.2.4") - allow(Bundler).to receive(:ruby_engine).and_return("ruby") - end - - it "should return a copy of the value of RUBY_VERSION" do - expect(bundler_system_ruby_version.engine_versions).to eq(["2.2.4"]) - expect(bundler_system_ruby_version.engine_versions.first).to_not be(RUBY_VERSION) - end - end - - context "engine is rbx" do - before do - stub_const("RUBY_ENGINE", "rbx") - stub_const("Rubinius::VERSION", "2.0.0") - end - - it "should return a copy of the value of Rubinius::VERSION" do - expect(bundler_system_ruby_version.engine_versions).to eq(["2.0.0"]) - expect(bundler_system_ruby_version.engine_versions.first).to_not be(Rubinius::VERSION) - end - end - - context "engine is jruby" do - before do - stub_const("RUBY_ENGINE", "jruby") - stub_const("JRUBY_VERSION", "2.1.1") - end - - it "should return a copy of the value of JRUBY_VERSION" do - expect(subject.engine_versions).to eq(["2.1.1"]) - expect(bundler_system_ruby_version.engine_versions.first).to_not be(JRUBY_VERSION) - end - end - - context "engine is some other ruby engine" do - before do - stub_const("RUBY_ENGINE", "not_supported_ruby_engine") - allow(Bundler).to receive(:ruby_engine).and_return("not_supported_ruby_engine") - end - - it "should raise a BundlerError with a 'not recognized' message" do - expect { bundler_system_ruby_version.engine_versions }.to raise_error(Bundler::BundlerError, "RUBY_ENGINE value not_supported_ruby_engine is not recognized") - end - end - end - - describe "#patchlevel" do - it "should return a string with the value of RUBY_PATCHLEVEL" do - expect(subject.patchlevel).to eq(RUBY_PATCHLEVEL.to_s) - end - end - end - - describe "#to_gem_version_with_patchlevel" do - shared_examples_for "the patchlevel is omitted" do - it "does not include a patch level" do - expect(subject.to_gem_version_with_patchlevel.to_s).to eq(version) - end - end - - context "with nil patch number" do - let(:patchlevel) { nil } - - it_behaves_like "the patchlevel is omitted" - end - - context "with negative patch number" do - let(:patchlevel) { -1 } - - it_behaves_like "the patchlevel is omitted" - end - - context "with a valid patch number" do - it "uses the specified patchlevel as patchlevel" do - expect(subject.to_gem_version_with_patchlevel.to_s).to eq("#{version}.#{patchlevel}") - end - end - end - end -end diff --git a/spec/bundler/bundler/rubygems_integration_spec.rb b/spec/bundler/bundler/rubygems_integration_spec.rb deleted file mode 100644 index b1b15d9e5d..0000000000 --- a/spec/bundler/bundler/rubygems_integration_spec.rb +++ /dev/null @@ -1,114 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe Bundler::RubygemsIntegration do - it "uses the same chdir lock as rubygems", :rubygems => "2.1" do - expect(Bundler.rubygems.ext_lock).to eq(Gem::Ext::Builder::CHDIR_MONITOR) - end - - context "#validate" do - let(:spec) do - Gem::Specification.new do |s| - s.name = "to-validate" - s.version = "1.0.0" - s.loaded_from = __FILE__ - end - end - subject { Bundler.rubygems.validate(spec) } - - it "skips overly-strict gemspec validation", :rubygems => "< 1.7" do - expect(spec).to_not receive(:validate) - subject - end - - it "validates with packaging mode disabled", :rubygems => "1.7" do - expect(spec).to receive(:validate).with(false) - subject - end - - it "should set a summary to avoid an overly-strict error", :rubygems => "~> 1.7.0" do - spec.summary = nil - expect { subject }.not_to raise_error - expect(spec.summary).to eq("") - end - - context "with an invalid spec" do - before do - expect(spec).to receive(:validate).with(false). - and_raise(Gem::InvalidSpecificationException.new("TODO is not an author")) - end - - it "should raise a Gem::InvalidSpecificationException and produce a helpful warning message", - :rubygems => "1.7" do - expect { subject }.to raise_error(Gem::InvalidSpecificationException, - "The gemspec at #{__FILE__} is not valid. "\ - "Please fix this gemspec.\nThe validation error was 'TODO is not an author'\n") - end - end - end - - describe "#configuration" do - it "handles Gem::SystemExitException errors" do - allow(Gem).to receive(:configuration) { raise Gem::SystemExitException.new(1) } - expect { Bundler.rubygems.configuration }.to raise_error(Gem::SystemExitException) - end - end - - describe "#download_gem", :rubygems => ">= 2.0" do - let(:bundler_retry) { double(Bundler::Retry) } - let(:retry) { double("Bundler::Retry") } - let(:uri) { URI.parse("https://foo.bar") } - let(:path) { Gem.path.first } - let(:spec) do - spec = Bundler::RemoteSpecification.new("Foo", Gem::Version.new("2.5.2"), - Gem::Platform::RUBY, nil) - spec.remote = Bundler::Source::Rubygems::Remote.new(uri.to_s) - spec - end - let(:fetcher) { double("gem_remote_fetcher") } - - it "successfully downloads gem with retries" do - expect(Bundler.rubygems).to receive(:gem_remote_fetcher).and_return(fetcher) - expect(fetcher).to receive(:headers=).with("X-Gemfile-Source" => "https://foo.bar") - expect(Bundler::Retry).to receive(:new).with("download gem from #{uri}/"). - and_return(bundler_retry) - expect(bundler_retry).to receive(:attempts).and_yield - expect(fetcher).to receive(:download).with(spec, uri, path) - - Bundler.rubygems.download_gem(spec, uri, path) - end - end - - describe "#fetch_all_remote_specs", :rubygems => ">= 2.0" do - let(:uri) { URI("https://example.com") } - let(:fetcher) { double("gem_remote_fetcher") } - let(:specs_response) { Marshal.dump(["specs"]) } - let(:prerelease_specs_response) { Marshal.dump(["prerelease_specs"]) } - - context "when a rubygems source mirror is set" do - let(:orig_uri) { URI("http://zombo.com") } - let(:remote_with_mirror) { double("remote", :uri => uri, :original_uri => orig_uri) } - - it "sets the 'X-Gemfile-Source' header containing the original source" do - expect(Bundler.rubygems).to receive(:gem_remote_fetcher).twice.and_return(fetcher) - expect(fetcher).to receive(:headers=).with("X-Gemfile-Source" => "http://zombo.com").twice - expect(fetcher).to receive(:fetch_path).with(uri + "specs.4.8.gz").and_return(specs_response) - expect(fetcher).to receive(:fetch_path).with(uri + "prerelease_specs.4.8.gz").and_return(prerelease_specs_response) - result = Bundler.rubygems.fetch_all_remote_specs(remote_with_mirror) - expect(result).to eq(%w[specs prerelease_specs]) - end - end - - context "when there is no rubygems source mirror set" do - let(:remote_no_mirror) { double("remote", :uri => uri, :original_uri => nil) } - - it "does not set the 'X-Gemfile-Source' header" do - expect(Bundler.rubygems).to receive(:gem_remote_fetcher).twice.and_return(fetcher) - expect(fetcher).to_not receive(:headers=) - expect(fetcher).to receive(:fetch_path).with(uri + "specs.4.8.gz").and_return(specs_response) - expect(fetcher).to receive(:fetch_path).with(uri + "prerelease_specs.4.8.gz").and_return(prerelease_specs_response) - result = Bundler.rubygems.fetch_all_remote_specs(remote_no_mirror) - expect(result).to eq(%w[specs prerelease_specs]) - end - end - end -end diff --git a/spec/bundler/bundler/settings/validator_spec.rb b/spec/bundler/bundler/settings/validator_spec.rb deleted file mode 100644 index e4ffd89435..0000000000 --- a/spec/bundler/bundler/settings/validator_spec.rb +++ /dev/null @@ -1,111 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe Bundler::Settings::Validator do - describe ".validate!" do - def validate!(key, value, settings) - transformed_key = Bundler.settings.key_for(key) - if value.nil? - settings.delete(transformed_key) - else - settings[transformed_key] = value - end - described_class.validate!(key, value, settings) - settings - end - - it "path and path.system are mutually exclusive" do - expect(validate!("path", "bundle", {})).to eq("BUNDLE_PATH" => "bundle") - expect(validate!("path", "bundle", "BUNDLE_PATH__SYSTEM" => false)).to eq("BUNDLE_PATH" => "bundle") - expect(validate!("path", "bundle", "BUNDLE_PATH__SYSTEM" => true)).to eq("BUNDLE_PATH" => "bundle") - expect(validate!("path", nil, "BUNDLE_PATH__SYSTEM" => true)).to eq("BUNDLE_PATH__SYSTEM" => true) - expect(validate!("path", nil, "BUNDLE_PATH__SYSTEM" => false)).to eq("BUNDLE_PATH__SYSTEM" => false) - expect(validate!("path", nil, {})).to eq({}) - - expect(validate!("path.system", true, "BUNDLE_PATH" => "bundle")).to eq("BUNDLE_PATH__SYSTEM" => true) - expect(validate!("path.system", false, "BUNDLE_PATH" => "bundle")).to eq("BUNDLE_PATH" => "bundle", "BUNDLE_PATH__SYSTEM" => false) - expect(validate!("path.system", nil, "BUNDLE_PATH" => "bundle")).to eq("BUNDLE_PATH" => "bundle") - expect(validate!("path.system", true, {})).to eq("BUNDLE_PATH__SYSTEM" => true) - expect(validate!("path.system", false, {})).to eq("BUNDLE_PATH__SYSTEM" => false) - expect(validate!("path.system", nil, {})).to eq({}) - end - - it "a group cannot be in both `with` & `without` simultaneously" do - expect do - validate!("with", "", {}) - validate!("with", nil, {}) - validate!("with", "", "BUNDLE_WITHOUT" => "a") - validate!("with", nil, "BUNDLE_WITHOUT" => "a") - validate!("with", "b:c", "BUNDLE_WITHOUT" => "a") - - validate!("without", "", {}) - validate!("without", nil, {}) - validate!("without", "", "BUNDLE_WITH" => "a") - validate!("without", nil, "BUNDLE_WITH" => "a") - validate!("without", "b:c", "BUNDLE_WITH" => "a") - end.not_to raise_error - - expect { validate!("with", "b:c", "BUNDLE_WITHOUT" => "c:d") }.to raise_error Bundler::InvalidOption, strip_whitespace(<<-EOS).strip - Setting `with` to "b:c" failed: - - a group cannot be in both `with` & `without` simultaneously - - `without` is current set to [:c, :d] - - the `c` groups conflict - EOS - - expect { validate!("without", "b:c", "BUNDLE_WITH" => "c:d") }.to raise_error Bundler::InvalidOption, strip_whitespace(<<-EOS).strip - Setting `without` to "b:c" failed: - - a group cannot be in both `with` & `without` simultaneously - - `with` is current set to [:c, :d] - - the `c` groups conflict - EOS - end - end - - describe described_class::Rule do - let(:keys) { %w[key] } - let(:description) { "rule description" } - let(:validate) { proc { raise "validate called!" } } - subject(:rule) { described_class.new(keys, description, &validate) } - - describe "#validate!" do - it "calls the block" do - expect { rule.validate!("key", nil, {}) }.to raise_error(RuntimeError, /validate called!/) - end - end - - describe "#fail!" do - it "raises with a helpful message" do - expect { subject.fail!("key", "value", "reason1", "reason2") }.to raise_error Bundler::InvalidOption, strip_whitespace(<<-EOS).strip - Setting `key` to "value" failed: - - rule description - - reason1 - - reason2 - EOS - end - end - - describe "#set" do - it "works when the value has not changed" do - allow(Bundler.ui).to receive(:info).never - - subject.set({}, "key", nil) - subject.set({ "BUNDLE_KEY" => "value" }, "key", "value") - end - - it "prints out when the value is changing" do - settings = {} - - expect(Bundler.ui).to receive(:info).with("Setting `key` to \"value\", since rule description, reason1") - subject.set(settings, "key", "value", "reason1") - expect(settings).to eq("BUNDLE_KEY" => "value") - - expect(Bundler.ui).to receive(:info).with("Setting `key` to \"value2\", since rule description, reason2") - subject.set(settings, "key", "value2", "reason2") - expect(settings).to eq("BUNDLE_KEY" => "value2") - - expect(Bundler.ui).to receive(:info).with("Setting `key` to nil, since rule description, reason3") - subject.set(settings, "key", nil, "reason3") - expect(settings).to eq({}) - end - end - end -end diff --git a/spec/bundler/bundler/settings_spec.rb b/spec/bundler/bundler/settings_spec.rb deleted file mode 100644 index 1a31493e20..0000000000 --- a/spec/bundler/bundler/settings_spec.rb +++ /dev/null @@ -1,326 +0,0 @@ -# frozen_string_literal: true - -require "bundler/settings" - -RSpec.describe Bundler::Settings do - subject(:settings) { described_class.new(bundled_app) } - - describe "#set_local" do - context "when the local config file is not found" do - subject(:settings) { described_class.new(nil) } - - it "raises a GemfileNotFound error with explanation" do - expect { subject.set_local("foo", "bar") }. - to raise_error(Bundler::GemfileNotFound, "Could not locate Gemfile") - end - end - end - - describe "load_config" do - let(:hash) do - { - "build.thrift" => "--with-cppflags=-D_FORTIFY_SOURCE=0", - "build.libv8" => "--with-system-v8", - "build.therubyracer" => "--with-v8-dir", - "build.pg" => "--with-pg-config=/usr/local/Cellar/postgresql92/9.2.8_1/bin/pg_config", - "gem.coc" => "false", - "gem.mit" => "false", - "gem.test" => "minitest", - "thingy" => <<-EOS.tr("\n", " "), ---asdf --fdsa --ty=oh man i hope this doesnt break bundler because -that would suck --ehhh=oh geez it looks like i might have broken bundler somehow ---very-important-option=DontDeleteRoo ---very-important-option=DontDeleteRoo ---very-important-option=DontDeleteRoo ---very-important-option=DontDeleteRoo - EOS - "xyz" => "zyx", - } - end - - before do - hash.each do |key, value| - settings.set_local key, value - end - end - - it "can load the config" do - loaded = settings.send(:load_config, bundled_app("config")) - expected = Hash[hash.map do |k, v| - [settings.send(:key_for, k), v.to_s] - end] - expect(loaded).to eq(expected) - end - - context "when BUNDLE_IGNORE_CONFIG is set" do - before { ENV["BUNDLE_IGNORE_CONFIG"] = "TRUE" } - - it "ignores the config" do - loaded = settings.send(:load_config, bundled_app("config")) - expect(loaded).to eq({}) - end - end - end - - describe "#global_config_file" do - context "when $HOME is not accessible" do - context "when $TMPDIR is not writable" do - it "does not raise" do - expect(Bundler.rubygems).to receive(:user_home).twice.and_return(nil) - expect(FileUtils).to receive(:mkpath).twice.with(File.join(Dir.tmpdir, "bundler", "home")).and_raise(Errno::EROFS, "Read-only file system @ dir_s_mkdir - /tmp/bundler") - - expect(subject.send(:global_config_file)).to be_nil - end - end - end - end - - describe "#[]" do - context "when the local config file is not found" do - subject(:settings) { described_class.new } - - it "does not raise" do - expect do - subject["foo"] - end.not_to raise_error - end - end - - context "when not set" do - context "when default value present" do - it "retrieves value" do - expect(settings[:retry]).to be 3 - end - end - - it "returns nil" do - expect(settings[:buttermilk]).to be nil - end - end - - context "when is boolean" do - it "returns a boolean" do - settings.set_local :frozen, "true" - expect(settings[:frozen]).to be true - end - context "when specific gem is configured" do - it "returns a boolean" do - settings.set_local "ignore_messages.foobar", "true" - expect(settings["ignore_messages.foobar"]).to be true - end - end - end - - context "when is number" do - it "returns a number" do - settings.set_local :ssl_verify_mode, "1" - expect(settings[:ssl_verify_mode]).to be 1 - end - end - - context "when it's not possible to write to the file" do - it "raises an PermissionError with explanation" do - expect(bundler_fileutils).to receive(:mkdir_p).with(settings.send(:local_config_file).dirname). - and_raise(Errno::EACCES) - expect { settings.set_local :frozen, "1" }. - to raise_error(Bundler::PermissionError, /config/) - end - end - end - - describe "#temporary" do - it "reset after used" do - Bundler.settings.set_local :no_install, true - - Bundler.settings.temporary(:no_install => false) do - expect(Bundler.settings[:no_install]).to eq false - end - - expect(Bundler.settings[:no_install]).to eq true - end - - it "returns the return value of the block" do - ret = Bundler.settings.temporary({}) { :ret } - expect(ret).to eq :ret - end - - context "when called without a block" do - it "leaves the setting changed" do - Bundler.settings.temporary(:foo => :random) - expect(Bundler.settings[:foo]).to eq "random" - end - - it "returns nil" do - expect(Bundler.settings.temporary(:foo => :bar)).to be_nil - end - end - end - - describe "#set_global" do - context "when it's not possible to write to the file" do - it "raises an PermissionError with explanation" do - expect(bundler_fileutils).to receive(:mkdir_p).with(settings.send(:global_config_file).dirname). - and_raise(Errno::EACCES) - expect { settings.set_global(:frozen, "1") }. - to raise_error(Bundler::PermissionError, %r{\.bundle/config}) - end - end - end - - describe "#pretty_values_for" do - it "prints the converted value rather than the raw string" do - bool_key = described_class::BOOL_KEYS.first - settings.set_local(bool_key, "false") - expect(subject.pretty_values_for(bool_key)).to eq [ - "Set for your local app (#{bundled_app("config")}): false", - ] - end - end - - describe "#mirror_for" do - let(:uri) { URI("https://rubygems.org/") } - - context "with no configured mirror" do - it "returns the original URI" do - expect(settings.mirror_for(uri)).to eq(uri) - end - - it "converts a string parameter to a URI" do - expect(settings.mirror_for("https://rubygems.org/")).to eq(uri) - end - end - - context "with a configured mirror" do - let(:mirror_uri) { URI("https://rubygems-mirror.org/") } - - before { settings.set_local "mirror.https://rubygems.org/", mirror_uri.to_s } - - it "returns the mirror URI" do - expect(settings.mirror_for(uri)).to eq(mirror_uri) - end - - it "converts a string parameter to a URI" do - expect(settings.mirror_for("https://rubygems.org/")).to eq(mirror_uri) - end - - it "normalizes the URI" do - expect(settings.mirror_for("https://rubygems.org")).to eq(mirror_uri) - end - - it "is case insensitive" do - expect(settings.mirror_for("HTTPS://RUBYGEMS.ORG/")).to eq(mirror_uri) - end - - context "with a file URI" do - let(:mirror_uri) { URI("file:/foo/BAR/baz/qUx/") } - - it "returns the mirror URI" do - expect(settings.mirror_for(uri)).to eq(mirror_uri) - end - - it "converts a string parameter to a URI" do - expect(settings.mirror_for("file:/foo/BAR/baz/qUx/")).to eq(mirror_uri) - end - - it "normalizes the URI" do - expect(settings.mirror_for("file:/foo/BAR/baz/qUx")).to eq(mirror_uri) - end - end - end - end - - describe "#credentials_for" do - let(:uri) { URI("https://gemserver.example.org/") } - let(:credentials) { "username:password" } - - context "with no configured credentials" do - it "returns nil" do - expect(settings.credentials_for(uri)).to be_nil - end - end - - context "with credentials configured by URL" do - before { settings.set_local "https://gemserver.example.org/", credentials } - - it "returns the configured credentials" do - expect(settings.credentials_for(uri)).to eq(credentials) - end - end - - context "with credentials configured by hostname" do - before { settings.set_local "gemserver.example.org", credentials } - - it "returns the configured credentials" do - expect(settings.credentials_for(uri)).to eq(credentials) - end - end - end - - describe "URI normalization" do - it "normalizes HTTP URIs in credentials configuration" do - settings.set_local "http://gemserver.example.org", "username:password" - expect(settings.all).to include("http://gemserver.example.org/") - end - - it "normalizes HTTPS URIs in credentials configuration" do - settings.set_local "https://gemserver.example.org", "username:password" - expect(settings.all).to include("https://gemserver.example.org/") - end - - it "normalizes HTTP URIs in mirror configuration" do - settings.set_local "mirror.http://rubygems.org", "http://rubygems-mirror.org" - expect(settings.all).to include("mirror.http://rubygems.org/") - end - - it "normalizes HTTPS URIs in mirror configuration" do - settings.set_local "mirror.https://rubygems.org", "http://rubygems-mirror.org" - expect(settings.all).to include("mirror.https://rubygems.org/") - end - - it "does not normalize other config keys that happen to contain 'http'" do - settings.set_local "local.httparty", home("httparty") - expect(settings.all).to include("local.httparty") - end - - it "does not normalize other config keys that happen to contain 'https'" do - settings.set_local "local.httpsmarty", home("httpsmarty") - expect(settings.all).to include("local.httpsmarty") - end - - it "reads older keys without trailing slashes" do - settings.set_local "mirror.https://rubygems.org", "http://rubygems-mirror.org" - expect(settings.mirror_for("https://rubygems.org/")).to eq( - URI("http://rubygems-mirror.org/") - ) - end - - it "normalizes URIs with a fallback_timeout option" do - settings.set_local "mirror.https://rubygems.org/.fallback_timeout", "true" - expect(settings.all).to include("mirror.https://rubygems.org/.fallback_timeout") - end - - it "normalizes URIs with a fallback_timeout option without a trailing slash" do - settings.set_local "mirror.https://rubygems.org.fallback_timeout", "true" - expect(settings.all).to include("mirror.https://rubygems.org/.fallback_timeout") - end - end - - describe "BUNDLE_ keys format" do - let(:settings) { described_class.new(bundled_app(".bundle")) } - - it "converts older keys without double dashes" do - config("BUNDLE_MY__PERSONAL.RACK" => "~/Work/git/rack") - expect(settings["my.personal.rack"]).to eq("~/Work/git/rack") - end - - it "converts older keys without trailing slashes and double dashes" do - config("BUNDLE_MIRROR__HTTPS://RUBYGEMS.ORG" => "http://rubygems-mirror.org") - expect(settings["mirror.https://rubygems.org/"]).to eq("http://rubygems-mirror.org") - end - - it "reads newer keys format properly" do - config("BUNDLE_MIRROR__HTTPS://RUBYGEMS__ORG/" => "http://rubygems-mirror.org") - expect(settings["mirror.https://rubygems.org/"]).to eq("http://rubygems-mirror.org") - end - end -end diff --git a/spec/bundler/bundler/shared_helpers_spec.rb b/spec/bundler/bundler/shared_helpers_spec.rb deleted file mode 100644 index b8f099d5ba..0000000000 --- a/spec/bundler/bundler/shared_helpers_spec.rb +++ /dev/null @@ -1,493 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe Bundler::SharedHelpers do - let(:ext_lock_double) { double(:ext_lock) } - - before do - allow(Bundler.rubygems).to receive(:ext_lock).and_return(ext_lock_double) - allow(ext_lock_double).to receive(:synchronize) {|&block| block.call } - end - - subject { Bundler::SharedHelpers } - - describe "#default_gemfile" do - before { ENV["BUNDLE_GEMFILE"] = "/path/Gemfile" } - - context "Gemfile is present" do - let(:expected_gemfile_path) { Pathname.new("/path/Gemfile") } - - it "returns the Gemfile path" do - expect(subject.default_gemfile).to eq(expected_gemfile_path) - end - end - - context "Gemfile is not present" do - before { ENV["BUNDLE_GEMFILE"] = nil } - - it "raises a GemfileNotFound error" do - expect { subject.default_gemfile }.to raise_error( - Bundler::GemfileNotFound, "Could not locate Gemfile" - ) - end - end - - context "Gemfile is not an absolute path" do - before { ENV["BUNDLE_GEMFILE"] = "Gemfile" } - - let(:expected_gemfile_path) { Pathname.new("Gemfile").expand_path } - - it "returns the Gemfile path" do - expect(subject.default_gemfile).to eq(expected_gemfile_path) - end - end - end - - describe "#default_lockfile" do - context "gemfile is gems.rb" do - let(:gemfile_path) { Pathname.new("/path/gems.rb") } - let(:expected_lockfile_path) { Pathname.new("/path/gems.locked") } - - before { allow(subject).to receive(:default_gemfile).and_return(gemfile_path) } - - it "returns the gems.locked path" do - expect(subject.default_lockfile).to eq(expected_lockfile_path) - end - end - - context "is a regular Gemfile" do - let(:gemfile_path) { Pathname.new("/path/Gemfile") } - let(:expected_lockfile_path) { Pathname.new("/path/Gemfile.lock") } - - before { allow(subject).to receive(:default_gemfile).and_return(gemfile_path) } - - it "returns the lock file path" do - expect(subject.default_lockfile).to eq(expected_lockfile_path) - end - end - end - - describe "#default_bundle_dir" do - context ".bundle does not exist" do - it "returns nil" do - expect(subject.default_bundle_dir).to be_nil - end - end - - context ".bundle is global .bundle" do - let(:global_rubygems_dir) { Pathname.new("#{bundled_app}") } - - before do - Dir.mkdir ".bundle" - allow(Bundler.rubygems).to receive(:user_home).and_return(global_rubygems_dir) - end - - it "returns nil" do - expect(subject.default_bundle_dir).to be_nil - end - end - - context ".bundle is not global .bundle" do - let(:global_rubygems_dir) { Pathname.new("/path/rubygems") } - let(:expected_bundle_dir_path) { Pathname.new("#{bundled_app}/.bundle") } - - before do - Dir.mkdir ".bundle" - allow(Bundler.rubygems).to receive(:user_home).and_return(global_rubygems_dir) - end - - it "returns the .bundle path" do - expect(subject.default_bundle_dir).to eq(expected_bundle_dir_path) - end - end - end - - describe "#in_bundle?" do - it "calls the find_gemfile method" do - expect(subject).to receive(:find_gemfile) - subject.in_bundle? - end - - shared_examples_for "correctly determines whether to return a Gemfile path" do - context "currently in directory with a Gemfile" do - before { File.new("Gemfile", "w") } - - it "returns path of the bundle Gemfile" do - expect(subject.in_bundle?).to eq("#{bundled_app}/Gemfile") - end - end - - context "currently in directory without a Gemfile" do - it "returns nil" do - expect(subject.in_bundle?).to be_nil - end - end - end - - context "ENV['BUNDLE_GEMFILE'] set" do - before { ENV["BUNDLE_GEMFILE"] = "/path/Gemfile" } - - it "returns ENV['BUNDLE_GEMFILE']" do - expect(subject.in_bundle?).to eq("/path/Gemfile") - end - end - - context "ENV['BUNDLE_GEMFILE'] not set" do - before { ENV["BUNDLE_GEMFILE"] = nil } - - it_behaves_like "correctly determines whether to return a Gemfile path" - end - - context "ENV['BUNDLE_GEMFILE'] is blank" do - before { ENV["BUNDLE_GEMFILE"] = "" } - - it_behaves_like "correctly determines whether to return a Gemfile path" - end - end - - describe "#chdir" do - let(:op_block) { proc { Dir.mkdir "nested_dir" } } - - before { Dir.mkdir "chdir_test_dir" } - - it "executes the passed block while in the specified directory" do - subject.chdir("chdir_test_dir", &op_block) - expect(Pathname.new("chdir_test_dir/nested_dir")).to exist - end - end - - describe "#pwd" do - it "returns the current absolute path" do - expect(subject.pwd).to eq(bundled_app) - end - end - - describe "#with_clean_git_env" do - let(:with_clean_git_env_block) { proc { Dir.mkdir "with_clean_git_env_test_dir" } } - - before do - ENV["GIT_DIR"] = "ORIGINAL_ENV_GIT_DIR" - ENV["GIT_WORK_TREE"] = "ORIGINAL_ENV_GIT_WORK_TREE" - end - - it "executes the passed block" do - subject.with_clean_git_env(&with_clean_git_env_block) - expect(Pathname.new("with_clean_git_env_test_dir")).to exist - end - - context "when a block is passed" do - let(:with_clean_git_env_block) do - proc do - Dir.mkdir "git_dir_test_dir" unless ENV["GIT_DIR"].nil? - Dir.mkdir "git_work_tree_test_dir" unless ENV["GIT_WORK_TREE"].nil? - end end - - it "uses a fresh git env for execution" do - subject.with_clean_git_env(&with_clean_git_env_block) - expect(Pathname.new("git_dir_test_dir")).to_not exist - expect(Pathname.new("git_work_tree_test_dir")).to_not exist - end - end - - context "passed block does not throw errors" do - let(:with_clean_git_env_block) do - proc do - ENV["GIT_DIR"] = "NEW_ENV_GIT_DIR" - ENV["GIT_WORK_TREE"] = "NEW_ENV_GIT_WORK_TREE" - end end - - it "restores the git env after" do - subject.with_clean_git_env(&with_clean_git_env_block) - expect(ENV["GIT_DIR"]).to eq("ORIGINAL_ENV_GIT_DIR") - expect(ENV["GIT_WORK_TREE"]).to eq("ORIGINAL_ENV_GIT_WORK_TREE") - end - end - - context "passed block throws errors" do - let(:with_clean_git_env_block) do - proc do - ENV["GIT_DIR"] = "NEW_ENV_GIT_DIR" - ENV["GIT_WORK_TREE"] = "NEW_ENV_GIT_WORK_TREE" - raise RuntimeError.new - end end - - it "restores the git env after" do - expect { subject.with_clean_git_env(&with_clean_git_env_block) }.to raise_error(RuntimeError) - expect(ENV["GIT_DIR"]).to eq("ORIGINAL_ENV_GIT_DIR") - expect(ENV["GIT_WORK_TREE"]).to eq("ORIGINAL_ENV_GIT_WORK_TREE") - end - end - end - - describe "#set_bundle_environment" do - before do - ENV["BUNDLE_GEMFILE"] = "Gemfile" - end - - shared_examples_for "ENV['PATH'] gets set correctly" do - before { Dir.mkdir ".bundle" } - - it "ensures bundle bin path is in ENV['PATH']" do - subject.set_bundle_environment - paths = ENV["PATH"].split(File::PATH_SEPARATOR) - expect(paths).to include("#{Bundler.bundle_path}/bin") - end - end - - shared_examples_for "ENV['RUBYOPT'] gets set correctly" do - it "ensures -rbundler/setup is at the beginning of ENV['RUBYOPT']" do - subject.set_bundle_environment - expect(ENV["RUBYOPT"].split(" ")).to start_with("-rbundler/setup") - end - end - - shared_examples_for "ENV['RUBYLIB'] gets set correctly" do - let(:ruby_lib_path) { "stubbed_ruby_lib_dir" } - - before do - allow(Bundler::SharedHelpers).to receive(:bundler_ruby_lib).and_return(ruby_lib_path) - end - - it "ensures bundler's ruby version lib path is in ENV['RUBYLIB']" do - subject.set_bundle_environment - paths = (ENV["RUBYLIB"]).split(File::PATH_SEPARATOR) - expect(paths).to include(ruby_lib_path) - end - end - - it "calls the appropriate set methods" do - expect(subject).to receive(:set_path) - expect(subject).to receive(:set_rubyopt) - expect(subject).to receive(:set_rubylib) - subject.set_bundle_environment - end - - it "exits if bundle path contains the unix-like path separator" do - if Gem.respond_to?(:path_separator) - allow(Gem).to receive(:path_separator).and_return(":") - else - stub_const("File::PATH_SEPARATOR", ":".freeze) - end - allow(Bundler).to receive(:bundle_path) { Pathname.new("so:me/dir/bin") } - expect { subject.send(:validate_bundle_path) }.to raise_error( - Bundler::PathError, - "Your bundle path contains text matching \":\", which is the " \ - "path separator for your system. Bundler cannot " \ - "function correctly when the Bundle path contains the " \ - "system's PATH separator. Please change your " \ - "bundle path to not match \":\".\nYour current bundle " \ - "path is '#{Bundler.bundle_path}'." - ) - end - - context "with a jruby path_separator regex", :ruby => "1.9" do - # In versions of jruby that supported ruby 1.8, the path separator was the standard File::PATH_SEPARATOR - let(:regex) { Regexp.new("(? "1.9" do - let(:file_op_block) { proc {|_path| raise Errno::ENOTSUP } } - - it "raises a OperationNotSupportedError" do - expect { subject.filesystem_access("/path", &file_op_block) }.to raise_error( - Bundler::OperationNotSupportedError - ) - end - end - - context "system throws Errno::ENOSPC" do - let(:file_op_block) { proc {|_path| raise Errno::ENOSPC } } - - it "raises a NoSpaceOnDeviceError" do - expect { subject.filesystem_access("/path", &file_op_block) }.to raise_error( - Bundler::NoSpaceOnDeviceError - ) - end - end - - context "system throws an unhandled SystemCallError" do - let(:error) { SystemCallError.new("Shields down", 1337) } - let(:file_op_block) { proc {|_path| raise error } } - - it "raises a GenericSystemCallError" do - expect { subject.filesystem_access("/path", &file_op_block) }.to raise_error( - Bundler::GenericSystemCallError, /error accessing.+underlying.+Shields down/m - ) - end - end - end - - describe "#const_get_safely" do - module TargetNamespace - VALID_CONSTANT = 1 - end - - context "when the namespace does have the requested constant" do - it "returns the value of the requested constant" do - expect(subject.const_get_safely(:VALID_CONSTANT, TargetNamespace)).to eq(1) - end - end - - context "when the requested constant is passed as a string" do - it "returns the value of the requested constant" do - expect(subject.const_get_safely("VALID_CONSTANT", TargetNamespace)).to eq(1) - end - end - - context "when the namespace does not have the requested constant" do - it "returns nil" do - expect(subject.const_get_safely("INVALID_CONSTANT", TargetNamespace)).to be_nil - end - end - end -end diff --git a/spec/bundler/bundler/source/git/git_proxy_spec.rb b/spec/bundler/bundler/source/git/git_proxy_spec.rb deleted file mode 100644 index d282a449a5..0000000000 --- a/spec/bundler/bundler/source/git/git_proxy_spec.rb +++ /dev/null @@ -1,116 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe Bundler::Source::Git::GitProxy do - let(:uri) { "https://github.com/bundler/bundler.git" } - subject { described_class.new(Pathname("path"), uri, "HEAD") } - - context "with configured credentials" do - it "adds username and password to URI" do - Bundler.settings.temporary(uri => "u:p") - expect(subject).to receive(:git_retry).with(match("https://u:p@github.com/bundler/bundler.git")) - subject.checkout - end - - it "adds username and password to URI for host" do - Bundler.settings.temporary("github.com" => "u:p") - expect(subject).to receive(:git_retry).with(match("https://u:p@github.com/bundler/bundler.git")) - subject.checkout - end - - it "does not add username and password to mismatched URI" do - Bundler.settings.temporary("https://u:p@github.com/bundler/bundler-mismatch.git" => "u:p") - expect(subject).to receive(:git_retry).with(match(uri)) - subject.checkout - end - - it "keeps original userinfo" do - Bundler.settings.temporary("github.com" => "u:p") - original = "https://orig:info@github.com/bundler/bundler.git" - subject = described_class.new(Pathname("path"), original, "HEAD") - expect(subject).to receive(:git_retry).with(match(original)) - subject.checkout - end - end - - describe "#version" do - context "with a normal version number" do - before do - expect(subject).to receive(:git).with("--version"). - and_return("git version 1.2.3") - end - - it "returns the git version number" do - expect(subject.version).to eq("1.2.3") - end - - it "does not raise an error when passed into Gem::Version.create" do - expect { Gem::Version.create subject.version }.not_to raise_error - end - end - - context "with a OSX version number" do - before do - expect(subject).to receive(:git).with("--version"). - and_return("git version 1.2.3 (Apple Git-BS)") - end - - it "strips out OSX specific additions in the version string" do - expect(subject.version).to eq("1.2.3") - end - - it "does not raise an error when passed into Gem::Version.create" do - expect { Gem::Version.create subject.version }.not_to raise_error - end - end - - context "with a msysgit version number" do - before do - expect(subject).to receive(:git).with("--version"). - and_return("git version 1.2.3.msysgit.0") - end - - it "strips out msysgit specific additions in the version string" do - expect(subject.version).to eq("1.2.3") - end - - it "does not raise an error when passed into Gem::Version.create" do - expect { Gem::Version.create subject.version }.not_to raise_error - end - end - end - - describe "#full_version" do - context "with a normal version number" do - before do - expect(subject).to receive(:git).with("--version"). - and_return("git version 1.2.3") - end - - it "returns the git version number" do - expect(subject.full_version).to eq("1.2.3") - end - end - - context "with a OSX version number" do - before do - expect(subject).to receive(:git).with("--version"). - and_return("git version 1.2.3 (Apple Git-BS)") - end - - it "does not strip out OSX specific additions in the version string" do - expect(subject.full_version).to eq("1.2.3 (Apple Git-BS)") - end - end - - context "with a msysgit version number" do - before do - expect(subject).to receive(:git).with("--version"). - and_return("git version 1.2.3.msysgit.0") - end - - it "does not strip out msysgit specific additions in the version string" do - expect(subject.full_version).to eq("1.2.3.msysgit.0") - end - end - end -end diff --git a/spec/bundler/bundler/source/path_spec.rb b/spec/bundler/bundler/source/path_spec.rb deleted file mode 100644 index 1d13e03ec1..0000000000 --- a/spec/bundler/bundler/source/path_spec.rb +++ /dev/null @@ -1,31 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe Bundler::Source::Path do - before do - allow(Bundler).to receive(:root) { Pathname.new("root") } - end - - describe "#eql?" do - subject { described_class.new("path" => "gems/a") } - - context "with two equivalent relative paths from different roots" do - let(:a_gem_opts) { { "path" => "../gems/a", "root_path" => Bundler.root.join("nested") } } - let(:a_gem) { described_class.new a_gem_opts } - - it "returns true" do - expect(subject).to eq a_gem - end - end - - context "with the same (but not equivalent) relative path from different roots" do - subject { described_class.new("path" => "gems/a") } - - let(:a_gem_opts) { { "path" => "gems/a", "root_path" => Bundler.root.join("nested") } } - let(:a_gem) { described_class.new a_gem_opts } - - it "returns false" do - expect(subject).to_not eq a_gem - end - end - end -end diff --git a/spec/bundler/bundler/source/rubygems/remote_spec.rb b/spec/bundler/bundler/source/rubygems/remote_spec.rb deleted file mode 100644 index 9a7ab42128..0000000000 --- a/spec/bundler/bundler/source/rubygems/remote_spec.rb +++ /dev/null @@ -1,162 +0,0 @@ -# frozen_string_literal: true - -require "bundler/source/rubygems/remote" - -RSpec.describe Bundler::Source::Rubygems::Remote do - def remote(uri) - Bundler::Source::Rubygems::Remote.new(uri) - end - - before do - allow(Digest(:MD5)).to receive(:hexdigest).with(duck_type(:to_s)) {|string| "MD5HEX(#{string})" } - end - - let(:uri_no_auth) { URI("https://gems.example.com") } - let(:uri_with_auth) { URI("https://#{credentials}@gems.example.com") } - let(:credentials) { "username:password" } - - context "when the original URI has no credentials" do - describe "#uri" do - it "returns the original URI" do - expect(remote(uri_no_auth).uri).to eq(uri_no_auth) - end - - it "applies configured credentials" do - Bundler.settings.temporary(uri_no_auth.to_s => credentials) - expect(remote(uri_no_auth).uri).to eq(uri_with_auth) - end - end - - describe "#anonymized_uri" do - it "returns the original URI" do - expect(remote(uri_no_auth).anonymized_uri).to eq(uri_no_auth) - end - - it "does not apply given credentials" do - Bundler.settings.temporary(uri_no_auth.to_s => credentials) - expect(remote(uri_no_auth).anonymized_uri).to eq(uri_no_auth) - end - end - - describe "#cache_slug" do - it "returns the correct slug" do - expect(remote(uri_no_auth).cache_slug).to eq("gems.example.com.443.MD5HEX(gems.example.com.443./)") - end - - it "only applies the given user" do - Bundler.settings.temporary(uri_no_auth.to_s => credentials) - expect(remote(uri_no_auth).cache_slug).to eq("gems.example.com.username.443.MD5HEX(gems.example.com.username.443./)") - end - end - end - - context "when the original URI has a username and password" do - describe "#uri" do - it "returns the original URI" do - expect(remote(uri_with_auth).uri).to eq(uri_with_auth) - end - - it "does not apply configured credentials" do - Bundler.settings.temporary(uri_no_auth.to_s => "other:stuff") - expect(remote(uri_with_auth).uri).to eq(uri_with_auth) - end - end - - describe "#anonymized_uri" do - it "returns the URI without username and password" do - expect(remote(uri_with_auth).anonymized_uri).to eq(uri_no_auth) - end - - it "does not apply given credentials" do - Bundler.settings.temporary(uri_no_auth.to_s => "other:stuff") - expect(remote(uri_with_auth).anonymized_uri).to eq(uri_no_auth) - end - end - - describe "#cache_slug" do - it "returns the correct slug" do - expect(remote(uri_with_auth).cache_slug).to eq("gems.example.com.username.443.MD5HEX(gems.example.com.username.443./)") - end - - it "does not apply given credentials" do - Bundler.settings.temporary(uri_with_auth.to_s => credentials) - expect(remote(uri_with_auth).cache_slug).to eq("gems.example.com.username.443.MD5HEX(gems.example.com.username.443./)") - end - end - end - - context "when the original URI has only a username" do - let(:uri) { URI("https://SeCrEt-ToKeN@gem.fury.io/me/") } - - describe "#anonymized_uri" do - it "returns the URI without username and password" do - expect(remote(uri).anonymized_uri).to eq(URI("https://gem.fury.io/me/")) - end - end - - describe "#cache_slug" do - it "returns the correct slug" do - expect(remote(uri).cache_slug).to eq("gem.fury.io.SeCrEt-ToKeN.443.MD5HEX(gem.fury.io.SeCrEt-ToKeN.443./me/)") - end - end - end - - context "when a mirror with inline credentials is configured for the URI" do - let(:uri) { URI("https://rubygems.org/") } - let(:mirror_uri_with_auth) { URI("https://username:password@rubygems-mirror.org/") } - let(:mirror_uri_no_auth) { URI("https://rubygems-mirror.org/") } - - before { Bundler.settings.set_local("mirror.https://rubygems.org/", mirror_uri_with_auth.to_s) } - - specify "#uri returns the mirror URI with credentials" do - expect(remote(uri).uri).to eq(mirror_uri_with_auth) - end - - specify "#anonymized_uri returns the mirror URI without credentials" do - expect(remote(uri).anonymized_uri).to eq(mirror_uri_no_auth) - end - - specify "#original_uri returns the original source" do - expect(remote(uri).original_uri).to eq(uri) - end - - specify "#cache_slug returns the correct slug" do - expect(remote(uri).cache_slug).to eq("rubygems.org.443.MD5HEX(rubygems.org.443./)") - end - end - - context "when a mirror with configured credentials is configured for the URI" do - let(:uri) { URI("https://rubygems.org/") } - let(:mirror_uri_with_auth) { URI("https://#{credentials}@rubygems-mirror.org/") } - let(:mirror_uri_no_auth) { URI("https://rubygems-mirror.org/") } - - before do - Bundler.settings.temporary("mirror.https://rubygems.org/" => mirror_uri_no_auth.to_s) - Bundler.settings.temporary(mirror_uri_no_auth.to_s => credentials) - end - - specify "#uri returns the mirror URI with credentials" do - expect(remote(uri).uri).to eq(mirror_uri_with_auth) - end - - specify "#anonymized_uri returns the mirror URI without credentials" do - expect(remote(uri).anonymized_uri).to eq(mirror_uri_no_auth) - end - - specify "#original_uri returns the original source" do - expect(remote(uri).original_uri).to eq(uri) - end - - specify "#cache_slug returns the original source" do - expect(remote(uri).cache_slug).to eq("rubygems.org.443.MD5HEX(rubygems.org.443./)") - end - end - - context "when there is no mirror set" do - describe "#original_uri" do - it "is not set" do - expect(remote(uri_no_auth).original_uri).to be_nil - end - end - end -end diff --git a/spec/bundler/bundler/source/rubygems_spec.rb b/spec/bundler/bundler/source/rubygems_spec.rb deleted file mode 100644 index 7c457a7265..0000000000 --- a/spec/bundler/bundler/source/rubygems_spec.rb +++ /dev/null @@ -1,33 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe Bundler::Source::Rubygems do - before do - allow(Bundler).to receive(:root) { Pathname.new("root") } - end - - describe "caches" do - it "includes Bundler.app_cache" do - expect(subject.caches).to include(Bundler.app_cache) - end - - it "includes GEM_PATH entries" do - Gem.path.each do |path| - expect(subject.caches).to include(File.expand_path("#{path}/cache")) - end - end - - it "is an array of strings or pathnames" do - subject.caches.each do |cache| - expect([String, Pathname]).to include(cache.class) - end - end - end - - describe "#add_remote" do - context "when the source is an HTTP(s) URI with no host" do - it "raises error" do - expect { subject.add_remote("https:rubygems.org") }.to raise_error(ArgumentError) - end - end - end -end diff --git a/spec/bundler/bundler/source_list_spec.rb b/spec/bundler/bundler/source_list_spec.rb deleted file mode 100644 index ce3353012c..0000000000 --- a/spec/bundler/bundler/source_list_spec.rb +++ /dev/null @@ -1,463 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe Bundler::SourceList do - before do - allow(Bundler).to receive(:root) { Pathname.new "./tmp/bundled_app" } - - stub_const "ASourcePlugin", Class.new(Bundler::Plugin::API) - ASourcePlugin.source "new_source" - allow(Bundler::Plugin).to receive(:source?).with("new_source").and_return(true) - end - - subject(:source_list) { Bundler::SourceList.new } - - let(:rubygems_aggregate) { Bundler::Source::Rubygems.new } - let(:metadata_source) { Bundler::Source::Metadata.new } - - describe "adding sources" do - before do - source_list.add_path_source("path" => "/existing/path/to/gem") - source_list.add_git_source("uri" => "git://existing-git.org/path.git") - source_list.add_rubygems_source("remotes" => ["https://existing-rubygems.org"]) - source_list.add_plugin_source("new_source", "uri" => "https://some.url/a") - end - - describe "#add_path_source" do - before do - @duplicate = source_list.add_path_source("path" => "/path/to/gem") - @new_source = source_list.add_path_source("path" => "/path/to/gem") - end - - it "returns the new path source" do - expect(@new_source).to be_instance_of(Bundler::Source::Path) - end - - it "passes the provided options to the new source" do - expect(@new_source.options).to eq("path" => "/path/to/gem") - end - - it "adds the source to the beginning of path_sources" do - expect(source_list.path_sources.first).to equal(@new_source) - end - - it "removes existing duplicates" do - expect(source_list.path_sources).not_to include equal(@duplicate) - end - end - - describe "#add_git_source" do - before do - @duplicate = source_list.add_git_source("uri" => "git://host/path.git") - @new_source = source_list.add_git_source("uri" => "git://host/path.git") - end - - it "returns the new git source" do - expect(@new_source).to be_instance_of(Bundler::Source::Git) - end - - it "passes the provided options to the new source" do - @new_source = source_list.add_git_source("uri" => "git://host/path.git") - expect(@new_source.options).to eq("uri" => "git://host/path.git") - end - - it "adds the source to the beginning of git_sources" do - @new_source = source_list.add_git_source("uri" => "git://host/path.git") - expect(source_list.git_sources.first).to equal(@new_source) - end - - it "removes existing duplicates" do - @duplicate = source_list.add_git_source("uri" => "git://host/path.git") - @new_source = source_list.add_git_source("uri" => "git://host/path.git") - expect(source_list.git_sources).not_to include equal(@duplicate) - end - - context "with the git: protocol" do - let(:msg) do - "The git source `git://existing-git.org/path.git` " \ - "uses the `git` protocol, which transmits data without encryption. " \ - "Disable this warning with `bundle config git.allow_insecure true`, " \ - "or switch to the `https` protocol to keep your data secure." - end - - it "warns about git protocols" do - expect(Bundler.ui).to receive(:warn).with(msg) - source_list.add_git_source("uri" => "git://existing-git.org/path.git") - end - - it "ignores git protocols on request" do - Bundler.settings.temporary(:"git.allow_insecure" => true) - expect(Bundler.ui).to_not receive(:warn).with(msg) - source_list.add_git_source("uri" => "git://existing-git.org/path.git") - end - end - end - - describe "#add_rubygems_source" do - before do - @duplicate = source_list.add_rubygems_source("remotes" => ["https://rubygems.org/"]) - @new_source = source_list.add_rubygems_source("remotes" => ["https://rubygems.org/"]) - end - - it "returns the new rubygems source" do - expect(@new_source).to be_instance_of(Bundler::Source::Rubygems) - end - - it "passes the provided options to the new source" do - expect(@new_source.options).to eq("remotes" => ["https://rubygems.org/"]) - end - - it "adds the source to the beginning of rubygems_sources" do - expect(source_list.rubygems_sources.first).to equal(@new_source) - end - - it "removes duplicates" do - expect(source_list.rubygems_sources).not_to include equal(@duplicate) - end - end - - describe "#add_rubygems_remote", :bundler => "< 2" do - let!(:returned_source) { source_list.add_rubygems_remote("https://rubygems.org/") } - - it "returns the aggregate rubygems source" do - expect(returned_source).to be_instance_of(Bundler::Source::Rubygems) - end - - it "adds the provided remote to the beginning of the aggregate source" do - source_list.add_rubygems_remote("https://othersource.org") - expect(returned_source.remotes).to eq [ - URI("https://othersource.org/"), - URI("https://rubygems.org/"), - ] - end - end - - describe "#add_plugin_source" do - before do - @duplicate = source_list.add_plugin_source("new_source", "uri" => "http://host/path.") - @new_source = source_list.add_plugin_source("new_source", "uri" => "http://host/path.") - end - - it "returns the new plugin source" do - expect(@new_source).to be_a(Bundler::Plugin::API::Source) - end - - it "passes the provided options to the new source" do - expect(@new_source.options).to eq("uri" => "http://host/path.") - end - - it "adds the source to the beginning of git_sources" do - expect(source_list.plugin_sources.first).to equal(@new_source) - end - - it "removes existing duplicates" do - expect(source_list.plugin_sources).not_to include equal(@duplicate) - end - end - end - - describe "#all_sources" do - it "includes the aggregate rubygems source when rubygems sources have been added" do - source_list.add_git_source("uri" => "git://host/path.git") - source_list.add_rubygems_source("remotes" => ["https://rubygems.org"]) - source_list.add_path_source("path" => "/path/to/gem") - source_list.add_plugin_source("new_source", "uri" => "https://some.url/a") - - expect(source_list.all_sources).to include rubygems_aggregate - end - - it "includes the aggregate rubygems source when no rubygems sources have been added" do - source_list.add_git_source("uri" => "git://host/path.git") - source_list.add_path_source("path" => "/path/to/gem") - source_list.add_plugin_source("new_source", "uri" => "https://some.url/a") - - expect(source_list.all_sources).to include rubygems_aggregate - end - - it "returns sources of the same type in the reverse order that they were added" do - source_list.add_git_source("uri" => "git://third-git.org/path.git") - source_list.add_rubygems_source("remotes" => ["https://fifth-rubygems.org"]) - source_list.add_path_source("path" => "/third/path/to/gem") - source_list.add_plugin_source("new_source", "uri" => "https://some.url/b") - source_list.add_rubygems_source("remotes" => ["https://fourth-rubygems.org"]) - source_list.add_path_source("path" => "/second/path/to/gem") - source_list.add_rubygems_source("remotes" => ["https://third-rubygems.org"]) - source_list.add_plugin_source("new_source", "uri" => "https://some.o.url/") - source_list.add_git_source("uri" => "git://second-git.org/path.git") - source_list.add_rubygems_source("remotes" => ["https://second-rubygems.org"]) - source_list.add_path_source("path" => "/first/path/to/gem") - source_list.add_plugin_source("new_source", "uri" => "https://some.url/c") - source_list.add_rubygems_source("remotes" => ["https://first-rubygems.org"]) - source_list.add_git_source("uri" => "git://first-git.org/path.git") - - expect(source_list.all_sources).to eq [ - Bundler::Source::Path.new("path" => "/first/path/to/gem"), - Bundler::Source::Path.new("path" => "/second/path/to/gem"), - Bundler::Source::Path.new("path" => "/third/path/to/gem"), - Bundler::Source::Git.new("uri" => "git://first-git.org/path.git"), - Bundler::Source::Git.new("uri" => "git://second-git.org/path.git"), - Bundler::Source::Git.new("uri" => "git://third-git.org/path.git"), - ASourcePlugin.new("uri" => "https://some.url/c"), - ASourcePlugin.new("uri" => "https://some.o.url/"), - ASourcePlugin.new("uri" => "https://some.url/b"), - Bundler::Source::Rubygems.new("remotes" => ["https://first-rubygems.org"]), - Bundler::Source::Rubygems.new("remotes" => ["https://second-rubygems.org"]), - Bundler::Source::Rubygems.new("remotes" => ["https://third-rubygems.org"]), - Bundler::Source::Rubygems.new("remotes" => ["https://fourth-rubygems.org"]), - Bundler::Source::Rubygems.new("remotes" => ["https://fifth-rubygems.org"]), - rubygems_aggregate, - metadata_source, - ] - end - end - - describe "#path_sources" do - it "returns an empty array when no path sources have been added" do - source_list.add_rubygems_remote("https://rubygems.org") - source_list.add_git_source("uri" => "git://host/path.git") - expect(source_list.path_sources).to be_empty - end - - it "returns path sources in the reverse order that they were added" do - source_list.add_git_source("uri" => "git://third-git.org/path.git") - source_list.add_rubygems_remote("https://fifth-rubygems.org") - source_list.add_path_source("path" => "/third/path/to/gem") - source_list.add_rubygems_remote("https://fourth-rubygems.org") - source_list.add_path_source("path" => "/second/path/to/gem") - source_list.add_rubygems_remote("https://third-rubygems.org") - source_list.add_git_source("uri" => "git://second-git.org/path.git") - source_list.add_rubygems_remote("https://second-rubygems.org") - source_list.add_path_source("path" => "/first/path/to/gem") - source_list.add_rubygems_remote("https://first-rubygems.org") - source_list.add_git_source("uri" => "git://first-git.org/path.git") - - expect(source_list.path_sources).to eq [ - Bundler::Source::Path.new("path" => "/first/path/to/gem"), - Bundler::Source::Path.new("path" => "/second/path/to/gem"), - Bundler::Source::Path.new("path" => "/third/path/to/gem"), - ] - end - end - - describe "#git_sources" do - it "returns an empty array when no git sources have been added" do - source_list.add_rubygems_remote("https://rubygems.org") - source_list.add_path_source("path" => "/path/to/gem") - - expect(source_list.git_sources).to be_empty - end - - it "returns git sources in the reverse order that they were added" do - source_list.add_git_source("uri" => "git://third-git.org/path.git") - source_list.add_rubygems_remote("https://fifth-rubygems.org") - source_list.add_path_source("path" => "/third/path/to/gem") - source_list.add_rubygems_remote("https://fourth-rubygems.org") - source_list.add_path_source("path" => "/second/path/to/gem") - source_list.add_rubygems_remote("https://third-rubygems.org") - source_list.add_git_source("uri" => "git://second-git.org/path.git") - source_list.add_rubygems_remote("https://second-rubygems.org") - source_list.add_path_source("path" => "/first/path/to/gem") - source_list.add_rubygems_remote("https://first-rubygems.org") - source_list.add_git_source("uri" => "git://first-git.org/path.git") - - expect(source_list.git_sources).to eq [ - Bundler::Source::Git.new("uri" => "git://first-git.org/path.git"), - Bundler::Source::Git.new("uri" => "git://second-git.org/path.git"), - Bundler::Source::Git.new("uri" => "git://third-git.org/path.git"), - ] - end - end - - describe "#plugin_sources" do - it "returns an empty array when no plugin sources have been added" do - source_list.add_rubygems_remote("https://rubygems.org") - source_list.add_path_source("path" => "/path/to/gem") - - expect(source_list.plugin_sources).to be_empty - end - - it "returns plugin sources in the reverse order that they were added" do - source_list.add_plugin_source("new_source", "uri" => "https://third-git.org/path.git") - source_list.add_git_source("https://new-git.org") - source_list.add_path_source("path" => "/third/path/to/gem") - source_list.add_rubygems_remote("https://fourth-rubygems.org") - source_list.add_path_source("path" => "/second/path/to/gem") - source_list.add_rubygems_remote("https://third-rubygems.org") - source_list.add_plugin_source("new_source", "uri" => "git://second-git.org/path.git") - source_list.add_rubygems_remote("https://second-rubygems.org") - source_list.add_path_source("path" => "/first/path/to/gem") - source_list.add_rubygems_remote("https://first-rubygems.org") - source_list.add_plugin_source("new_source", "uri" => "git://first-git.org/path.git") - - expect(source_list.plugin_sources).to eq [ - ASourcePlugin.new("uri" => "git://first-git.org/path.git"), - ASourcePlugin.new("uri" => "git://second-git.org/path.git"), - ASourcePlugin.new("uri" => "https://third-git.org/path.git"), - ] - end - end - - describe "#rubygems_sources" do - it "includes the aggregate rubygems source when rubygems sources have been added" do - source_list.add_git_source("uri" => "git://host/path.git") - source_list.add_rubygems_source("remotes" => ["https://rubygems.org"]) - source_list.add_path_source("path" => "/path/to/gem") - - expect(source_list.rubygems_sources).to include rubygems_aggregate - end - - it "returns only the aggregate rubygems source when no rubygems sources have been added" do - source_list.add_git_source("uri" => "git://host/path.git") - source_list.add_path_source("path" => "/path/to/gem") - - expect(source_list.rubygems_sources).to eq [rubygems_aggregate] - end - - it "returns rubygems sources in the reverse order that they were added" do - source_list.add_git_source("uri" => "git://third-git.org/path.git") - source_list.add_rubygems_source("remotes" => ["https://fifth-rubygems.org"]) - source_list.add_path_source("path" => "/third/path/to/gem") - source_list.add_rubygems_source("remotes" => ["https://fourth-rubygems.org"]) - source_list.add_path_source("path" => "/second/path/to/gem") - source_list.add_rubygems_source("remotes" => ["https://third-rubygems.org"]) - source_list.add_git_source("uri" => "git://second-git.org/path.git") - source_list.add_rubygems_source("remotes" => ["https://second-rubygems.org"]) - source_list.add_path_source("path" => "/first/path/to/gem") - source_list.add_rubygems_source("remotes" => ["https://first-rubygems.org"]) - source_list.add_git_source("uri" => "git://first-git.org/path.git") - - expect(source_list.rubygems_sources).to eq [ - Bundler::Source::Rubygems.new("remotes" => ["https://first-rubygems.org"]), - Bundler::Source::Rubygems.new("remotes" => ["https://second-rubygems.org"]), - Bundler::Source::Rubygems.new("remotes" => ["https://third-rubygems.org"]), - Bundler::Source::Rubygems.new("remotes" => ["https://fourth-rubygems.org"]), - Bundler::Source::Rubygems.new("remotes" => ["https://fifth-rubygems.org"]), - rubygems_aggregate, - ] - end - end - - describe "#get" do - context "when it includes an equal source" do - let(:rubygems_source) { Bundler::Source::Rubygems.new("remotes" => ["https://rubygems.org"]) } - before { @equal_source = source_list.add_rubygems_remote("https://rubygems.org") } - - it "returns the equal source" do - expect(source_list.get(rubygems_source)).to be @equal_source - end - end - - context "when it does not include an equal source" do - let(:path_source) { Bundler::Source::Path.new("path" => "/path/to/gem") } - - it "returns nil" do - expect(source_list.get(path_source)).to be_nil - end - end - end - - describe "#lock_sources" do - before do - source_list.add_git_source("uri" => "git://third-git.org/path.git") - source_list.add_rubygems_source("remotes" => ["https://duplicate-rubygems.org"]) - source_list.add_plugin_source("new_source", "uri" => "https://third-bar.org/foo") - source_list.add_path_source("path" => "/third/path/to/gem") - source_list.add_rubygems_source("remotes" => ["https://third-rubygems.org"]) - source_list.add_path_source("path" => "/second/path/to/gem") - source_list.add_rubygems_source("remotes" => ["https://second-rubygems.org"]) - source_list.add_git_source("uri" => "git://second-git.org/path.git") - source_list.add_rubygems_source("remotes" => ["https://first-rubygems.org"]) - source_list.add_plugin_source("new_source", "uri" => "https://second-plugin.org/random") - source_list.add_path_source("path" => "/first/path/to/gem") - source_list.add_rubygems_source("remotes" => ["https://duplicate-rubygems.org"]) - source_list.add_git_source("uri" => "git://first-git.org/path.git") - end - - it "combines the rubygems sources into a single instance, removing duplicate remotes from the end", :bundler => "< 2" do - expect(source_list.lock_sources).to eq [ - Bundler::Source::Git.new("uri" => "git://first-git.org/path.git"), - Bundler::Source::Git.new("uri" => "git://second-git.org/path.git"), - Bundler::Source::Git.new("uri" => "git://third-git.org/path.git"), - ASourcePlugin.new("uri" => "https://second-plugin.org/random"), - ASourcePlugin.new("uri" => "https://third-bar.org/foo"), - Bundler::Source::Path.new("path" => "/first/path/to/gem"), - Bundler::Source::Path.new("path" => "/second/path/to/gem"), - Bundler::Source::Path.new("path" => "/third/path/to/gem"), - Bundler::Source::Rubygems.new("remotes" => [ - "https://duplicate-rubygems.org", - "https://first-rubygems.org", - "https://second-rubygems.org", - "https://third-rubygems.org", - ]), - ] - end - - it "returns all sources, without combining rubygems sources", :bundler => "2" do - expect(source_list.lock_sources).to eq [ - Bundler::Source::Rubygems.new, - Bundler::Source::Rubygems.new("remotes" => ["https://duplicate-rubygems.org"]), - Bundler::Source::Rubygems.new("remotes" => ["https://first-rubygems.org"]), - Bundler::Source::Rubygems.new("remotes" => ["https://second-rubygems.org"]), - Bundler::Source::Rubygems.new("remotes" => ["https://third-rubygems.org"]), - Bundler::Source::Git.new("uri" => "git://first-git.org/path.git"), - Bundler::Source::Git.new("uri" => "git://second-git.org/path.git"), - Bundler::Source::Git.new("uri" => "git://third-git.org/path.git"), - Bundler::Source::Path.new("path" => "/first/path/to/gem"), - Bundler::Source::Path.new("path" => "/second/path/to/gem"), - Bundler::Source::Path.new("path" => "/third/path/to/gem"), - ASourcePlugin.new("uri" => "https://second-plugin.org/random"), - ASourcePlugin.new("uri" => "https://third-bar.org/foo"), - ] - end - end - - describe "replace_sources!" do - let(:existing_locked_source) { Bundler::Source::Path.new("path" => "/existing/path") } - let(:removed_locked_source) { Bundler::Source::Path.new("path" => "/removed/path") } - - let(:locked_sources) { [existing_locked_source, removed_locked_source] } - - before do - @existing_source = source_list.add_path_source("path" => "/existing/path") - @new_source = source_list.add_path_source("path" => "/new/path") - source_list.replace_sources!(locked_sources) - end - - it "maintains the order and number of sources" do - expect(source_list.path_sources).to eq [@new_source, @existing_source] - end - - it "retains the same instance of the new source" do - expect(source_list.path_sources[0]).to be @new_source - end - - it "replaces the instance of the existing source" do - expect(source_list.path_sources[1]).to be existing_locked_source - end - end - - describe "#cached!" do - let(:rubygems_source) { source_list.add_rubygems_source("remotes" => ["https://rubygems.org"]) } - let(:git_source) { source_list.add_git_source("uri" => "git://host/path.git") } - let(:path_source) { source_list.add_path_source("path" => "/path/to/gem") } - - it "calls #cached! on all the sources" do - expect(rubygems_source).to receive(:cached!) - expect(git_source).to receive(:cached!) - expect(path_source).to receive(:cached!) - source_list.cached! - end - end - - describe "#remote!" do - let(:rubygems_source) { source_list.add_rubygems_source("remotes" => ["https://rubygems.org"]) } - let(:git_source) { source_list.add_git_source("uri" => "git://host/path.git") } - let(:path_source) { source_list.add_path_source("path" => "/path/to/gem") } - - it "calls #remote! on all the sources" do - expect(rubygems_source).to receive(:remote!) - expect(git_source).to receive(:remote!) - expect(path_source).to receive(:remote!) - source_list.remote! - end - end -end diff --git a/spec/bundler/bundler/source_spec.rb b/spec/bundler/bundler/source_spec.rb deleted file mode 100644 index 9ef8e7e50f..0000000000 --- a/spec/bundler/bundler/source_spec.rb +++ /dev/null @@ -1,154 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe Bundler::Source do - class ExampleSource < Bundler::Source - end - - subject { ExampleSource.new } - - describe "#unmet_deps" do - let(:specs) { double(:specs) } - let(:unmet_dependency_names) { double(:unmet_dependency_names) } - - before do - allow(subject).to receive(:specs).and_return(specs) - allow(specs).to receive(:unmet_dependency_names).and_return(unmet_dependency_names) - end - - it "should return the names of unmet dependencies" do - expect(subject.unmet_deps).to eq(unmet_dependency_names) - end - end - - describe "#version_message" do - let(:spec) { double(:spec, :name => "nokogiri", :version => ">= 1.6", :platform => rb) } - - shared_examples_for "the lockfile specs are not relevant" do - it "should return a string with the spec name and version" do - expect(subject.version_message(spec)).to eq("nokogiri >= 1.6") - end - end - - context "when there are locked gems" do - let(:locked_gems) { double(:locked_gems) } - - before { allow(Bundler).to receive(:locked_gems).and_return(locked_gems) } - - context "that contain the relevant gem spec" do - before do - specs = double(:specs) - allow(locked_gems).to receive(:specs).and_return(specs) - allow(specs).to receive(:find).and_return(locked_gem) - end - - context "without a version" do - let(:locked_gem) { double(:locked_gem, :name => "nokogiri", :version => nil) } - - it_behaves_like "the lockfile specs are not relevant" - end - - context "with the same version" do - let(:locked_gem) { double(:locked_gem, :name => "nokogiri", :version => ">= 1.6") } - - it_behaves_like "the lockfile specs are not relevant" - end - - context "with a different version" do - let(:locked_gem) { double(:locked_gem, :name => "nokogiri", :version => "< 1.5") } - - context "with color" do - before { Bundler.ui = Bundler::UI::Shell.new } - - it "should return a string with the spec name and version and locked spec version" do - expect(subject.version_message(spec)).to eq("nokogiri >= 1.6\e[32m (was < 1.5)\e[0m") - end - end - - context "without color" do - it "should return a string with the spec name and version and locked spec version" do - expect(subject.version_message(spec)).to eq("nokogiri >= 1.6 (was < 1.5)") - end - end - end - - context "with a more recent version" do - let(:spec) { double(:spec, :name => "nokogiri", :version => "1.6.1", :platform => rb) } - let(:locked_gem) { double(:locked_gem, :name => "nokogiri", :version => "1.7.0") } - - context "with color" do - before { Bundler.ui = Bundler::UI::Shell.new } - - it "should return a string with the locked spec version in yellow" do - expect(subject.version_message(spec)).to eq("nokogiri 1.6.1\e[33m (was 1.7.0)\e[0m") - end - end - end - - context "with an older version" do - let(:spec) { double(:spec, :name => "nokogiri", :version => "1.7.1", :platform => rb) } - let(:locked_gem) { double(:locked_gem, :name => "nokogiri", :version => "1.7.0") } - - context "with color" do - before { Bundler.ui = Bundler::UI::Shell.new } - - it "should return a string with the locked spec version in green" do - expect(subject.version_message(spec)).to eq("nokogiri 1.7.1\e[32m (was 1.7.0)\e[0m") - end - end - end - end - - context "that do not contain the relevant gem spec" do - before do - specs = double(:specs) - allow(locked_gems).to receive(:specs).and_return(specs) - allow(specs).to receive(:find).and_return(nil) - end - - it_behaves_like "the lockfile specs are not relevant" - end - end - - context "when there are no locked gems" do - before { allow(Bundler).to receive(:locked_gems).and_return(nil) } - - it_behaves_like "the lockfile specs are not relevant" - end - end - - describe "#can_lock?" do - context "when the passed spec's source is equivalent" do - let(:spec) { double(:spec, :source => subject) } - - it "should return true" do - expect(subject.can_lock?(spec)).to be_truthy - end - end - - context "when the passed spec's source is not equivalent" do - let(:spec) { double(:spec, :source => double(:other_source)) } - - it "should return false" do - expect(subject.can_lock?(spec)).to be_falsey - end - end - end - - describe "#include?" do - context "when the passed source is equivalent" do - let(:source) { subject } - - it "should return true" do - expect(subject).to include(source) - end - end - - context "when the passed source is not equivalent" do - let(:source) { double(:source) } - - it "should return false" do - expect(subject).to_not include(source) - end - end - end -end diff --git a/spec/bundler/bundler/spec_set_spec.rb b/spec/bundler/bundler/spec_set_spec.rb deleted file mode 100644 index 6fedd38b50..0000000000 --- a/spec/bundler/bundler/spec_set_spec.rb +++ /dev/null @@ -1,77 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe Bundler::SpecSet do - let(:specs) do - [ - build_spec("a", "1.0"), - build_spec("b", "1.0"), - build_spec("c", "1.1") do |s| - s.dep "a", "< 2.0" - s.dep "e", "> 0" - end, - build_spec("d", "2.0") do |s| - s.dep "a", "1.0" - s.dep "c", "~> 1.0" - end, - build_spec("e", "1.0.0.pre.1"), - ].flatten - end - - subject { described_class.new(specs) } - - context "enumerable methods" do - it "has a length" do - expect(subject.length).to eq(5) - end - - it "has a size" do - expect(subject.size).to eq(5) - end - end - - describe "#find_by_name_and_platform" do - let(:platform) { Gem::Platform.new("universal-darwin-64") } - let(:platform_spec) { build_spec("b", "2.0", platform).first } - let(:specs) do - [ - build_spec("a", "1.0"), - platform_spec, - ].flatten - end - - it "finds spec with given name and platform" do - spec = described_class.new(specs).find_by_name_and_platform("b", platform) - expect(spec).to eq platform_spec - end - end - - describe "#merge" do - let(:other_specs) do - [ - build_spec("f", "1.0"), - build_spec("g", "2.0"), - ].flatten - end - - let(:other_spec_set) { described_class.new(other_specs) } - - it "merges the items in each gemspec" do - new_spec_set = subject.merge(other_spec_set) - specs = new_spec_set.to_a.map(&:full_name) - expect(specs).to include("a-1.0") - expect(specs).to include("f-1.0") - end - end - - describe "#to_a" do - it "returns the specs in order" do - expect(subject.to_a.map(&:full_name)).to eq %w[ - a-1.0 - b-1.0 - e-1.0.0.pre.1 - c-1.1 - d-2.0 - ] - end - end -end diff --git a/spec/bundler/bundler/ssl_certs/certificate_manager_spec.rb b/spec/bundler/bundler/ssl_certs/certificate_manager_spec.rb deleted file mode 100644 index d1ec08bdc4..0000000000 --- a/spec/bundler/bundler/ssl_certs/certificate_manager_spec.rb +++ /dev/null @@ -1,141 +0,0 @@ -# frozen_string_literal: true - -require "bundler/ssl_certs/certificate_manager" - -RSpec.describe Bundler::SSLCerts::CertificateManager do - let(:rubygems_path) { root } - let(:stub_cert) { File.join(root.to_s, "lib", "rubygems", "ssl_certs", "rubygems.org", "ssl-cert.pem") } - let(:rubygems_certs_dir) { File.join(root.to_s, "lib", "rubygems", "ssl_certs", "rubygems.org") } - - subject { described_class.new(rubygems_path) } - - # Pretend bundler root is rubygems root - before do - # Backing up rubygems ceriticates - FileUtils.mv(rubygems_certs_dir, rubygems_certs_dir + ".back") if !!(ENV["BUNDLE_RUBY"] && ENV["BUNDLE_GEM"]) - - FileUtils.mkdir_p(rubygems_certs_dir) - FileUtils.touch(stub_cert) - end - - after do - rubygems_dir = File.join(root.to_s, "lib", "rubygems") - FileUtils.rm_rf(rubygems_certs_dir) - - # Restore rubygems certificates - FileUtils.mv(rubygems_certs_dir + ".back", rubygems_certs_dir) if !!(ENV["BUNDLE_RUBY"] && ENV["BUNDLE_GEM"]) - end - - describe "#update_from" do - let(:cert_manager) { double(:cert_manager) } - - before { allow(described_class).to receive(:new).with(rubygems_path).and_return(cert_manager) } - - it "should update the certs through a new certificate manager" do - allow(cert_manager).to receive(:update!) - expect(described_class.update_from!(rubygems_path)).to be_nil - end - end - - describe "#initialize" do - it "should set bundler_cert_path as path of the subdir with bundler ssl certs" do - expect(subject.bundler_cert_path).to eq(File.join(root, "lib/bundler/ssl_certs")) - end - - it "should set bundler_certs as the paths of the bundler ssl certs" do - expect(subject.bundler_certs).to include(File.join(root, "lib/bundler/ssl_certs/rubygems.global.ssl.fastly.net/DigiCertHighAssuranceEVRootCA.pem")) - expect(subject.bundler_certs).to include(File.join(root, "lib/bundler/ssl_certs/index.rubygems.org/GlobalSignRootCA.pem")) - end - - context "when rubygems_path is not nil" do - it "should set rubygems_certs" do - expect(subject.rubygems_certs).to include(File.join(root, "lib", "rubygems", "ssl_certs", "rubygems.org", "ssl-cert.pem")) - end - end - end - - describe "#up_to_date?" do - context "when bundler certs and rubygems certs are the same" do - before do - bundler_certs = Dir[File.join(root.to_s, "lib", "bundler", "ssl_certs", "**", "*.pem")] - FileUtils.rm(stub_cert) - FileUtils.cp(bundler_certs, rubygems_certs_dir) - end - - it "should return true" do - expect(subject).to be_up_to_date - end - end - - context "when bundler certs and rubygems certs are not the same" do - it "should return false" do - expect(subject).to_not be_up_to_date - end - end - end - - describe "#update!" do - context "when certificate manager is not up to date" do - before do - allow(subject).to receive(:up_to_date?).and_return(false) - allow(bundler_fileutils).to receive(:rm) - allow(bundler_fileutils).to receive(:cp) - end - - it "should remove the current bundler certs" do - expect(bundler_fileutils).to receive(:rm).with(subject.bundler_certs) - subject.update! - end - - it "should copy the rubygems certs into bundler certs" do - expect(bundler_fileutils).to receive(:cp).with(subject.rubygems_certs, subject.bundler_cert_path) - subject.update! - end - - it "should return nil" do - expect(subject.update!).to be_nil - end - end - - context "when certificate manager is up to date" do - before { allow(subject).to receive(:up_to_date?).and_return(true) } - - it "should return nil" do - expect(subject.update!).to be_nil - end - end - end - - describe "#connect_to" do - let(:host) { "http://www.host.com" } - let(:http) { Net::HTTP.new(host, 443) } - let(:cert_store) { OpenSSL::X509::Store.new } - let(:http_header_response) { double(:http_header_response) } - - before do - allow(Net::HTTP).to receive(:new).with(host, 443).and_return(http) - allow(OpenSSL::X509::Store).to receive(:new).and_return(cert_store) - allow(http).to receive(:head).with("/").and_return(http_header_response) - end - - it "should use ssl for the http request" do - expect(http).to receive(:use_ssl=).with(true) - subject.connect_to(host) - end - - it "use verify peer mode" do - expect(http).to receive(:verify_mode=).with(OpenSSL::SSL::VERIFY_PEER) - subject.connect_to(host) - end - - it "set its cert store as a OpenSSL::X509::Store populated with bundler certs" do - expect(cert_store).to receive(:add_file).at_least(:once) - expect(http).to receive(:cert_store=).with(cert_store) - subject.connect_to(host) - end - - it "return the headers of the request response" do - expect(subject.connect_to(host)).to eq(http_header_response) - end - end -end diff --git a/spec/bundler/bundler/stub_specification_spec.rb b/spec/bundler/bundler/stub_specification_spec.rb deleted file mode 100644 index 5521d83769..0000000000 --- a/spec/bundler/bundler/stub_specification_spec.rb +++ /dev/null @@ -1,24 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe Bundler::StubSpecification do - let(:gemspec) do - Gem::Specification.new do |s| - s.name = "gemname" - s.version = "1.0.0" - s.loaded_from = __FILE__ - end - end - - let(:with_bundler_stub_spec) do - described_class.from_stub(gemspec) - end - - if Bundler.rubygems.provides?(">= 2.1") - describe "#from_stub" do - it "returns the same stub if already a Bundler::StubSpecification" do - stub = described_class.from_stub(with_bundler_stub_spec) - expect(stub).to be(with_bundler_stub_spec) - end - end - end -end diff --git a/spec/bundler/bundler/ui/shell_spec.rb b/spec/bundler/bundler/ui/shell_spec.rb deleted file mode 100644 index 9a47a3572f..0000000000 --- a/spec/bundler/bundler/ui/shell_spec.rb +++ /dev/null @@ -1,64 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe Bundler::UI::Shell do - subject { described_class.new } - - before { subject.level = "debug" } - - describe "#info" do - before { subject.level = "info" } - it "prints to stdout" do - expect { subject.info("info") }.to output("info\n").to_stdout - end - end - - describe "#confirm" do - before { subject.level = "confirm" } - it "prints to stdout" do - expect { subject.confirm("confirm") }.to output("confirm\n").to_stdout - end - end - - describe "#warn" do - before { subject.level = "warn" } - it "prints to stdout", :bundler => "< 2" do - expect { subject.warn("warning") }.to output("warning\n").to_stdout - end - - it "prints to stderr", :bundler => "2" do - expect { subject.warn("warning") }.to output("warning\n").to_stderr - end - - context "when stderr flag is enabled" do - before { Bundler.settings.temporary(:error_on_stderr => true) } - it "prints to stderr" do - expect { subject.warn("warning!") }.to output("warning!\n").to_stderr - end - end - end - - describe "#debug" do - it "prints to stdout" do - expect { subject.debug("debug") }.to output("debug\n").to_stdout - end - end - - describe "#error" do - before { subject.level = "error" } - - it "prints to stdout", :bundler => "< 2" do - expect { subject.error("error!!!") }.to output("error!!!\n").to_stdout - end - - it "prints to stderr", :bundler => "2" do - expect { subject.error("error!!!") }.to output("error!!!\n").to_stderr - end - - context "when stderr flag is enabled" do - before { Bundler.settings.temporary(:error_on_stderr => true) } - it "prints to stderr" do - expect { subject.error("error!!!") }.to output("error!!!\n").to_stderr - end - end - end -end diff --git a/spec/bundler/bundler/ui_spec.rb b/spec/bundler/bundler/ui_spec.rb deleted file mode 100644 index 6ef8729277..0000000000 --- a/spec/bundler/bundler/ui_spec.rb +++ /dev/null @@ -1,41 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe Bundler::UI do - describe Bundler::UI::Silent do - it "has the same instance methods as Shell", :ruby => ">= 1.9" do - shell = Bundler::UI::Shell - methods = proc do |cls| - cls.instance_methods.map do |i| - m = shell.instance_method(i) - [i, m.parameters] - end.sort_by(&:first) - end - expect(methods.call(described_class)).to eq(methods.call(shell)) - end - - it "has the same instance class as Shell", :ruby => ">= 1.9" do - shell = Bundler::UI::Shell - methods = proc do |cls| - cls.methods.map do |i| - m = shell.method(i) - [i, m.parameters] - end.sort_by(&:first) - end - expect(methods.call(described_class)).to eq(methods.call(shell)) - end - end - - describe Bundler::UI::Shell do - let(:options) { {} } - subject { described_class.new(options) } - describe "debug?" do - it "returns a boolean" do - subject.level = :debug - expect(subject.debug?).to eq(true) - - subject.level = :error - expect(subject.debug?).to eq(false) - end - end - end -end diff --git a/spec/bundler/bundler/uri_credentials_filter_spec.rb b/spec/bundler/bundler/uri_credentials_filter_spec.rb deleted file mode 100644 index fe52d16306..0000000000 --- a/spec/bundler/bundler/uri_credentials_filter_spec.rb +++ /dev/null @@ -1,127 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe Bundler::URICredentialsFilter do - subject { described_class } - - describe "#credential_filtered_uri" do - shared_examples_for "original type of uri is maintained" do - it "maintains same type for return value as uri input type" do - expect(subject.credential_filtered_uri(uri)).to be_kind_of(uri.class) - end - end - - shared_examples_for "sensitive credentials in uri are filtered out" do - context "authentication using oauth credentials" do - context "specified via 'x-oauth-basic'" do - let(:credentials) { "oauth_token:x-oauth-basic@" } - - it "returns the uri without the oauth token" do - expect(subject.credential_filtered_uri(uri).to_s).to eq(URI("https://x-oauth-basic@github.com/company/private-repo").to_s) - end - - it_behaves_like "original type of uri is maintained" - end - - context "specified via 'x'" do - let(:credentials) { "oauth_token:x@" } - - it "returns the uri without the oauth token" do - expect(subject.credential_filtered_uri(uri).to_s).to eq(URI("https://x@github.com/company/private-repo").to_s) - end - - it_behaves_like "original type of uri is maintained" - end - end - - context "authentication using login credentials" do - let(:credentials) { "username1:hunter3@" } - - it "returns the uri without the password" do - expect(subject.credential_filtered_uri(uri).to_s).to eq(URI("https://username1@github.com/company/private-repo").to_s) - end - - it_behaves_like "original type of uri is maintained" - end - - context "authentication without credentials" do - let(:credentials) { "" } - - it "returns the same uri" do - expect(subject.credential_filtered_uri(uri).to_s).to eq(uri.to_s) - end - - it_behaves_like "original type of uri is maintained" - end - end - - context "uri is a uri object" do - let(:uri) { URI("https://#{credentials}github.com/company/private-repo") } - - it_behaves_like "sensitive credentials in uri are filtered out" - end - - context "uri is a uri string" do - let(:uri) { "https://#{credentials}github.com/company/private-repo" } - - it_behaves_like "sensitive credentials in uri are filtered out" - end - - context "uri is a non-uri format string (ex. path)" do - let(:uri) { "/path/to/repo" } - - it "returns the same uri" do - expect(subject.credential_filtered_uri(uri).to_s).to eq(uri.to_s) - end - - it_behaves_like "original type of uri is maintained" - end - - context "uri is nil" do - let(:uri) { nil } - - it "returns nil" do - expect(subject.credential_filtered_uri(uri)).to be_nil - end - - it_behaves_like "original type of uri is maintained" - end - end - - describe "#credential_filtered_string" do - let(:str_to_filter) { "This is a git message containing a uri #{uri}!" } - let(:credentials) { "" } - let(:uri) { URI("https://#{credentials}github.com/company/private-repo") } - - context "with a uri that contains credentials" do - let(:credentials) { "oauth_token:x-oauth-basic@" } - - it "returns the string without the sensitive credentials" do - expect(subject.credential_filtered_string(str_to_filter, uri)).to eq( - "This is a git message containing a uri https://x-oauth-basic@github.com/company/private-repo!" - ) - end - end - - context "that does not contains credentials" do - it "returns the same string" do - expect(subject.credential_filtered_string(str_to_filter, uri)).to eq(str_to_filter) - end - end - - context "string to filter is nil" do - let(:str_to_filter) { nil } - - it "returns nil" do - expect(subject.credential_filtered_string(str_to_filter, uri)).to be_nil - end - end - - context "uri to filter out is nil" do - let(:uri) { nil } - - it "returns the same string" do - expect(subject.credential_filtered_string(str_to_filter, uri)).to eq(str_to_filter) - end - end - end -end diff --git a/spec/bundler/bundler/vendored_persistent_spec.rb b/spec/bundler/bundler/vendored_persistent_spec.rb deleted file mode 100644 index 338431c4a6..0000000000 --- a/spec/bundler/bundler/vendored_persistent_spec.rb +++ /dev/null @@ -1,78 +0,0 @@ -# frozen_string_literal: true - -require "spec_helper" -require "bundler/vendored_persistent" - -RSpec.describe Bundler::PersistentHTTP do - describe "#warn_old_tls_version_rubygems_connection" do - let(:uri) { "https://index.rubygems.org" } - let(:connection) { instance_double(subject.http_class) } - let(:tls_version) { "TLSv1.2" } - let(:socket) { double("Socket") } - let(:socket_io) { double("SocketIO") } - - before do - allow(connection).to receive(:use_ssl?).and_return(!tls_version.nil?) - allow(socket).to receive(:io).and_return(socket_io) - connection.instance_variable_set(:@socket, socket) - - if tls_version - allow(socket_io).to receive(:ssl_version).and_return(tls_version) - end - end - - shared_examples_for "does not warn" do - it "does not warn" do - allow(Bundler.ui).to receive(:warn).never - subject.warn_old_tls_version_rubygems_connection(URI(uri), connection) - end - end - - shared_examples_for "does warn" do |*expected| - it "warns" do - expect(Bundler.ui).to receive(:warn).with(*expected) - subject.warn_old_tls_version_rubygems_connection(URI(uri), connection) - end - end - - context "an HTTPS uri with TLSv1.2" do - include_examples "does not warn" - end - - context "without SSL" do - let(:tls_version) { nil } - - include_examples "does not warn" - end - - context "without a socket" do - let(:socket) { nil } - - include_examples "does not warn" - end - - context "with a different TLD" do - let(:uri) { "https://foo.bar" } - include_examples "does not warn" - - context "and an outdated TLS version" do - let(:tls_version) { "TLSv1" } - include_examples "does not warn" - end - end - - context "with a nonsense TLS version" do - let(:tls_version) { "BlahBlah2.0Blah" } - include_examples "does not warn" - end - - context "with an outdated TLS version" do - let(:tls_version) { "TLSv1" } - include_examples "does warn", - "Warning: Your Ruby version is compiled against a copy of OpenSSL that is very old. " \ - "Starting in January 2018, RubyGems.org will refuse connection requests from these very old versions of OpenSSL. " \ - "If you will need to continue installing gems after January 2018, please follow this guide to upgrade: http://ruby.to/tls-outdated.", - :wrap => true - end - end -end diff --git a/spec/bundler/bundler/version_ranges_spec.rb b/spec/bundler/bundler/version_ranges_spec.rb deleted file mode 100644 index ccbb9285d5..0000000000 --- a/spec/bundler/bundler/version_ranges_spec.rb +++ /dev/null @@ -1,37 +0,0 @@ -# frozen_string_literal: true - -require "bundler/version_ranges" - -RSpec.describe Bundler::VersionRanges do - describe ".empty?" do - shared_examples_for "empty?" do |exp, *req| - it "returns #{exp} for #{req}" do - r = Gem::Requirement.new(*req) - ranges = described_class.for(r) - expect(described_class.empty?(*ranges)).to eq(exp), "expected `#{r}` #{exp ? "" : "not "}to be empty" - end - end - - include_examples "empty?", false - include_examples "empty?", false, "!= 1" - include_examples "empty?", false, "!= 1", "= 2" - include_examples "empty?", false, "!= 1", "> 1" - include_examples "empty?", false, "!= 1", ">= 1" - include_examples "empty?", false, "= 1", ">= 0.1", "<= 1.1" - include_examples "empty?", false, "= 1", ">= 1", "<= 1" - include_examples "empty?", false, "= 1", "~> 1" - include_examples "empty?", false, ">= 0.z", "= 0" - include_examples "empty?", false, ">= 0" - include_examples "empty?", false, ">= 1.0.0", "< 2.0.0" - include_examples "empty?", false, "~> 1" - include_examples "empty?", false, "~> 2.0", "~> 2.1" - include_examples "empty?", true, "!= 1", "< 2", "> 2" - include_examples "empty?", true, "!= 1", "<= 1", ">= 1" - include_examples "empty?", true, "< 2", "> 2" - include_examples "empty?", true, "= 1", "!= 1" - include_examples "empty?", true, "= 1", "= 2" - include_examples "empty?", true, "= 1", "~> 2" - include_examples "empty?", true, ">= 0", "<= 0.a" - include_examples "empty?", true, "~> 2.0", "~> 3" - end -end diff --git a/spec/bundler/bundler/worker_spec.rb b/spec/bundler/bundler/worker_spec.rb deleted file mode 100644 index 2e5642709d..0000000000 --- a/spec/bundler/bundler/worker_spec.rb +++ /dev/null @@ -1,22 +0,0 @@ -# frozen_string_literal: true - -require "bundler/worker" - -RSpec.describe Bundler::Worker do - let(:size) { 5 } - let(:name) { "Spec Worker" } - let(:function) { proc {|object, worker_number| [object, worker_number] } } - subject { described_class.new(size, name, function) } - - after { subject.stop } - - describe "#initialize" do - context "when Thread.start raises ThreadError" do - it "raises when no threads can be created" do - allow(Thread).to receive(:start).and_raise(ThreadError, "error creating thread") - - expect { subject.enq "a" }.to raise_error(Bundler::ThreadCreationError, "Failed to create threads for the Spec Worker worker: error creating thread") - end - end - end -end diff --git a/spec/bundler/bundler/yaml_serializer_spec.rb b/spec/bundler/bundler/yaml_serializer_spec.rb deleted file mode 100644 index 1241c74bbf..0000000000 --- a/spec/bundler/bundler/yaml_serializer_spec.rb +++ /dev/null @@ -1,194 +0,0 @@ -# frozen_string_literal: true - -require "bundler/yaml_serializer" - -RSpec.describe Bundler::YAMLSerializer do - subject(:serializer) { Bundler::YAMLSerializer } - - describe "#dump" do - it "works for simple hash" do - hash = { "Q" => "Where does Thursday come before Wednesday? In the dictionary. :P" } - - expected = strip_whitespace <<-YAML - --- - Q: "Where does Thursday come before Wednesday? In the dictionary. :P" - YAML - - expect(serializer.dump(hash)).to eq(expected) - end - - it "handles nested hash" do - hash = { - "nice-one" => { - "read_ahead" => "All generalizations are false, including this one", - }, - } - - expected = strip_whitespace <<-YAML - --- - nice-one: - read_ahead: "All generalizations are false, including this one" - YAML - - expect(serializer.dump(hash)).to eq(expected) - end - - it "array inside an hash" do - hash = { - "nested_hash" => { - "contains_array" => [ - "Jack and Jill went up the hill", - "To fetch a pail of water.", - "Jack fell down and broke his crown,", - "And Jill came tumbling after.", - ], - }, - } - - expected = strip_whitespace <<-YAML - --- - nested_hash: - contains_array: - - "Jack and Jill went up the hill" - - "To fetch a pail of water." - - "Jack fell down and broke his crown," - - "And Jill came tumbling after." - YAML - - expect(serializer.dump(hash)).to eq(expected) - end - end - - describe "#load" do - it "works for simple hash" do - yaml = strip_whitespace <<-YAML - --- - Jon: "Air is free dude!" - Jack: "Yes.. until you buy a bag of chips!" - YAML - - hash = { - "Jon" => "Air is free dude!", - "Jack" => "Yes.. until you buy a bag of chips!", - } - - expect(serializer.load(yaml)).to eq(hash) - end - - it "works for nested hash" do - yaml = strip_whitespace <<-YAML - --- - baa: - baa: "black sheep" - have: "you any wool?" - yes: "merry have I" - three: "bags full" - YAML - - hash = { - "baa" => { - "baa" => "black sheep", - "have" => "you any wool?", - "yes" => "merry have I", - }, - "three" => "bags full", - } - - expect(serializer.load(yaml)).to eq(hash) - end - - it "handles colon in key/value" do - yaml = strip_whitespace <<-YAML - BUNDLE_MIRROR__HTTPS://RUBYGEMS__ORG/: http://rubygems-mirror.org - YAML - - expect(serializer.load(yaml)).to eq("BUNDLE_MIRROR__HTTPS://RUBYGEMS__ORG/" => "http://rubygems-mirror.org") - end - - it "handles arrays inside hashes" do - yaml = strip_whitespace <<-YAML - --- - nested_hash: - contains_array: - - "Why shouldn't you write with a broken pencil?" - - "Because it's pointless!" - YAML - - hash = { - "nested_hash" => { - "contains_array" => [ - "Why shouldn't you write with a broken pencil?", - "Because it's pointless!", - ], - }, - } - - expect(serializer.load(yaml)).to eq(hash) - end - - it "handles windows-style CRLF line endings" do - yaml = strip_whitespace(<<-YAML).gsub("\n", "\r\n") - --- - nested_hash: - contains_array: - - "Why shouldn't you write with a broken pencil?" - - "Because it's pointless!" - - oh so silly - YAML - - hash = { - "nested_hash" => { - "contains_array" => [ - "Why shouldn't you write with a broken pencil?", - "Because it's pointless!", - "oh so silly", - ], - }, - } - - expect(serializer.load(yaml)).to eq(hash) - end - end - - describe "against yaml lib" do - let(:hash) do - { - "a_joke" => { - "my-stand" => "I can totally keep secrets", - "but" => "The people I tell them to can't :P", - "wouldn't it be funny if this string were empty?" => "", - }, - "more" => { - "first" => [ - "Can a kangaroo jump higher than a house?", - "Of course, a house doesn't jump at all.", - ], - "second" => [ - "What did the sea say to the sand?", - "Nothing, it simply waved.", - ], - "array with empty string" => [""], - }, - "sales" => { - "item" => "A Parachute", - "description" => "Only used once, never opened.", - }, - "one-more" => "I'd tell you a chemistry joke but I know I wouldn't get a reaction.", - } - end - - context "#load" do - it "retrieves the original hash" do - require "yaml" - expect(serializer.load(YAML.dump(hash))).to eq(hash) - end - end - - context "#dump" do - it "retrieves the original hash" do - require "yaml" - expect(YAML.load(serializer.dump(hash))).to eq(hash) - end - end - end -end diff --git a/spec/bundler/cache/cache_path_spec.rb b/spec/bundler/cache/cache_path_spec.rb deleted file mode 100644 index 69d3809964..0000000000 --- a/spec/bundler/cache/cache_path_spec.rb +++ /dev/null @@ -1,32 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe "bundle package" do - before do - gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - G - end - - context "with --cache-path" do - it "caches gems at given path" do - bundle :package, "cache-path" => "vendor/cache-foo" - expect(bundled_app("vendor/cache-foo/rack-1.0.0.gem")).to exist - end - end - - context "with config cache_path" do - it "caches gems at given path" do - bundle "config cache_path vendor/cache-foo" - bundle :package - expect(bundled_app("vendor/cache-foo/rack-1.0.0.gem")).to exist - end - end - - context "with absolute --cache-path" do - it "caches gems at given path" do - bundle :package, "cache-path" => "/tmp/cache-foo" - expect(bundled_app("/tmp/cache-foo/rack-1.0.0.gem")).to exist - end - end -end diff --git a/spec/bundler/cache/gems_spec.rb b/spec/bundler/cache/gems_spec.rb deleted file mode 100644 index 4a0b953830..0000000000 --- a/spec/bundler/cache/gems_spec.rb +++ /dev/null @@ -1,304 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe "bundle cache" do - shared_examples_for "when there are only gemsources" do - before :each do - gemfile <<-G - gem 'rack' - G - - system_gems "rack-1.0.0", :path => :bundle_path - bundle! :cache - end - - it "copies the .gem file to vendor/cache" do - expect(bundled_app("vendor/cache/rack-1.0.0.gem")).to exist - end - - it "uses the cache as a source when installing gems" do - build_gem "omg", :path => bundled_app("vendor/cache") - - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "omg" - G - - expect(the_bundle).to include_gems "omg 1.0.0" - end - - it "uses the cache as a source when installing gems with --local" do - system_gems [], :path => :bundle_path - bundle "install --local" - - expect(the_bundle).to include_gems("rack 1.0.0") - end - - it "does not reinstall gems from the cache if they exist on the system" do - build_gem "rack", "1.0.0", :path => bundled_app("vendor/cache") do |s| - s.write "lib/rack.rb", "RACK = 'FAIL'" - end - - install_gemfile <<-G - gem "rack" - G - - expect(the_bundle).to include_gems("rack 1.0.0") - end - - it "does not reinstall gems from the cache if they exist in the bundle" do - system_gems "rack-1.0.0", :path => :bundle_path - - gemfile <<-G - gem "rack" - G - - build_gem "rack", "1.0.0", :path => bundled_app("vendor/cache") do |s| - s.write "lib/rack.rb", "RACK = 'FAIL'" - end - - bundle! :install, :local => true - expect(the_bundle).to include_gems("rack 1.0.0") - end - - it "creates a lockfile" do - cache_gems "rack-1.0.0" - - gemfile <<-G - gem "rack" - G - - bundle "cache" - - expect(bundled_app("Gemfile.lock")).to exist - end - end - - context "using system gems" do - before { bundle! "config path.system true" } - it_behaves_like "when there are only gemsources" - end - - context "installing into a local path" do - before { bundle! "config path ./.bundle" } - it_behaves_like "when there are only gemsources" - end - - describe "when there is a built-in gem", :ruby => "2.0" do - before :each do - build_repo2 do - build_gem "builtin_gem", "1.0.2" - end - - build_gem "builtin_gem", "1.0.2", :to_system => true do |s| - s.summary = "This builtin_gem is bundled with Ruby" - end - - FileUtils.rm("#{system_gem_path}/cache/builtin_gem-1.0.2.gem") - end - - it "uses builtin gems when installing to system gems" do - bundle! "config path.system true" - install_gemfile %(gem 'builtin_gem', '1.0.2') - expect(the_bundle).to include_gems("builtin_gem 1.0.2") - end - - it "caches remote and builtin gems" do - install_gemfile <<-G - source "file://#{gem_repo2}" - gem 'builtin_gem', '1.0.2' - gem 'rack', '1.0.0' - G - - bundle :cache - expect(bundled_app("vendor/cache/rack-1.0.0.gem")).to exist - expect(bundled_app("vendor/cache/builtin_gem-1.0.2.gem")).to exist - end - - it "doesn't make remote request after caching the gem" do - build_gem "builtin_gem_2", "1.0.2", :path => bundled_app("vendor/cache") do |s| - s.summary = "This builtin_gem is bundled with Ruby" - end - - install_gemfile <<-G - source "file://#{gem_repo2}" - gem 'builtin_gem_2', '1.0.2' - G - - bundle "install --local" - expect(the_bundle).to include_gems("builtin_gem_2 1.0.2") - end - - it "errors if the builtin gem isn't available to cache" do - bundle! "config path.system true" - - install_gemfile <<-G - gem 'builtin_gem', '1.0.2' - G - - bundle :cache - expect(exitstatus).to_not eq(0) if exitstatus - expect(out).to include("builtin_gem-1.0.2 is built in to Ruby, and can't be cached") - end - end - - describe "when there are also git sources" do - before do - build_git "foo" - system_gems "rack-1.0.0" - - install_gemfile <<-G - source "file://#{gem_repo1}" - git "#{lib_path("foo-1.0")}" do - gem 'foo' - end - gem 'rack' - G - end - - it "still works" do - bundle :cache - - system_gems [] - bundle "install --local" - - expect(the_bundle).to include_gems("rack 1.0.0", "foo 1.0") - end - - it "should not explode if the lockfile is not present" do - FileUtils.rm(bundled_app("Gemfile.lock")) - - bundle :cache - - expect(bundled_app("Gemfile.lock")).to exist - end - end - - describe "when previously cached" do - before :each do - build_repo2 - install_gemfile <<-G - source "file://#{gem_repo2}" - gem "rack" - gem "actionpack" - G - bundle :cache - expect(cached_gem("rack-1.0.0")).to exist - expect(cached_gem("actionpack-2.3.2")).to exist - expect(cached_gem("activesupport-2.3.2")).to exist - end - - it "re-caches during install" do - cached_gem("rack-1.0.0").rmtree - bundle :install - expect(out).to include("Updating files in vendor/cache") - expect(cached_gem("rack-1.0.0")).to exist - end - - it "adds and removes when gems are updated" do - update_repo2 - bundle "update", :all => bundle_update_requires_all? - expect(cached_gem("rack-1.2")).to exist - expect(cached_gem("rack-1.0.0")).not_to exist - end - - it "adds new gems and dependencies" do - install_gemfile <<-G - source "file://#{gem_repo2}" - gem "rails" - G - expect(cached_gem("rails-2.3.2")).to exist - expect(cached_gem("activerecord-2.3.2")).to exist - end - - it "removes .gems for removed gems and dependencies" do - install_gemfile <<-G - source "file://#{gem_repo2}" - gem "rack" - G - expect(cached_gem("rack-1.0.0")).to exist - expect(cached_gem("actionpack-2.3.2")).not_to exist - expect(cached_gem("activesupport-2.3.2")).not_to exist - end - - it "removes .gems when gem changes to git source" do - build_git "rack" - - install_gemfile <<-G - source "file://#{gem_repo2}" - gem "rack", :git => "#{lib_path("rack-1.0")}" - gem "actionpack" - G - expect(cached_gem("rack-1.0.0")).not_to exist - expect(cached_gem("actionpack-2.3.2")).to exist - expect(cached_gem("activesupport-2.3.2")).to exist - end - - it "doesn't remove gems that are for another platform" do - simulate_platform "java" do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "platform_specific" - G - - bundle :cache - expect(cached_gem("platform_specific-1.0-java")).to exist - end - - simulate_new_machine - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "platform_specific" - G - - expect(cached_gem("platform_specific-1.0-#{Bundler.local_platform}")).to exist - expect(cached_gem("platform_specific-1.0-java")).to exist - end - - it "doesn't remove gems with mismatched :rubygems_version or :date" do - cached_gem("rack-1.0.0").rmtree - build_gem "rack", "1.0.0", - :path => bundled_app("vendor/cache"), - :rubygems_version => "1.3.2" - simulate_new_machine - - bundle :install - expect(cached_gem("rack-1.0.0")).to exist - end - - it "handles directories and non .gem files in the cache" do - bundled_app("vendor/cache/foo").mkdir - File.open(bundled_app("vendor/cache/bar"), "w") {|f| f.write("not a gem") } - bundle :cache - end - - it "does not say that it is removing gems when it isn't actually doing so" do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - G - bundle "cache" - bundle "install" - expect(out).not_to match(/removing/i) - end - - it "does not warn about all if it doesn't have any git/path dependency" do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - G - bundle "cache" - expect(out).not_to match(/\-\-all/) - end - - it "should install gems with the name bundler in them (that aren't bundler)" do - build_gem "foo-bundler", "1.0", - :path => bundled_app("vendor/cache") - - install_gemfile <<-G - gem "foo-bundler" - G - - expect(the_bundle).to include_gems "foo-bundler 1.0" - end - end -end diff --git a/spec/bundler/cache/git_spec.rb b/spec/bundler/cache/git_spec.rb deleted file mode 100644 index 33387dbbb2..0000000000 --- a/spec/bundler/cache/git_spec.rb +++ /dev/null @@ -1,214 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe "git base name" do - it "base_name should strip private repo uris" do - source = Bundler::Source::Git.new("uri" => "git@github.com:bundler.git") - expect(source.send(:base_name)).to eq("bundler") - end - - it "base_name should strip network share paths" do - source = Bundler::Source::Git.new("uri" => "//MachineName/ShareFolder") - expect(source.send(:base_name)).to eq("ShareFolder") - end -end - -%w[cache package].each do |cmd| - RSpec.describe "bundle #{cmd} with git" do - it "copies repository to vendor cache and uses it" do - git = build_git "foo" - ref = git.ref_for("master", 11) - - install_gemfile <<-G - gem "foo", :git => '#{lib_path("foo-1.0")}' - G - - bundle "#{cmd}", forgotten_command_line_options([:all, :cache_all] => true) - expect(bundled_app("vendor/cache/foo-1.0-#{ref}")).to exist - expect(bundled_app("vendor/cache/foo-1.0-#{ref}/.git")).not_to exist - expect(bundled_app("vendor/cache/foo-1.0-#{ref}/.bundlecache")).to be_file - - FileUtils.rm_rf lib_path("foo-1.0") - expect(the_bundle).to include_gems "foo 1.0" - end - - it "copies repository to vendor cache and uses it even when installed with bundle --path" do - git = build_git "foo" - ref = git.ref_for("master", 11) - - install_gemfile <<-G - gem "foo", :git => '#{lib_path("foo-1.0")}' - G - - bundle "install --path vendor/bundle" - bundle "#{cmd}", forgotten_command_line_options([:all, :cache_all] => true) - - expect(bundled_app("vendor/cache/foo-1.0-#{ref}")).to exist - expect(bundled_app("vendor/cache/foo-1.0-#{ref}/.git")).not_to exist - - FileUtils.rm_rf lib_path("foo-1.0") - expect(the_bundle).to include_gems "foo 1.0" - end - - it "runs twice without exploding" do - build_git "foo" - - install_gemfile! <<-G - gem "foo", :git => '#{lib_path("foo-1.0")}' - G - - bundle! "#{cmd}", forgotten_command_line_options([:all, :cache_all] => true) - bundle! "#{cmd}", forgotten_command_line_options([:all, :cache_all] => true) - - expect(last_command.stdout).to include "Updating files in vendor/cache" - FileUtils.rm_rf lib_path("foo-1.0") - expect(the_bundle).to include_gems "foo 1.0" - end - - it "tracks updates" do - git = build_git "foo" - old_ref = git.ref_for("master", 11) - - install_gemfile <<-G - gem "foo", :git => '#{lib_path("foo-1.0")}' - G - - bundle "#{cmd}", forgotten_command_line_options([:all, :cache_all] => true) - - update_git "foo" do |s| - s.write "lib/foo.rb", "puts :CACHE" - end - - ref = git.ref_for("master", 11) - expect(ref).not_to eq(old_ref) - - bundle! "update", :all => bundle_update_requires_all? - bundle! "#{cmd}", forgotten_command_line_options([:all, :cache_all] => true) - - expect(bundled_app("vendor/cache/foo-1.0-#{ref}")).to exist - expect(bundled_app("vendor/cache/foo-1.0-#{old_ref}")).not_to exist - - FileUtils.rm_rf lib_path("foo-1.0") - run! "require 'foo'" - expect(out).to eq("CACHE") - end - - it "tracks updates when specifying the gem" do - git = build_git "foo" - old_ref = git.ref_for("master", 11) - - install_gemfile <<-G - gem "foo", :git => '#{lib_path("foo-1.0")}' - G - - bundle! cmd, forgotten_command_line_options([:all, :cache_all] => true) - - update_git "foo" do |s| - s.write "lib/foo.rb", "puts :CACHE" - end - - ref = git.ref_for("master", 11) - expect(ref).not_to eq(old_ref) - - bundle "update foo" - - expect(bundled_app("vendor/cache/foo-1.0-#{ref}")).to exist - expect(bundled_app("vendor/cache/foo-1.0-#{old_ref}")).not_to exist - - FileUtils.rm_rf lib_path("foo-1.0") - run "require 'foo'" - expect(out).to eq("CACHE") - end - - it "uses the local repository to generate the cache" do - git = build_git "foo" - ref = git.ref_for("master", 11) - - gemfile <<-G - gem "foo", :git => '#{lib_path("foo-invalid")}', :branch => :master - G - - bundle %(config local.foo #{lib_path("foo-1.0")}) - bundle "install" - bundle "#{cmd}", forgotten_command_line_options([:all, :cache_all] => true) - - expect(bundled_app("vendor/cache/foo-invalid-#{ref}")).to exist - - # Updating the local still uses the local. - update_git "foo" do |s| - s.write "lib/foo.rb", "puts :LOCAL" - end - - run "require 'foo'" - expect(out).to eq("LOCAL") - end - - it "copies repository to vendor cache, including submodules" do - build_git "submodule", "1.0" - - git = build_git "has_submodule", "1.0" do |s| - s.add_dependency "submodule" - end - - Dir.chdir(lib_path("has_submodule-1.0")) do - sys_exec "git submodule add #{lib_path("submodule-1.0")} submodule-1.0" - `git commit -m "submodulator"` - end - - install_gemfile <<-G - git "#{lib_path("has_submodule-1.0")}", :submodules => true do - gem "has_submodule" - end - G - - ref = git.ref_for("master", 11) - bundle "#{cmd}", forgotten_command_line_options([:all, :cache_all] => true) - - expect(bundled_app("vendor/cache/has_submodule-1.0-#{ref}")).to exist - expect(bundled_app("vendor/cache/has_submodule-1.0-#{ref}/submodule-1.0")).to exist - expect(the_bundle).to include_gems "has_submodule 1.0" - end - - it "displays warning message when detecting git repo in Gemfile", :bundler => "< 2" do - build_git "foo" - - install_gemfile <<-G - gem "foo", :git => '#{lib_path("foo-1.0")}' - G - - bundle "#{cmd}" - - expect(out).to include("Your Gemfile contains path and git dependencies.") - end - - it "does not display warning message if cache_all is set in bundle config" do - build_git "foo" - - install_gemfile <<-G - gem "foo", :git => '#{lib_path("foo-1.0")}' - G - - bundle cmd, forgotten_command_line_options([:all, :cache_all] => true) - bundle cmd - - expect(out).not_to include("Your Gemfile contains path and git dependencies.") - end - - it "caches pre-evaluated gemspecs" do - git = build_git "foo" - - # Insert a gemspec method that shells out - spec_lines = lib_path("foo-1.0/foo.gemspec").read.split("\n") - spec_lines.insert(-2, "s.description = `echo bob`") - update_git("foo") {|s| s.write "foo.gemspec", spec_lines.join("\n") } - - install_gemfile <<-G - gem "foo", :git => '#{lib_path("foo-1.0")}' - G - bundle cmd, forgotten_command_line_options([:all, :cache_all] => true) - - ref = git.ref_for("master", 11) - gemspec = bundled_app("vendor/cache/foo-1.0-#{ref}/foo.gemspec").read - expect(gemspec).to_not match("`echo bob`") - end - end -end diff --git a/spec/bundler/cache/path_spec.rb b/spec/bundler/cache/path_spec.rb deleted file mode 100644 index 8c6a843476..0000000000 --- a/spec/bundler/cache/path_spec.rb +++ /dev/null @@ -1,139 +0,0 @@ -# frozen_string_literal: true - -%w[cache package].each do |cmd| - RSpec.describe "bundle #{cmd} with path" do - it "is no-op when the path is within the bundle" do - build_lib "foo", :path => bundled_app("lib/foo") - - install_gemfile <<-G - gem "foo", :path => '#{bundled_app("lib/foo")}' - G - - bundle cmd, forgotten_command_line_options([:all, :cache_all] => true) - expect(bundled_app("vendor/cache/foo-1.0")).not_to exist - expect(the_bundle).to include_gems "foo 1.0" - end - - it "copies when the path is outside the bundle " do - build_lib "foo" - - install_gemfile <<-G - gem "foo", :path => '#{lib_path("foo-1.0")}' - G - - bundle cmd, forgotten_command_line_options([:all, :cache_all] => true) - expect(bundled_app("vendor/cache/foo-1.0")).to exist - expect(bundled_app("vendor/cache/foo-1.0/.bundlecache")).to be_file - - FileUtils.rm_rf lib_path("foo-1.0") - expect(the_bundle).to include_gems "foo 1.0" - end - - it "copies when the path is outside the bundle and the paths intersect" do - libname = File.basename(Dir.pwd) + "_gem" - libpath = File.join(File.dirname(Dir.pwd), libname) - - build_lib libname, :path => libpath - - install_gemfile <<-G - gem "#{libname}", :path => '#{libpath}' - G - - bundle cmd, forgotten_command_line_options([:all, :cache_all] => true) - expect(bundled_app("vendor/cache/#{libname}")).to exist - expect(bundled_app("vendor/cache/#{libname}/.bundlecache")).to be_file - - FileUtils.rm_rf libpath - expect(the_bundle).to include_gems "#{libname} 1.0" - end - - it "updates the path on each cache" do - build_lib "foo" - - install_gemfile <<-G - gem "foo", :path => '#{lib_path("foo-1.0")}' - G - - bundle cmd, forgotten_command_line_options([:all, :cache_all] => true) - - build_lib "foo" do |s| - s.write "lib/foo.rb", "puts :CACHE" - end - - bundle cmd, forgotten_command_line_options([:all, :cache_all] => true) - - expect(bundled_app("vendor/cache/foo-1.0")).to exist - FileUtils.rm_rf lib_path("foo-1.0") - - run "require 'foo'" - expect(out).to eq("CACHE") - end - - it "removes stale entries cache" do - build_lib "foo" - - install_gemfile <<-G - gem "foo", :path => '#{lib_path("foo-1.0")}' - G - - bundle cmd, forgotten_command_line_options([:all, :cache_all] => true) - - install_gemfile <<-G - gem "bar", :path => '#{lib_path("bar-1.0")}' - G - - bundle cmd, forgotten_command_line_options([:all, :cache_all] => true) - expect(bundled_app("vendor/cache/bar-1.0")).not_to exist - end - - it "raises a warning without --all", :bundler => "< 2" do - build_lib "foo" - - install_gemfile <<-G - gem "foo", :path => '#{lib_path("foo-1.0")}' - G - - bundle cmd - expect(out).to match(/please pass the \-\-all flag/) - expect(bundled_app("vendor/cache/foo-1.0")).not_to exist - end - - it "stores the given flag" do - build_lib "foo" - - install_gemfile <<-G - gem "foo", :path => '#{lib_path("foo-1.0")}' - G - - bundle cmd, forgotten_command_line_options([:all, :cache_all] => true) - build_lib "bar" - - install_gemfile <<-G - gem "foo", :path => '#{lib_path("foo-1.0")}' - gem "bar", :path => '#{lib_path("bar-1.0")}' - G - - bundle cmd - expect(bundled_app("vendor/cache/bar-1.0")).to exist - end - - it "can rewind chosen configuration" do - build_lib "foo" - - install_gemfile <<-G - gem "foo", :path => '#{lib_path("foo-1.0")}' - G - - bundle cmd, forgotten_command_line_options([:all, :cache_all] => true) - build_lib "baz" - - gemfile <<-G - gem "foo", :path => '#{lib_path("foo-1.0")}' - gem "baz", :path => '#{lib_path("baz-1.0")}' - G - - bundle "#{cmd} --no-all" - expect(bundled_app("vendor/cache/baz-1.0")).not_to exist - end - end -end diff --git a/spec/bundler/cache/platform_spec.rb b/spec/bundler/cache/platform_spec.rb deleted file mode 100644 index c0622a3c94..0000000000 --- a/spec/bundler/cache/platform_spec.rb +++ /dev/null @@ -1,49 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe "bundle cache with multiple platforms" do - before :each do - gemfile <<-G - source "file://#{gem_repo1}" - - platforms :mri, :rbx do - gem "rack", "1.0.0" - end - - platforms :jruby do - gem "activesupport", "2.3.5" - end - G - - lockfile <<-G - GEM - remote: file:#{gem_repo1}/ - specs: - rack (1.0.0) - activesupport (2.3.5) - - PLATFORMS - ruby - java - - DEPENDENCIES - rack (1.0.0) - activesupport (2.3.5) - G - - cache_gems "rack-1.0.0", "activesupport-2.3.5" - end - - it "ensures that a successful bundle install does not delete gems for other platforms" do - bundle! "install" - - expect(bundled_app("vendor/cache/rack-1.0.0.gem")).to exist - expect(bundled_app("vendor/cache/activesupport-2.3.5.gem")).to exist - end - - it "ensures that a successful bundle update does not delete gems for other platforms" do - bundle! "update", :all => bundle_update_requires_all? - - expect(bundled_app("vendor/cache/rack-1.0.0.gem")).to exist - expect(bundled_app("vendor/cache/activesupport-2.3.5.gem")).to exist - end -end diff --git a/spec/bundler/commands/add_spec.rb b/spec/bundler/commands/add_spec.rb deleted file mode 100644 index 7916db960a..0000000000 --- a/spec/bundler/commands/add_spec.rb +++ /dev/null @@ -1,108 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe "bundle add" do - before :each do - build_repo2 do - build_gem "foo", "1.1" - build_gem "foo", "2.0" - build_gem "baz", "1.2.3" - build_gem "bar", "0.12.3" - build_gem "cat", "0.12.3.pre" - build_gem "dog", "1.1.3.pre" - end - - install_gemfile <<-G - source "file://#{gem_repo2}" - gem "weakling", "~> 0.0.1" - G - end - - describe "without version specified" do - it "version requirement becomes ~> major.minor.patch when resolved version is < 1.0" do - bundle "add 'bar'" - expect(bundled_app("Gemfile").read).to match(/gem "bar", "~> 0.12.3"/) - expect(the_bundle).to include_gems "bar 0.12.3" - end - - it "version requirement becomes ~> major.minor when resolved version is > 1.0" do - bundle "add 'baz'" - expect(bundled_app("Gemfile").read).to match(/gem "baz", "~> 1.2"/) - expect(the_bundle).to include_gems "baz 1.2.3" - end - - it "version requirement becomes ~> major.minor.patch.pre when resolved version is < 1.0" do - bundle "add 'cat'" - expect(bundled_app("Gemfile").read).to match(/gem "cat", "~> 0.12.3.pre"/) - expect(the_bundle).to include_gems "cat 0.12.3.pre" - end - - it "version requirement becomes ~> major.minor.pre when resolved version is > 1.0.pre" do - bundle "add 'dog'" - expect(bundled_app("Gemfile").read).to match(/gem "dog", "~> 1.1.pre"/) - expect(the_bundle).to include_gems "dog 1.1.3.pre" - end - end - - describe "with --version" do - it "adds dependency of specified version and runs install" do - bundle "add 'foo' --version='~> 1.0'" - expect(bundled_app("Gemfile").read).to match(/gem "foo", "~> 1.0"/) - expect(the_bundle).to include_gems "foo 1.1" - end - - it "adds multiple version constraints when specified" do - bundle "add 'foo' --version='< 3.0, > 1.1'" - expect(bundled_app("Gemfile").read).to match(/gem "foo", "< 3.0", "> 1.1"/) - expect(the_bundle).to include_gems "foo 2.0" - end - end - - describe "with --group" do - it "adds dependency for the specified group" do - bundle "add 'foo' --group='development'" - expect(bundled_app("Gemfile").read).to match(/gem "foo", "~> 2.0", :group => \[:development\]/) - expect(the_bundle).to include_gems "foo 2.0" - end - - it "adds dependency to more than one group" do - bundle "add 'foo' --group='development, test'" - expect(bundled_app("Gemfile").read).to match(/gem "foo", "~> 2.0", :groups => \[:development, :test\]/) - expect(the_bundle).to include_gems "foo 2.0" - end - end - - describe "with --source" do - it "adds dependency with specified source" do - bundle "add 'foo' --source='file://#{gem_repo2}'" - expect(bundled_app("Gemfile").read).to match(%r{gem "foo", "~> 2.0", :source => "file:\/\/#{gem_repo2}"}) - expect(the_bundle).to include_gems "foo 2.0" - end - end - - it "using combination of short form options works like long form" do - bundle "add 'foo' -s='file://#{gem_repo2}' -g='development' -v='~>1.0'" - expect(bundled_app("Gemfile").read).to include %(gem "foo", "~> 1.0", :group => [:development], :source => "file://#{gem_repo2}") - expect(the_bundle).to include_gems "foo 1.1" - end - - it "shows error message when version is not formatted correctly" do - bundle "add 'foo' -v='~>1 . 0'" - expect(out).to match("Invalid gem requirement pattern '~>1 . 0'") - end - - it "shows error message when gem cannot be found" do - bundle "add 'werk_it'" - expect(out).to match("Could not find gem 'werk_it' in") - - bundle "add 'werk_it' -s='file://#{gem_repo2}'" - expect(out).to match("Could not find gem 'werk_it' in rubygems repository") - end - - it "shows error message when source cannot be reached" do - bundle "add 'baz' --source='http://badhostasdf'" - expect(out).to include("Could not reach host badhostasdf. Check your network connection and try again.") - - bundle "add 'baz' --source='file://does/not/exist'" - expect(out).to include("Could not fetch specs from file://does/not/exist/") - end -end diff --git a/spec/bundler/commands/binstubs_spec.rb b/spec/bundler/commands/binstubs_spec.rb deleted file mode 100644 index ec402c327c..0000000000 --- a/spec/bundler/commands/binstubs_spec.rb +++ /dev/null @@ -1,410 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe "bundle binstubs " do - context "when the gem exists in the lockfile" do - it "sets up the binstub" do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - G - - bundle "binstubs rack" - - expect(bundled_app("bin/rackup")).to exist - end - - it "does not install other binstubs" do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - gem "rails" - G - - bundle "binstubs rails" - - expect(bundled_app("bin/rackup")).not_to exist - expect(bundled_app("bin/rails")).to exist - end - - it "does install multiple binstubs" do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - gem "rails" - G - - bundle "binstubs rails rack" - - expect(bundled_app("bin/rackup")).to exist - expect(bundled_app("bin/rails")).to exist - end - - it "displays an error when used without any gem" do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - G - - bundle "binstubs" - expect(exitstatus).to eq(1) if exitstatus - expect(out).to include("`bundle binstubs` needs at least one gem to run.") - end - - context "when generating bundle binstub outside bundler" do - it "should abort" do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - G - - bundle "binstubs rack" - - File.open("bin/bundle", "wb") do |file| - file.print "OMG" - end - - sys_exec "bin/rackup" - - expect(last_command.stderr).to include("was not generated by Bundler") - end - end - - context "the bundle binstub" do - before do - if system_bundler_version == :bundler - system_gems :bundler - elsif system_bundler_version - build_repo4 do - build_gem "bundler", system_bundler_version do |s| - s.executables = "bundle" - s.bindir = "exe" - s.write "exe/bundle", "puts %(system bundler #{system_bundler_version}\\n\#{ARGV.inspect})" - end - end - system_gems "bundler-#{system_bundler_version}", :gem_repo => gem_repo4 - end - build_repo2 do - build_gem "prints_loaded_gems", "1.0" do |s| - s.executables = "print_loaded_gems" - s.write "bin/print_loaded_gems", <<-R - specs = Gem.loaded_specs.values.reject {|s| Bundler.rubygems.spec_default_gem?(s) } - puts specs.map(&:full_name).sort.inspect - R - end - end - install_gemfile! <<-G - source "file://#{gem_repo2}" - gem "rack" - gem "prints_loaded_gems" - G - bundle! "binstubs bundler rack prints_loaded_gems" - end - - let(:system_bundler_version) { Bundler::VERSION } - - it "runs bundler" do - sys_exec! "#{bundled_app("bin/bundle")} install" - expect(out).to eq %(system bundler #{system_bundler_version}\n["install"]) - end - - context "when BUNDLER_VERSION is set" do - it "runs the correct version of bundler" do - sys_exec "BUNDLER_VERSION='999.999.999' #{bundled_app("bin/bundle")} install" - expect(exitstatus).to eq(42) if exitstatus - expect(last_command.stderr).to include("Activating bundler (999.999.999) failed:"). - and include("To install the version of bundler this project requires, run `gem install bundler -v '999.999.999'`") - end - end - - context "when a lockfile exists with a locked bundler version" do - it "runs the correct version of bundler when the version is newer" do - lockfile lockfile.gsub(system_bundler_version, "999.999.999") - sys_exec "#{bundled_app("bin/bundle")} install" - expect(exitstatus).to eq(42) if exitstatus - expect(last_command.stderr).to include("Activating bundler (999.999.999) failed:"). - and include("To install the version of bundler this project requires, run `gem install bundler -v '999.999.999'`") - end - - it "runs the correct version of bundler when the version is older" do - simulate_bundler_version "55" - lockfile lockfile.gsub(system_bundler_version, "44.0") - sys_exec "#{bundled_app("bin/bundle")} install" - expect(exitstatus).to eq(42) if exitstatus - expect(last_command.stderr).to include("Activating bundler (44.0) failed:"). - and include("To install the version of bundler this project requires, run `gem install bundler -v '44.0'`") - end - - it "runs the correct version of bundler when the version is a pre-release" do - simulate_bundler_version "55" - lockfile lockfile.gsub(system_bundler_version, "2.12.0.a") - sys_exec "#{bundled_app("bin/bundle")} install" - expect(exitstatus).to eq(42) if exitstatus - expect(last_command.stderr).to include("Activating bundler (2.12.0.a) failed:"). - and include("To install the version of bundler this project requires, run `gem install bundler -v '2.12.0.a'`") - end - end - - context "when update --bundler is called" do - before { lockfile.gsub(system_bundler_version, "1.1.1") } - - it "calls through to the latest bundler version" do - sys_exec! "#{bundled_app("bin/bundle")} update --bundler" - expect(last_command.stdout).to eq %(system bundler #{system_bundler_version}\n["update", "--bundler"]) - end - - it "calls through to the explicit bundler version" do - sys_exec "#{bundled_app("bin/bundle")} update --bundler=999.999.999" - expect(exitstatus).to eq(42) if exitstatus - expect(last_command.stderr).to include("Activating bundler (999.999.999) failed:"). - and include("To install the version of bundler this project requires, run `gem install bundler -v '999.999.999'`") - end - end - - context "without a lockfile" do - it "falls back to the latest installed bundler" do - FileUtils.rm bundled_app("Gemfile.lock") - sys_exec! bundled_app("bin/bundle").to_s - expect(out).to eq "system bundler #{system_bundler_version}\n[]" - end - end - - context "using another binstub", :ruby_repo do - let(:system_bundler_version) { :bundler } - it "loads all gems" do - sys_exec! bundled_app("bin/print_loaded_gems").to_s - expect(out).to eq %(["bundler-#{Bundler::VERSION}", "prints_loaded_gems-1.0", "rack-1.2"]) - end - - context "when requesting a different bundler version" do - before { lockfile lockfile.gsub(Bundler::VERSION, "999.999.999") } - - it "attempts to load that version" do - sys_exec bundled_app("bin/rackup").to_s - expect(exitstatus).to eq(42) if exitstatus - expect(last_command.stderr).to include("Activating bundler (999.999.999) failed:"). - and include("To install the version of bundler this project requires, run `gem install bundler -v '999.999.999'`") - end - end - end - end - - it "installs binstubs from git gems" do - FileUtils.mkdir_p(lib_path("foo/bin")) - FileUtils.touch(lib_path("foo/bin/foo")) - build_git "foo", "1.0", :path => lib_path("foo") do |s| - s.executables = %w[foo] - end - install_gemfile <<-G - gem "foo", :git => "#{lib_path("foo")}" - G - - bundle "binstubs foo" - - expect(bundled_app("bin/foo")).to exist - end - - it "installs binstubs from path gems" do - FileUtils.mkdir_p(lib_path("foo/bin")) - FileUtils.touch(lib_path("foo/bin/foo")) - build_lib "foo", "1.0", :path => lib_path("foo") do |s| - s.executables = %w[foo] - end - install_gemfile <<-G - gem "foo", :path => "#{lib_path("foo")}" - G - - bundle "binstubs foo" - - expect(bundled_app("bin/foo")).to exist - end - - it "sets correct permissions for binstubs" do - with_umask(0o002) do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - G - - bundle "binstubs rack" - binary = bundled_app("bin/rackup") - expect(File.stat(binary).mode.to_s(8)).to eq("100775") - end - end - - context "when using --shebang" do - it "sets the specified shebang for the the binstub" do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - G - - bundle "binstubs rack --shebang jruby" - - expect(File.open("bin/rackup").gets).to eq("#!/usr/bin/env jruby\n") - end - end - end - - context "when the gem doesn't exist" do - it "displays an error with correct status" do - install_gemfile <<-G - source "file://#{gem_repo1}" - G - - bundle "binstubs doesnt_exist" - - expect(exitstatus).to eq(7) if exitstatus - expect(out).to include("Could not find gem 'doesnt_exist'.") - end - end - - context "--path" do - it "sets the binstubs dir" do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - G - - bundle "binstubs rack --path exec" - - expect(bundled_app("exec/rackup")).to exist - end - - it "setting is saved for bundle install", :bundler => "< 2" do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - gem "rails" - G - - bundle! "binstubs rack", forgotten_command_line_options([:path, :bin] => "exec") - bundle! :install - - expect(bundled_app("exec/rails")).to exist - end - end - - context "with --standalone option" do - before do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - G - end - - it "generates a standalone binstub" do - bundle! "binstubs rack --standalone" - expect(bundled_app("bin/rackup")).to exist - end - - it "generates a binstub that does not depend on rubygems or bundler" do - bundle! "binstubs rack --standalone" - expect(File.read(bundled_app("bin/rackup"))).to_not include("Gem.bin_path") - end - - context "when specified --path option" do - it "generates a standalone binstub at the given path" do - bundle! "binstubs rack --standalone --path foo" - expect(bundled_app("foo/rackup")).to exist - end - end - end - - context "when the bin already exists" do - it "doesn't overwrite and warns" do - FileUtils.mkdir_p(bundled_app("bin")) - File.open(bundled_app("bin/rackup"), "wb") do |file| - file.print "OMG" - end - - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - G - - bundle "binstubs rack" - - expect(bundled_app("bin/rackup")).to exist - expect(File.read(bundled_app("bin/rackup"))).to eq("OMG") - expect(out).to include("Skipped rackup") - expect(out).to include("overwrite skipped stubs, use --force") - end - - context "when using --force" do - it "overwrites the binstub" do - FileUtils.mkdir_p(bundled_app("bin")) - File.open(bundled_app("bin/rackup"), "wb") do |file| - file.print "OMG" - end - - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - G - - bundle "binstubs rack --force" - - expect(bundled_app("bin/rackup")).to exist - expect(File.read(bundled_app("bin/rackup"))).not_to eq("OMG") - end - end - end - - context "when the gem has no bins" do - it "suggests child gems if they have bins" do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "rack-obama" - G - - bundle "binstubs rack-obama" - expect(out).to include("rack-obama has no executables") - expect(out).to include("rack has: rackup") - end - - it "works if child gems don't have bins" do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "actionpack" - G - - bundle "binstubs actionpack" - expect(out).to include("no executables for the gem actionpack") - end - - it "works if the gem has development dependencies" do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "with_development_dependency" - G - - bundle "binstubs with_development_dependency" - expect(out).to include("no executables for the gem with_development_dependency") - end - end - - context "when BUNDLE_INSTALL is specified" do - it "performs an automatic bundle install" do - gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - G - - bundle "config auto_install 1" - bundle "binstubs rack" - expect(out).to include("Installing rack 1.0.0") - expect(the_bundle).to include_gems "rack 1.0.0" - end - - it "does nothing when already up to date" do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - G - - bundle "config auto_install 1" - bundle "binstubs rack", :env => { "BUNDLE_INSTALL" => 1 } - expect(out).not_to include("Installing rack 1.0.0") - end - end -end diff --git a/spec/bundler/commands/check_spec.rb b/spec/bundler/commands/check_spec.rb deleted file mode 100644 index f2af446fbf..0000000000 --- a/spec/bundler/commands/check_spec.rb +++ /dev/null @@ -1,354 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe "bundle check" do - it "returns success when the Gemfile is satisfied" do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "rails" - G - - bundle :check - expect(exitstatus).to eq(0) if exitstatus - expect(out).to include("The Gemfile's dependencies are satisfied") - end - - it "works with the --gemfile flag when not in the directory" do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "rails" - G - - Dir.chdir tmp - bundle "check --gemfile bundled_app/Gemfile" - expect(out).to include("The Gemfile's dependencies are satisfied") - end - - it "creates a Gemfile.lock by default if one does not exist" do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "rails" - G - - FileUtils.rm("Gemfile.lock") - - bundle "check" - - expect(bundled_app("Gemfile.lock")).to exist - end - - it "does not create a Gemfile.lock if --dry-run was passed" do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "rails" - G - - FileUtils.rm("Gemfile.lock") - - bundle "check --dry-run" - - expect(bundled_app("Gemfile.lock")).not_to exist - end - - it "prints a generic error if the missing gems are unresolvable" do - system_gems ["rails-2.3.2"] - - gemfile <<-G - source "file://#{gem_repo1}" - gem "rails" - G - - bundle :check - expect(out).to include("Bundler can't satisfy your Gemfile's dependencies.") - end - - it "prints a generic error if a Gemfile.lock does not exist and a toplevel dependency does not exist" do - gemfile <<-G - source "file://#{gem_repo1}" - gem "rails" - G - - bundle :check - expect(exitstatus).to be > 0 if exitstatus - expect(out).to include("Bundler can't satisfy your Gemfile's dependencies.") - end - - it "prints a generic message if you changed your lockfile" do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem 'rails' - G - install_gemfile <<-G - source "file://#{gem_repo1}" - gem 'rails_fail' - G - - gemfile <<-G - source "file://#{gem_repo1}" - gem "rails" - gem "rails_fail" - G - - bundle :check - expect(out).to include("Bundler can't satisfy your Gemfile's dependencies.") - end - - it "remembers --without option from install", :bundler => "< 2" do - gemfile <<-G - source "file://#{gem_repo1}" - group :foo do - gem "rack" - end - G - - bundle! "install --without foo" - bundle! "check" - expect(out).to include("The Gemfile's dependencies are satisfied") - end - - it "uses the without setting" do - bundle! "config without foo" - install_gemfile! <<-G - source "file://#{gem_repo1}" - group :foo do - gem "rack" - end - G - - bundle! "check" - expect(out).to include("The Gemfile's dependencies are satisfied") - end - - it "ensures that gems are actually installed and not just cached" do - gemfile <<-G - source "file://#{gem_repo1}" - gem "rack", :group => :foo - G - - bundle :install, forgotten_command_line_options(:without => "foo") - - gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - G - - bundle "check" - expect(out).to include("* rack (1.0.0)") - expect(exitstatus).to eq(1) if exitstatus - end - - it "ignores missing gems restricted to other platforms" do - gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - platforms :#{not_local_tag} do - gem "activesupport" - end - G - - system_gems "rack-1.0.0", :path => :bundle_path - - lockfile <<-G - GEM - remote: file:#{gem_repo1}/ - specs: - activesupport (2.3.5) - rack (1.0.0) - - PLATFORMS - #{local} - #{not_local} - - DEPENDENCIES - rack - activesupport - G - - bundle :check - expect(out).to include("The Gemfile's dependencies are satisfied") - end - - it "works with env conditionals" do - gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - env :NOT_GOING_TO_BE_SET do - gem "activesupport" - end - G - - system_gems "rack-1.0.0", :path => :bundle_path - - lockfile <<-G - GEM - remote: file:#{gem_repo1}/ - specs: - activesupport (2.3.5) - rack (1.0.0) - - PLATFORMS - #{local} - #{not_local} - - DEPENDENCIES - rack - activesupport - G - - bundle :check - expect(out).to include("The Gemfile's dependencies are satisfied") - end - - it "outputs an error when the default Gemfile is not found" do - bundle :check - expect(exitstatus).to eq(10) if exitstatus - expect(out).to include("Could not locate Gemfile") - end - - it "does not output fatal error message" do - bundle :check - expect(exitstatus).to eq(10) if exitstatus - expect(out).not_to include("Unfortunately, a fatal error has occurred. ") - end - - it "should not crash when called multiple times on a new machine" do - gemfile <<-G - gem 'rails', '3.0.0.beta3' - gem 'paperclip', :git => 'git://github.com/thoughtbot/paperclip.git' - G - - simulate_new_machine - bundle "check" - last_out = out - 3.times do - bundle :check - expect(out).to eq(last_out) - end - end - - it "fails when there's no lock file and frozen is set" do - install_gemfile! <<-G - source "file://#{gem_repo1}" - gem "foo" - G - - bundle! "install", forgotten_command_line_options(:deployment => true) - FileUtils.rm(bundled_app("Gemfile.lock")) - - bundle :check - expect(last_command).to be_failure - end - - context "--path", :bundler => "< 2" do - before do - gemfile <<-G - source "file://#{gem_repo1}" - gem "rails" - G - bundle "install --path vendor/bundle" - - FileUtils.rm_rf(bundled_app(".bundle")) - end - - it "returns success" do - bundle! "check --path vendor/bundle" - expect(out).to include("The Gemfile's dependencies are satisfied") - end - - it "should write to .bundle/config", :bundler => "< 2" do - bundle "check --path vendor/bundle" - bundle! "check" - end - end - - context "--path vendor/bundle after installing gems in the default directory" do - it "returns false" do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "rails" - G - - bundle "check --path vendor/bundle" - expect(exitstatus).to eq(1) if exitstatus - expect(out).to match(/The following gems are missing/) - end - end - - describe "when locked" do - before :each do - system_gems "rack-1.0.0" - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "rack", "1.0" - G - end - - it "returns success when the Gemfile is satisfied" do - bundle :install - bundle :check - expect(exitstatus).to eq(0) if exitstatus - expect(out).to include("The Gemfile's dependencies are satisfied") - end - - it "shows what is missing with the current Gemfile if it is not satisfied" do - simulate_new_machine - bundle :check - expect(out).to match(/The following gems are missing/) - expect(out).to include("* rack (1.0") - end - end - - describe "BUNDLED WITH" do - def lock_with(bundler_version = nil) - lock = <<-L - GEM - remote: file:#{gem_repo1}/ - specs: - rack (1.0.0) - - PLATFORMS - #{lockfile_platforms} - - DEPENDENCIES - rack - L - - if bundler_version - lock += "\n BUNDLED WITH\n #{bundler_version}\n" - end - - lock - end - - before do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - G - end - - context "is not present" do - it "does not change the lock" do - lockfile lock_with(nil) - bundle :check - lockfile_should_be lock_with(nil) - end - end - - context "is newer" do - it "does not change the lock but warns" do - lockfile lock_with(Bundler::VERSION.succ) - bundle! :check - expect(last_command.bundler_err).to include("the running version of Bundler (#{Bundler::VERSION}) is older than the version that created the lockfile (#{Bundler::VERSION.succ})") - lockfile_should_be lock_with(Bundler::VERSION.succ) - end - end - - context "is older" do - it "does not change the lock" do - lockfile lock_with("1.10.1") - bundle :check - lockfile_should_be lock_with("1.10.1") - end - end - end -end diff --git a/spec/bundler/commands/clean_spec.rb b/spec/bundler/commands/clean_spec.rb deleted file mode 100644 index bab87372d1..0000000000 --- a/spec/bundler/commands/clean_spec.rb +++ /dev/null @@ -1,736 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe "bundle clean" do - def should_have_gems(*gems) - gems.each do |g| - expect(vendored_gems("gems/#{g}")).to exist - expect(vendored_gems("specifications/#{g}.gemspec")).to exist - expect(vendored_gems("cache/#{g}.gem")).to exist - end - end - - def should_not_have_gems(*gems) - gems.each do |g| - expect(vendored_gems("gems/#{g}")).not_to exist - expect(vendored_gems("specifications/#{g}.gemspec")).not_to exist - expect(vendored_gems("cache/#{g}.gem")).not_to exist - end - end - - it "removes unused gems that are different" do - gemfile <<-G - source "file://#{gem_repo1}" - - gem "thin" - gem "foo" - G - - bundle! "install", forgotten_command_line_options(:path => "vendor/bundle", :clean => false) - - gemfile <<-G - source "file://#{gem_repo1}" - - gem "thin" - G - bundle! "install" - - bundle! :clean - - expect(out).to include("Removing foo (1.0)") - - should_have_gems "thin-1.0", "rack-1.0.0" - should_not_have_gems "foo-1.0" - - expect(vendored_gems("bin/rackup")).to exist - end - - it "removes old version of gem if unused" do - gemfile <<-G - source "file://#{gem_repo1}" - - gem "rack", "0.9.1" - gem "foo" - G - - bundle "install", forgotten_command_line_options(:path => "vendor/bundle", :clean => false) - - gemfile <<-G - source "file://#{gem_repo1}" - - gem "rack", "1.0.0" - gem "foo" - G - bundle "install" - - bundle :clean - - expect(out).to include("Removing rack (0.9.1)") - - should_have_gems "foo-1.0", "rack-1.0.0" - should_not_have_gems "rack-0.9.1" - - expect(vendored_gems("bin/rackup")).to exist - end - - it "removes new version of gem if unused" do - gemfile <<-G - source "file://#{gem_repo1}" - - gem "rack", "1.0.0" - gem "foo" - G - - bundle! "install", forgotten_command_line_options(:path => "vendor/bundle", :clean => false) - - gemfile <<-G - source "file://#{gem_repo1}" - - gem "rack", "0.9.1" - gem "foo" - G - bundle! "update rack" - - bundle! :clean - - expect(out).to include("Removing rack (1.0.0)") - - should_have_gems "foo-1.0", "rack-0.9.1" - should_not_have_gems "rack-1.0.0" - - expect(vendored_gems("bin/rackup")).to exist - end - - it "removes gems in bundle without groups" do - gemfile <<-G - source "file://#{gem_repo1}" - - gem "foo" - - group :test_group do - gem "rack", "1.0.0" - end - G - - bundle "install", forgotten_command_line_options(:path => "vendor/bundle") - bundle "install", forgotten_command_line_options(:without => "test_group") - bundle :clean - - expect(out).to include("Removing rack (1.0.0)") - - should_have_gems "foo-1.0" - should_not_have_gems "rack-1.0.0" - - expect(vendored_gems("bin/rackup")).to_not exist - end - - it "does not remove cached git dir if it's being used" do - build_git "foo" - revision = revision_for(lib_path("foo-1.0")) - git_path = lib_path("foo-1.0") - - gemfile <<-G - source "file://#{gem_repo1}" - - gem "rack", "1.0.0" - git "#{git_path}", :ref => "#{revision}" do - gem "foo" - end - G - - bundle "install", forgotten_command_line_options(:path => "vendor/bundle") - - bundle :clean - - digest = Digest(:SHA1).hexdigest(git_path.to_s) - cache_path = Bundler::VERSION.start_with?("1.") ? vendored_gems("cache/bundler/git/foo-1.0-#{digest}") : home(".bundle/cache/git/foo-1.0-#{digest}") - expect(cache_path).to exist - end - - it "removes unused git gems" do - build_git "foo", :path => lib_path("foo") - git_path = lib_path("foo") - revision = revision_for(git_path) - - gemfile <<-G - source "file://#{gem_repo1}" - - gem "rack", "1.0.0" - git "#{git_path}", :ref => "#{revision}" do - gem "foo" - end - G - - bundle "install", forgotten_command_line_options(:path => "vendor/bundle") - - gemfile <<-G - source "file://#{gem_repo1}" - - gem "rack", "1.0.0" - G - bundle "install" - - bundle :clean - - expect(out).to include("Removing foo (#{revision[0..11]})") - - expect(vendored_gems("gems/rack-1.0.0")).to exist - expect(vendored_gems("bundler/gems/foo-#{revision[0..11]}")).not_to exist - digest = Digest(:SHA1).hexdigest(git_path.to_s) - expect(vendored_gems("cache/bundler/git/foo-#{digest}")).not_to exist - - expect(vendored_gems("specifications/rack-1.0.0.gemspec")).to exist - - expect(vendored_gems("bin/rackup")).to exist - end - - it "removes old git gems" do - build_git "foo-bar", :path => lib_path("foo-bar") - revision = revision_for(lib_path("foo-bar")) - - gemfile <<-G - source "file://#{gem_repo1}" - - gem "rack", "1.0.0" - git "#{lib_path("foo-bar")}" do - gem "foo-bar" - end - G - - bundle! "install", forgotten_command_line_options(:path => "vendor/bundle") - - update_git "foo", :path => lib_path("foo-bar") - revision2 = revision_for(lib_path("foo-bar")) - - bundle! "update", :all => bundle_update_requires_all? - bundle! :clean - - expect(out).to include("Removing foo-bar (#{revision[0..11]})") - - expect(vendored_gems("gems/rack-1.0.0")).to exist - expect(vendored_gems("bundler/gems/foo-bar-#{revision[0..11]}")).not_to exist - expect(vendored_gems("bundler/gems/foo-bar-#{revision2[0..11]}")).to exist - - expect(vendored_gems("specifications/rack-1.0.0.gemspec")).to exist - - expect(vendored_gems("bin/rackup")).to exist - end - - it "does not remove nested gems in a git repo" do - build_lib "activesupport", "3.0", :path => lib_path("rails/activesupport") - build_git "rails", "3.0", :path => lib_path("rails") do |s| - s.add_dependency "activesupport", "= 3.0" - end - revision = revision_for(lib_path("rails")) - - gemfile <<-G - gem "activesupport", :git => "#{lib_path("rails")}", :ref => '#{revision}' - G - - bundle "install", forgotten_command_line_options(:path => "vendor/bundle") - bundle :clean - expect(out).to include("") - - expect(vendored_gems("bundler/gems/rails-#{revision[0..11]}")).to exist - end - - it "does not remove git sources that are in without groups" do - build_git "foo", :path => lib_path("foo") - git_path = lib_path("foo") - revision = revision_for(git_path) - - gemfile <<-G - source "file://#{gem_repo1}" - - gem "rack", "1.0.0" - group :test do - git "#{git_path}", :ref => "#{revision}" do - gem "foo" - end - end - G - bundle "install", forgotten_command_line_options(:path => "vendor/bundle", :without => "test") - - bundle :clean - - expect(out).to include("") - expect(vendored_gems("bundler/gems/foo-#{revision[0..11]}")).to exist - digest = Digest(:SHA1).hexdigest(git_path.to_s) - expect(vendored_gems("cache/bundler/git/foo-#{digest}")).to_not exist - end - - it "does not blow up when using without groups" do - gemfile <<-G - source "file://#{gem_repo1}" - - gem "rack" - - group :development do - gem "foo" - end - G - - bundle "install", forgotten_command_line_options(:path => "vendor/bundle", :without => "development") - - bundle :clean - expect(exitstatus).to eq(0) if exitstatus - end - - it "displays an error when used without --path" do - bundle! "config path.system true" - install_gemfile <<-G - source "file://#{gem_repo1}" - - gem "rack", "1.0.0" - G - - bundle :clean - - expect(exitstatus).to eq(15) if exitstatus - expect(out).to include("--force") - end - - # handling bundle clean upgrade path from the pre's - it "removes .gem/.gemspec file even if there's no corresponding gem dir" do - gemfile <<-G - source "file://#{gem_repo1}" - - gem "thin" - gem "foo" - G - - bundle "install", forgotten_command_line_options(:path => "vendor/bundle") - - gemfile <<-G - source "file://#{gem_repo1}" - - gem "foo" - G - bundle "install" - - FileUtils.rm(vendored_gems("bin/rackup")) - FileUtils.rm_rf(vendored_gems("gems/thin-1.0")) - FileUtils.rm_rf(vendored_gems("gems/rack-1.0.0")) - - bundle :clean - - should_not_have_gems "thin-1.0", "rack-1.0" - should_have_gems "foo-1.0" - - expect(vendored_gems("bin/rackup")).not_to exist - end - - it "does not call clean automatically when using system gems" do - bundle! "config path.system true" - - bundle! :config - - install_gemfile! <<-G - source "file://#{gem_repo1}" - - gem "thin" - gem "rack" - G - - bundle! "info thin" - - install_gemfile! <<-G - source "file://#{gem_repo1}" - - gem "rack" - G - - sys_exec! "gem list" - expect(out).to include("rack (1.0.0)").and include("thin (1.0)") - end - - it "--clean should override the bundle setting on install", :bundler => "< 2" do - gemfile <<-G - source "file://#{gem_repo1}" - - gem "thin" - gem "rack" - G - bundle "install", forgotten_command_line_options(:path => "vendor/bundle", :clean => true) - - gemfile <<-G - source "file://#{gem_repo1}" - - gem "rack" - G - bundle "install" - - should_have_gems "rack-1.0.0" - should_not_have_gems "thin-1.0" - end - - it "--clean should override the bundle setting on update", :bundler => "< 2" do - build_repo2 - - gemfile <<-G - source "file://#{gem_repo2}" - - gem "foo" - G - bundle! "install", forgotten_command_line_options(:path => "vendor/bundle", :clean => true) - - update_repo2 do - build_gem "foo", "1.0.1" - end - - bundle! "update", :all => bundle_update_requires_all? - - should_have_gems "foo-1.0.1" - should_not_have_gems "foo-1.0" - end - - it "automatically cleans when path has not been set", :bundler => "2" do - build_repo2 - - install_gemfile! <<-G - source "file://#{gem_repo2}" - - gem "foo" - G - - update_repo2 do - build_gem "foo", "1.0.1" - end - - bundle! "update", :all => true - - files = Pathname.glob(bundled_app(".bundle", Bundler.ruby_scope, "*", "*")) - files.map! {|f| f.to_s.sub(bundled_app(".bundle", Bundler.ruby_scope).to_s, "") } - expect(files.sort).to eq %w[ - /cache/foo-1.0.1.gem - /gems/foo-1.0.1 - /specifications/foo-1.0.1.gemspec - ] - end - - it "does not clean automatically on --path" do - gemfile <<-G - source "file://#{gem_repo1}" - - gem "thin" - gem "rack" - G - bundle "install", forgotten_command_line_options(:path => "vendor/bundle") - - gemfile <<-G - source "file://#{gem_repo1}" - - gem "rack" - G - bundle "install" - - should_have_gems "rack-1.0.0", "thin-1.0" - end - - it "does not clean on bundle update with --path" do - build_repo2 - - gemfile <<-G - source "file://#{gem_repo2}" - - gem "foo" - G - bundle! "install", forgotten_command_line_options(:path => "vendor/bundle") - - update_repo2 do - build_gem "foo", "1.0.1" - end - - bundle! :update, :all => bundle_update_requires_all? - should_have_gems "foo-1.0", "foo-1.0.1" - end - - it "does not clean on bundle update when using --system" do - bundle! "config path.system true" - - build_repo2 - - gemfile <<-G - source "file://#{gem_repo2}" - - gem "foo" - G - bundle! "install" - - update_repo2 do - build_gem "foo", "1.0.1" - end - bundle! :update, :all => bundle_update_requires_all? - - sys_exec! "gem list" - expect(out).to include("foo (1.0.1, 1.0)") - end - - it "cleans system gems when --force is used" do - bundle! "config path.system true" - - gemfile <<-G - source "file://#{gem_repo1}" - - gem "foo" - gem "rack" - G - bundle :install - - gemfile <<-G - source "file://#{gem_repo1}" - - gem "rack" - G - bundle :install - bundle "clean --force" - - expect(out).to include("Removing foo (1.0)") - sys_exec "gem list" - expect(out).not_to include("foo (1.0)") - expect(out).to include("rack (1.0.0)") - end - - describe "when missing permissions" do - before { ENV["BUNDLE_PATH__SYSTEM"] = "true" } - let(:system_cache_path) { system_gem_path("cache") } - after do - FileUtils.chmod(0o755, system_cache_path) - end - it "returns a helpful error message" do - gemfile <<-G - source "file://#{gem_repo1}" - - gem "foo" - gem "rack" - G - bundle :install - - gemfile <<-G - source "file://#{gem_repo1}" - - gem "rack" - G - bundle :install - - FileUtils.chmod(0o500, system_cache_path) - - bundle :clean, :force => true - - expect(out).to include(system_gem_path.to_s) - expect(out).to include("grant write permissions") - - sys_exec "gem list" - expect(out).to include("foo (1.0)") - expect(out).to include("rack (1.0.0)") - end - end - - it "cleans git gems with a 7 length git revision" do - build_git "foo" - revision = revision_for(lib_path("foo-1.0")) - - gemfile <<-G - source "file://#{gem_repo1}" - - gem "foo", :git => "#{lib_path("foo-1.0")}" - G - - bundle "install", forgotten_command_line_options(:path => "vendor/bundle") - - # mimic 7 length git revisions in Gemfile.lock - gemfile_lock = File.read(bundled_app("Gemfile.lock")).split("\n") - gemfile_lock.each_with_index do |line, index| - gemfile_lock[index] = line[0..(11 + 7)] if line.include?(" revision:") - end - File.open(bundled_app("Gemfile.lock"), "w") do |file| - file.print gemfile_lock.join("\n") - end - - bundle "install", forgotten_command_line_options(:path => "vendor/bundle") - - bundle :clean - - expect(out).not_to include("Removing foo (1.0 #{revision[0..6]})") - - expect(vendored_gems("bundler/gems/foo-1.0-#{revision[0..6]}")).to exist - end - - it "when using --force on system gems, it doesn't remove binaries" do - bundle! "config path.system true" - - build_repo2 - update_repo2 do - build_gem "bindir" do |s| - s.bindir = "exe" - s.executables = "foo" - end - end - - gemfile <<-G - source "file://#{gem_repo2}" - - gem "bindir" - G - bundle :install - - bundle "clean --force" - - sys_exec "foo" - - expect(exitstatus).to eq(0) if exitstatus - expect(out).to eq("1.0") - end - - it "doesn't blow up on path gems without a .gempsec" do - relative_path = "vendor/private_gems/bar-1.0" - absolute_path = bundled_app(relative_path) - FileUtils.mkdir_p("#{absolute_path}/lib/bar") - File.open("#{absolute_path}/lib/bar/bar.rb", "wb") do |file| - file.puts "module Bar; end" - end - - gemfile <<-G - source "file://#{gem_repo1}" - - gem "foo" - gem "bar", "1.0", :path => "#{relative_path}" - G - - bundle "install", forgotten_command_line_options(:path => "vendor/bundle") - bundle! :clean - end - - it "doesn't remove gems in dry-run mode with path set" do - gemfile <<-G - source "file://#{gem_repo1}" - - gem "thin" - gem "foo" - G - - bundle "install", forgotten_command_line_options(:path => "vendor/bundle", :clean => false) - - gemfile <<-G - source "file://#{gem_repo1}" - - gem "thin" - G - - bundle :install - - bundle "clean --dry-run" - - expect(out).not_to include("Removing foo (1.0)") - expect(out).to include("Would have removed foo (1.0)") - - should_have_gems "thin-1.0", "rack-1.0.0", "foo-1.0" - - expect(vendored_gems("bin/rackup")).to exist - end - - it "doesn't remove gems in dry-run mode with no path set" do - gemfile <<-G - source "file://#{gem_repo1}" - - gem "thin" - gem "foo" - G - - bundle "install", forgotten_command_line_options(:path => "vendor/bundle", :clean => false) - - gemfile <<-G - source "file://#{gem_repo1}" - - gem "thin" - G - - bundle :install - - bundle "configuration --delete path" - - bundle "clean --dry-run" - - expect(out).not_to include("Removing foo (1.0)") - expect(out).to include("Would have removed foo (1.0)") - - should_have_gems "thin-1.0", "rack-1.0.0", "foo-1.0" - - expect(vendored_gems("bin/rackup")).to exist - end - - it "doesn't store dry run as a config setting" do - gemfile <<-G - source "file://#{gem_repo1}" - - gem "thin" - gem "foo" - G - - bundle "install", forgotten_command_line_options(:path => "vendor/bundle", :clean => false) - bundle "config dry_run false" - - gemfile <<-G - source "file://#{gem_repo1}" - - gem "thin" - G - - bundle :install - - bundle "clean" - - expect(out).to include("Removing foo (1.0)") - expect(out).not_to include("Would have removed foo (1.0)") - - should_have_gems "thin-1.0", "rack-1.0.0" - should_not_have_gems "foo-1.0" - - expect(vendored_gems("bin/rackup")).to exist - end - - it "performs an automatic bundle install" do - gemfile <<-G - source "file://#{gem_repo1}" - - gem "thin" - gem "foo" - G - - bundle! "install", forgotten_command_line_options(:path => "vendor/bundle", :clean => false) - - gemfile <<-G - source "file://#{gem_repo1}" - - gem "thin" - gem "weakling" - G - - bundle! "config auto_install 1" - bundle! :clean - expect(out).to include("Installing weakling 0.0.3") - should_have_gems "thin-1.0", "rack-1.0.0", "weakling-0.0.3" - should_not_have_gems "foo-1.0" - end - - it "doesn't remove extensions artifacts from bundled git gems after clean", :ruby_repo, :rubygems => "2.2" do - build_git "very_simple_git_binary", &:add_c_extension - - revision = revision_for(lib_path("very_simple_git_binary-1.0")) - - gemfile <<-G - source "file://#{gem_repo1}" - - gem "very_simple_git_binary", :git => "#{lib_path("very_simple_git_binary-1.0")}", :ref => "#{revision}" - G - - bundle! "install", forgotten_command_line_options(:path => "vendor/bundle") - expect(vendored_gems("bundler/gems/extensions")).to exist - expect(vendored_gems("bundler/gems/very_simple_git_binary-1.0-#{revision[0..11]}")).to exist - - bundle! :clean - expect(out).to eq("") - - expect(vendored_gems("bundler/gems/extensions")).to exist - expect(vendored_gems("bundler/gems/very_simple_git_binary-1.0-#{revision[0..11]}")).to exist - end -end diff --git a/spec/bundler/commands/config_spec.rb b/spec/bundler/commands/config_spec.rb deleted file mode 100644 index 9e49357465..0000000000 --- a/spec/bundler/commands/config_spec.rb +++ /dev/null @@ -1,384 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe ".bundle/config" do - before :each do - gemfile <<-G - source "file://#{gem_repo1}" - gem "rack", "1.0.0" - G - end - - describe "config" do - before { bundle "config foo bar" } - - it "prints a detailed report of local and user configuration" do - bundle "config" - - expect(out).to include("Settings are listed in order of priority. The top value will be used") - expect(out).to include("foo\nSet for the current user") - expect(out).to include(": \"bar\"") - end - - context "given --parseable flag" do - it "prints a minimal report of local and user configuration" do - bundle "config --parseable" - expect(out).to include("foo=bar") - end - - context "with global config" do - it "prints config assigned to local scope" do - bundle "config --local foo bar2" - bundle "config --parseable" - expect(out).to include("foo=bar2") - end - end - - context "with env overwrite" do - it "prints config with env" do - bundle "config --parseable", :env => { "BUNDLE_FOO" => "bar3" } - expect(out).to include("foo=bar3") - end - end - end - end - - describe "BUNDLE_APP_CONFIG" do - it "can be moved with an environment variable" do - ENV["BUNDLE_APP_CONFIG"] = tmp("foo/bar").to_s - bundle "install", forgotten_command_line_options(:path => "vendor/bundle") - - expect(bundled_app(".bundle")).not_to exist - expect(tmp("foo/bar/config")).to exist - expect(the_bundle).to include_gems "rack 1.0.0" - end - - it "can provide a relative path with the environment variable" do - FileUtils.mkdir_p bundled_app("omg") - Dir.chdir bundled_app("omg") - - ENV["BUNDLE_APP_CONFIG"] = "../foo" - bundle "install", forgotten_command_line_options(:path => "vendor/bundle") - - expect(bundled_app(".bundle")).not_to exist - expect(bundled_app("../foo/config")).to exist - expect(the_bundle).to include_gems "rack 1.0.0" - end - end - - describe "global" do - before(:each) { bundle :install } - - it "is the default" do - bundle "config foo global" - run "puts Bundler.settings[:foo]" - expect(out).to eq("global") - end - - it "can also be set explicitly" do - bundle! "config --global foo global" - run! "puts Bundler.settings[:foo]" - expect(out).to eq("global") - end - - it "has lower precedence than local" do - bundle "config --local foo local" - - bundle "config --global foo global" - expect(out).to match(/Your application has set foo to "local"/) - - run "puts Bundler.settings[:foo]" - expect(out).to eq("local") - end - - it "has lower precedence than env" do - begin - ENV["BUNDLE_FOO"] = "env" - - bundle "config --global foo global" - expect(out).to match(/You have a bundler environment variable for foo set to "env"/) - - run "puts Bundler.settings[:foo]" - expect(out).to eq("env") - ensure - ENV.delete("BUNDLE_FOO") - end - end - - it "can be deleted" do - bundle "config --global foo global" - bundle "config --delete foo" - - run "puts Bundler.settings[:foo] == nil" - expect(out).to eq("true") - end - - it "warns when overriding" do - bundle "config --global foo previous" - bundle "config --global foo global" - expect(out).to match(/You are replacing the current global value of foo/) - - run "puts Bundler.settings[:foo]" - expect(out).to eq("global") - end - - it "does not warn when using the same value twice" do - bundle "config --global foo value" - bundle "config --global foo value" - expect(out).not_to match(/You are replacing the current global value of foo/) - - run "puts Bundler.settings[:foo]" - expect(out).to eq("value") - end - - it "expands the path at time of setting" do - bundle "config --global local.foo .." - run "puts Bundler.settings['local.foo']" - expect(out).to eq(File.expand_path(Dir.pwd + "/..")) - end - - it "saves with parseable option" do - bundle "config --global --parseable foo value" - expect(out).to eq("foo=value") - run "puts Bundler.settings['foo']" - expect(out).to eq("value") - end - - context "when replacing a current value with the parseable flag" do - before { bundle "config --global foo value" } - it "prints the current value in a parseable format" do - bundle "config --global --parseable foo value2" - expect(out).to eq "foo=value2" - run "puts Bundler.settings['foo']" - expect(out).to eq("value2") - end - end - end - - describe "local" do - before(:each) { bundle :install } - - it "can also be set explicitly" do - bundle "config --local foo local" - run "puts Bundler.settings[:foo]" - expect(out).to eq("local") - end - - it "has higher precedence than env" do - begin - ENV["BUNDLE_FOO"] = "env" - bundle "config --local foo local" - - run "puts Bundler.settings[:foo]" - expect(out).to eq("local") - ensure - ENV.delete("BUNDLE_FOO") - end - end - - it "can be deleted" do - bundle "config --local foo local" - bundle "config --delete foo" - - run "puts Bundler.settings[:foo] == nil" - expect(out).to eq("true") - end - - it "warns when overriding" do - bundle "config --local foo previous" - bundle "config --local foo local" - expect(out).to match(/You are replacing the current local value of foo/) - - run "puts Bundler.settings[:foo]" - expect(out).to eq("local") - end - - it "expands the path at time of setting" do - bundle "config --local local.foo .." - run "puts Bundler.settings['local.foo']" - expect(out).to eq(File.expand_path(Dir.pwd + "/..")) - end - - it "can be deleted with parseable option" do - bundle "config --local foo value" - bundle "config --delete --parseable foo" - expect(out).to eq "" - run "puts Bundler.settings['foo'] == nil" - expect(out).to eq("true") - end - end - - describe "env" do - before(:each) { bundle :install } - - it "can set boolean properties via the environment" do - ENV["BUNDLE_FROZEN"] = "true" - - run "if Bundler.settings[:frozen]; puts 'true' else puts 'false' end" - expect(out).to eq("true") - end - - it "can set negative boolean properties via the environment" do - run "if Bundler.settings[:frozen]; puts 'true' else puts 'false' end" - expect(out).to eq("false") - - ENV["BUNDLE_FROZEN"] = "false" - - run "if Bundler.settings[:frozen]; puts 'true' else puts 'false' end" - expect(out).to eq("false") - - ENV["BUNDLE_FROZEN"] = "0" - - run "if Bundler.settings[:frozen]; puts 'true' else puts 'false' end" - expect(out).to eq("false") - - ENV["BUNDLE_FROZEN"] = "" - - run "if Bundler.settings[:frozen]; puts 'true' else puts 'false' end" - expect(out).to eq("false") - end - - it "can set properties with periods via the environment" do - ENV["BUNDLE_FOO__BAR"] = "baz" - - run "puts Bundler.settings['foo.bar']" - expect(out).to eq("baz") - end - end - - describe "parseable option" do - it "prints an empty string" do - bundle "config foo --parseable" - - expect(out).to eq "" - end - - it "only prints the value of the config" do - bundle "config foo local" - bundle "config foo --parseable" - - expect(out).to eq "foo=local" - end - - it "can print global config" do - bundle "config --global bar value" - bundle "config bar --parseable" - - expect(out).to eq "bar=value" - end - - it "prefers local config over global" do - bundle "config --local bar value2" - bundle "config --global bar value" - bundle "config bar --parseable" - - expect(out).to eq "bar=value2" - end - end - - describe "gem mirrors" do - before(:each) { bundle :install } - - it "configures mirrors using keys with `mirror.`" do - bundle "config --local mirror.http://gems.example.org http://gem-mirror.example.org" - run(<<-E) -Bundler.settings.gem_mirrors.each do |k, v| - puts "\#{k} => \#{v}" -end -E - expect(out).to eq("http://gems.example.org/ => http://gem-mirror.example.org/") - end - end - - describe "quoting" do - before(:each) { gemfile "# no gems" } - let(:long_string) do - "--with-xml2-include=/usr/pkg/include/libxml2 --with-xml2-lib=/usr/pkg/lib " \ - "--with-xslt-dir=/usr/pkg" - end - - it "saves quotes" do - bundle "config foo something\\'" - run "puts Bundler.settings[:foo]" - expect(out).to eq("something'") - end - - it "doesn't return quotes around values", :ruby => "1.9" do - bundle "config foo '1'" - run "puts Bundler.settings.send(:global_config_file).read" - expect(out).to include('"1"') - run "puts Bundler.settings[:foo]" - expect(out).to eq("1") - end - - it "doesn't duplicate quotes around values", :if => (RUBY_VERSION >= "2.1") do - bundled_app(".bundle").mkpath - File.open(bundled_app(".bundle/config"), "w") do |f| - f.write 'BUNDLE_FOO: "$BUILD_DIR"' - end - - bundle "config bar baz" - run "puts Bundler.settings.send(:local_config_file).read" - - # Starting in Ruby 2.1, YAML automatically adds double quotes - # around some values, including $ and newlines. - expect(out).to include('BUNDLE_FOO: "$BUILD_DIR"') - end - - it "doesn't duplicate quotes around long wrapped values" do - bundle "config foo #{long_string}" - - run "puts Bundler.settings[:foo]" - expect(out).to eq(long_string) - - bundle "config bar baz" - - run "puts Bundler.settings[:foo]" - expect(out).to eq(long_string) - end - end - - describe "very long lines" do - before(:each) { bundle :install } - - let(:long_string) do - "--with-xml2-include=/usr/pkg/include/libxml2 --with-xml2-lib=/usr/pkg/lib " \ - "--with-xslt-dir=/usr/pkg" - end - - let(:long_string_without_special_characters) do - "here is quite a long string that will wrap to a second line but will not be " \ - "surrounded by quotes" - end - - it "doesn't wrap values" do - bundle "config foo #{long_string}" - run "puts Bundler.settings[:foo]" - expect(out).to match(long_string) - end - - it "can read wrapped unquoted values" do - bundle "config foo #{long_string_without_special_characters}" - run "puts Bundler.settings[:foo]" - expect(out).to match(long_string_without_special_characters) - end - end -end - -RSpec.describe "setting gemfile via config" do - context "when only the non-default Gemfile exists" do - it "persists the gemfile location to .bundle/config" do - File.open(bundled_app("NotGemfile"), "w") do |f| - f.write <<-G - source "file://#{gem_repo1}" - gem 'rack' - G - end - - bundle "config --local gemfile #{bundled_app("NotGemfile")}" - expect(File.exist?(".bundle/config")).to eq(true) - - bundle "config" - expect(out).to include("NotGemfile") - end - end -end diff --git a/spec/bundler/commands/console_spec.rb b/spec/bundler/commands/console_spec.rb deleted file mode 100644 index 9bf66e8f5b..0000000000 --- a/spec/bundler/commands/console_spec.rb +++ /dev/null @@ -1,106 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe "bundle console", :bundler => "< 2" do - before :each do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - gem "activesupport", :group => :test - gem "rack_middleware", :group => :development - G - end - - it "starts IRB with the default group loaded" do - bundle "console" do |input, _, _| - input.puts("puts RACK") - input.puts("exit") - end - expect(out).to include("0.9.1") - end - - it "uses IRB as default console" do - bundle "console" do |input, _, _| - input.puts("__method__") - input.puts("exit") - end - expect(out).to include(":irb_binding") - end - - it "starts another REPL if configured as such" do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "pry" - G - bundle "config console pry" - - bundle "console" do |input, _, _| - input.puts("__method__") - input.puts("exit") - end - expect(out).to include(":__pry__") - end - - it "falls back to IRB if the other REPL isn't available" do - bundle "config console pry" - # make sure pry isn't there - - bundle "console" do |input, _, _| - input.puts("__method__") - input.puts("exit") - end - expect(out).to include(":irb_binding") - end - - it "doesn't load any other groups" do - bundle "console" do |input, _, _| - input.puts("puts ACTIVESUPPORT") - input.puts("exit") - end - expect(out).to include("NameError") - end - - describe "when given a group" do - it "loads the given group" do - bundle "console test" do |input, _, _| - input.puts("puts ACTIVESUPPORT") - input.puts("exit") - end - expect(out).to include("2.3.5") - end - - it "loads the default group" do - bundle "console test" do |input, _, _| - input.puts("puts RACK") - input.puts("exit") - end - expect(out).to include("0.9.1") - end - - it "doesn't load other groups" do - bundle "console test" do |input, _, _| - input.puts("puts RACK_MIDDLEWARE") - input.puts("exit") - end - expect(out).to include("NameError") - end - end - - it "performs an automatic bundle install" do - gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - gem "activesupport", :group => :test - gem "rack_middleware", :group => :development - gem "foo" - G - - bundle "config auto_install 1" - bundle :console do |input, _, _| - input.puts("puts 'hello'") - input.puts("exit") - end - expect(out).to include("Installing foo 1.0") - expect(out).to include("hello") - expect(the_bundle).to include_gems "foo 1.0" - end -end diff --git a/spec/bundler/commands/doctor_spec.rb b/spec/bundler/commands/doctor_spec.rb deleted file mode 100644 index 2572d4ff4d..0000000000 --- a/spec/bundler/commands/doctor_spec.rb +++ /dev/null @@ -1,61 +0,0 @@ -# frozen_string_literal: true - -require "stringio" -require "bundler/cli" -require "bundler/cli/doctor" - -RSpec.describe "bundle doctor" do - before(:each) do - @stdout = StringIO.new - - [:error, :warn].each do |method| - allow(Bundler.ui).to receive(method).and_wrap_original do |m, message| - m.call message - @stdout.puts message - end - end - end - - it "exits with no message if the installed gem has no C extensions" do - install_gemfile! <<-G - source "file://#{gem_repo1}" - gem "rack" - G - - expect { Bundler::CLI::Doctor.new({}).run }.not_to raise_error - expect(@stdout.string).to be_empty - end - - it "exits with no message if the installed gem's C extension dylib breakage is fine" do - install_gemfile! <<-G - source "file://#{gem_repo1}" - gem "rack" - G - - doctor = Bundler::CLI::Doctor.new({}) - expect(doctor).to receive(:bundles_for_gem).exactly(2).times.and_return ["/path/to/rack/rack.bundle"] - expect(doctor).to receive(:dylibs).exactly(2).times.and_return ["/usr/lib/libSystem.dylib"] - allow(File).to receive(:exist?).and_call_original - allow(File).to receive(:exist?).with("/usr/lib/libSystem.dylib").and_return(true) - expect { doctor.run }.not_to(raise_error, @stdout.string) - expect(@stdout.string).to be_empty - end - - it "exits with a message if one of the linked libraries is missing" do - install_gemfile! <<-G - source "file://#{gem_repo1}" - gem "rack" - G - - doctor = Bundler::CLI::Doctor.new({}) - expect(doctor).to receive(:bundles_for_gem).exactly(2).times.and_return ["/path/to/rack/rack.bundle"] - expect(doctor).to receive(:dylibs).exactly(2).times.and_return ["/usr/local/opt/icu4c/lib/libicui18n.57.1.dylib"] - allow(File).to receive(:exist?).and_call_original - allow(File).to receive(:exist?).with("/usr/local/opt/icu4c/lib/libicui18n.57.1.dylib").and_return(false) - expect { doctor.run }.to raise_error(Bundler::ProductionError, strip_whitespace(<<-E).strip), @stdout.string - The following gems are missing OS dependencies: - * bundler: /usr/local/opt/icu4c/lib/libicui18n.57.1.dylib - * rack: /usr/local/opt/icu4c/lib/libicui18n.57.1.dylib - E - end -end diff --git a/spec/bundler/commands/exec_spec.rb b/spec/bundler/commands/exec_spec.rb deleted file mode 100644 index 894db8cb36..0000000000 --- a/spec/bundler/commands/exec_spec.rb +++ /dev/null @@ -1,799 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe "bundle exec" do - let(:system_gems_to_install) { %w[rack-1.0.0 rack-0.9.1] } - before :each do - system_gems(system_gems_to_install, :path => :bundle_path) - end - - it "activates the correct gem" do - gemfile <<-G - gem "rack", "0.9.1" - G - - bundle "exec rackup" - expect(out).to eq("0.9.1") - end - - it "works when the bins are in ~/.bundle" do - install_gemfile <<-G - gem "rack" - G - - bundle "exec rackup" - expect(out).to eq("1.0.0") - end - - it "works when running from a random directory", :ruby_repo do - install_gemfile <<-G - gem "rack" - G - - bundle "exec 'cd #{tmp("gems")} && rackup'", :env => { :RUBYOPT => "-r#{spec_dir.join("support/hax")}" } - - expect(out).to include("1.0.0") - end - - it "works when exec'ing something else" do - install_gemfile 'gem "rack"' - bundle "exec echo exec" - expect(out).to eq("exec") - end - - it "works when exec'ing to ruby" do - install_gemfile 'gem "rack"' - bundle "exec ruby -e 'puts %{hi}'", :env => { :RUBYOPT => "-r#{spec_dir.join("support/hax")}" } - expect(out).to eq("hi") - end - - it "accepts --verbose" do - install_gemfile 'gem "rack"' - bundle "exec --verbose echo foobar" - expect(out).to eq("foobar") - end - - it "passes --verbose to command if it is given after the command" do - install_gemfile 'gem "rack"' - bundle "exec echo --verbose" - expect(out).to eq("--verbose") - end - - it "handles --keep-file-descriptors" do - require "tempfile" - - command = Tempfile.new("io-test") - command.sync = true - command.write <<-G - if ARGV[0] - IO.for_fd(ARGV[0].to_i) - else - require 'tempfile' - io = Tempfile.new("io-test-fd") - args = %W[#{Gem.ruby} -I#{lib} #{bindir.join("bundle")} exec --keep-file-descriptors #{Gem.ruby} #{command.path} \#{io.to_i}] - args << { io.to_i => io } if RUBY_VERSION >= "2.0" - exec(*args) - end - G - - install_gemfile "" - with_env_vars "RUBYOPT" => "-r#{spec_dir.join("support/hax")}" do - sys_exec "#{Gem.ruby} #{command.path}" - end - - if Bundler.current_ruby.ruby_2? - expect(out).to eq("") - else - expect(out).to eq("Ruby version #{RUBY_VERSION} defaults to keeping non-standard file descriptors on Kernel#exec.") - end - - expect(err).to lack_errors - end - - it "accepts --keep-file-descriptors" do - install_gemfile "" - bundle "exec --keep-file-descriptors echo foobar" - - expect(err).to lack_errors - end - - it "can run a command named --verbose" do - install_gemfile 'gem "rack"' - File.open("--verbose", "w") do |f| - f.puts "#!/bin/sh" - f.puts "echo foobar" - end - File.chmod(0o744, "--verbose") - with_path_as(".") do - bundle "exec -- --verbose" - end - expect(out).to eq("foobar") - end - - it "handles different versions in different bundles" do - build_repo2 do - build_gem "rack_two", "1.0.0" do |s| - s.executables = "rackup" - end - end - - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "rack", "0.9.1" - G - - Dir.chdir bundled_app2 do - install_gemfile bundled_app2("Gemfile"), <<-G - source "file://#{gem_repo2}" - gem "rack_two", "1.0.0" - G - end - - bundle! "exec rackup" - - expect(out).to eq("0.9.1") - - Dir.chdir bundled_app2 do - bundle! "exec rackup" - expect(out).to eq("1.0.0") - end - end - - it "handles gems installed with --without" do - install_gemfile <<-G, forgotten_command_line_options(:without => "middleware") - source "file://#{gem_repo1}" - gem "rack" # rack 0.9.1 and 1.0 exist - - group :middleware do - gem "rack_middleware" # rack_middleware depends on rack 0.9.1 - end - G - - bundle "exec rackup" - - expect(out).to eq("0.9.1") - expect(the_bundle).not_to include_gems "rack_middleware 1.0" - end - - it "does not duplicate already exec'ed RUBYOPT" do - install_gemfile <<-G - gem "rack" - G - - rubyopt = ENV["RUBYOPT"] - rubyopt = "-rbundler/setup #{rubyopt}" - - bundle "exec 'echo $RUBYOPT'" - expect(out).to have_rubyopts(rubyopt) - - bundle "exec 'echo $RUBYOPT'", :env => { "RUBYOPT" => rubyopt } - expect(out).to have_rubyopts(rubyopt) - end - - it "does not duplicate already exec'ed RUBYLIB", :ruby_repo do - install_gemfile <<-G - gem "rack" - G - - rubylib = ENV["RUBYLIB"] - rubylib = "#{rubylib}".split(File::PATH_SEPARATOR).unshift "#{bundler_path}" - rubylib = rubylib.uniq.join(File::PATH_SEPARATOR) - - bundle "exec 'echo $RUBYLIB'" - expect(out).to include(rubylib) - - bundle "exec 'echo $RUBYLIB'", :env => { "RUBYLIB" => rubylib } - expect(out).to include(rubylib) - end - - it "errors nicely when the argument doesn't exist" do - install_gemfile <<-G - gem "rack" - G - - bundle "exec foobarbaz" - expect(exitstatus).to eq(127) if exitstatus - expect(out).to include("bundler: command not found: foobarbaz") - expect(out).to include("Install missing gem executables with `bundle install`") - end - - it "errors nicely when the argument is not executable" do - install_gemfile <<-G - gem "rack" - G - - bundle "exec touch foo" - bundle "exec ./foo" - expect(exitstatus).to eq(126) if exitstatus - expect(out).to include("bundler: not executable: ./foo") - end - - it "errors nicely when no arguments are passed" do - install_gemfile <<-G - gem "rack" - G - - bundle "exec" - expect(exitstatus).to eq(128) if exitstatus - expect(out).to include("bundler: exec needs a command to run") - end - - it "raises a helpful error when exec'ing to something outside of the bundle", :ruby_repo, :rubygems => ">= 2.5.2" do - bundle! "config clean false" # want to keep the rackup binstub - install_gemfile! <<-G - source "file://#{gem_repo1}" - gem "with_license" - G - [true, false].each do |l| - bundle! "config disable_exec_load #{l}" - bundle "exec rackup" - expect(last_command.stderr).to include "can't find executable rackup for gem rack. rack is not currently included in the bundle, perhaps you meant to add it to your Gemfile?" - end - end - - # Different error message on old RG versions (before activate_bin_path) because they - # called `Kernel#gem` directly - it "raises a helpful error when exec'ing to something outside of the bundle", :rubygems => "< 2.5.2" do - install_gemfile! <<-G - source "file://#{gem_repo1}" - gem "with_license" - G - [true, false].each do |l| - bundle! "config disable_exec_load #{l}" - bundle "exec rackup", :env => { :RUBYOPT => "-r#{spec_dir.join("support/hax")}" } - expect(last_command.stderr).to include "rack is not part of the bundle. Add it to your Gemfile." - end - end - - describe "with help flags" do - each_prefix = proc do |string, &blk| - 1.upto(string.length) {|l| blk.call(string[0, l]) } - end - each_prefix.call("exec") do |exec| - describe "when #{exec} is used" do - before(:each) do - install_gemfile <<-G - gem "rack" - G - - create_file("print_args", <<-'RUBY') - #!/usr/bin/env ruby - puts "args: #{ARGV.inspect}" - RUBY - bundled_app("print_args").chmod(0o755) - end - - it "shows executable's man page when --help is after the executable" do - bundle "#{exec} print_args --help" - expect(out).to eq('args: ["--help"]') - end - - it "shows executable's man page when --help is after the executable and an argument" do - bundle "#{exec} print_args foo --help" - expect(out).to eq('args: ["foo", "--help"]') - - bundle "#{exec} print_args foo bar --help" - expect(out).to eq('args: ["foo", "bar", "--help"]') - - bundle "#{exec} print_args foo --help bar" - expect(out).to eq('args: ["foo", "--help", "bar"]') - end - - it "shows executable's man page when the executable has a -" do - FileUtils.mv(bundled_app("print_args"), bundled_app("docker-template")) - bundle "#{exec} docker-template build discourse --help" - expect(out).to eq('args: ["build", "discourse", "--help"]') - end - - it "shows executable's man page when --help is after another flag" do - bundle "#{exec} print_args --bar --help" - expect(out).to eq('args: ["--bar", "--help"]') - end - - it "uses executable's original behavior for -h" do - bundle "#{exec} print_args -h" - expect(out).to eq('args: ["-h"]') - end - - it "shows bundle-exec's man page when --help is between exec and the executable", :ruby_repo do - with_fake_man do - bundle "#{exec} --help cat" - end - expect(out).to include(%(["#{root}/man/bundle-exec.1"])) - end - - it "shows bundle-exec's man page when --help is before exec", :ruby_repo do - with_fake_man do - bundle "--help #{exec}" - end - expect(out).to include(%(["#{root}/man/bundle-exec.1"])) - end - - it "shows bundle-exec's man page when -h is before exec", :ruby_repo do - with_fake_man do - bundle "-h #{exec}" - end - expect(out).to include(%(["#{root}/man/bundle-exec.1"])) - end - - it "shows bundle-exec's man page when --help is after exec", :ruby_repo do - with_fake_man do - bundle "#{exec} --help" - end - expect(out).to include(%(["#{root}/man/bundle-exec.1"])) - end - - it "shows bundle-exec's man page when -h is after exec", :ruby_repo do - with_fake_man do - bundle "#{exec} -h" - end - expect(out).to include(%(["#{root}/man/bundle-exec.1"])) - end - end - end - end - - describe "with gem executables" do - describe "run from a random directory" do - before(:each) do - install_gemfile <<-G - gem "rack" - G - end - - it "works when unlocked", :ruby_repo do - bundle "exec 'cd #{tmp("gems")} && rackup'", :env => { :RUBYOPT => "-r#{spec_dir.join("support/hax")}" } - expect(out).to eq("1.0.0") - expect(out).to include("1.0.0") - end - - it "works when locked", :ruby_repo do - expect(the_bundle).to be_locked - bundle "exec 'cd #{tmp("gems")} && rackup'", :env => { :RUBYOPT => "-r#{spec_dir.join("support/hax")}" } - expect(out).to include("1.0.0") - end - end - - describe "from gems bundled via :path" do - before(:each) do - build_lib "fizz", :path => home("fizz") do |s| - s.executables = "fizz" - end - - install_gemfile <<-G - gem "fizz", :path => "#{File.expand_path(home("fizz"))}" - G - end - - it "works when unlocked" do - bundle "exec fizz" - expect(out).to eq("1.0") - end - - it "works when locked" do - expect(the_bundle).to be_locked - - bundle "exec fizz" - expect(out).to eq("1.0") - end - end - - describe "from gems bundled via :git" do - before(:each) do - build_git "fizz_git" do |s| - s.executables = "fizz_git" - end - - install_gemfile <<-G - gem "fizz_git", :git => "#{lib_path("fizz_git-1.0")}" - G - end - - it "works when unlocked" do - bundle "exec fizz_git" - expect(out).to eq("1.0") - end - - it "works when locked" do - expect(the_bundle).to be_locked - bundle "exec fizz_git" - expect(out).to eq("1.0") - end - end - - describe "from gems bundled via :git with no gemspec" do - before(:each) do - build_git "fizz_no_gemspec", :gemspec => false do |s| - s.executables = "fizz_no_gemspec" - end - - install_gemfile <<-G - gem "fizz_no_gemspec", "1.0", :git => "#{lib_path("fizz_no_gemspec-1.0")}" - G - end - - it "works when unlocked" do - bundle "exec fizz_no_gemspec" - expect(out).to eq("1.0") - end - - it "works when locked" do - expect(the_bundle).to be_locked - bundle "exec fizz_no_gemspec" - expect(out).to eq("1.0") - end - end - end - - it "performs an automatic bundle install" do - gemfile <<-G - source "file://#{gem_repo1}" - gem "rack", "0.9.1" - gem "foo" - G - - bundle "config auto_install 1" - bundle "exec rackup" - expect(out).to include("Installing foo 1.0") - end - - describe "with gems bundled via :path with invalid gemspecs" do - it "outputs the gemspec validation errors", :rubygems => ">= 1.7.2" do - build_lib "foo" - - gemspec = lib_path("foo-1.0").join("foo.gemspec").to_s - File.open(gemspec, "w") do |f| - f.write <<-G - Gem::Specification.new do |s| - s.name = 'foo' - s.version = '1.0' - s.summary = 'TODO: Add summary' - s.authors = 'Me' - end - G - end - - install_gemfile <<-G - gem "foo", :path => "#{lib_path("foo-1.0")}" - G - - bundle "exec irb" - - expect(err).to match("The gemspec at #{lib_path("foo-1.0").join("foo.gemspec")} is not valid") - expect(err).to match('"TODO" is not a summary') - end - end - - describe "with gems bundled for deployment" do - it "works when calling bundler from another script" do - gemfile <<-G - module Monkey - def bin_path(a,b,c) - raise Gem::GemNotFoundException.new('Fail') - end - end - Bundler.rubygems.extend(Monkey) - G - bundle "install --deployment" - bundle "exec ruby -e '`#{bindir.join("bundler")} -v`; puts $?.success?'", :env => { :RUBYOPT => "-r#{spec_dir.join("support/hax")}" } - expect(out).to match("true") - end - end - - context "`load`ing a ruby file instead of `exec`ing" do - let(:path) { bundled_app("ruby_executable") } - let(:shebang) { "#!/usr/bin/env ruby" } - let(:executable) { <<-RUBY.gsub(/^ */, "").strip } - #{shebang} - - require "rack" - puts "EXEC: \#{caller.grep(/load/).empty? ? 'exec' : 'load'}" - puts "ARGS: \#{$0} \#{ARGV.join(' ')}" - puts "RACK: \#{RACK}" - process_title = `ps -o args -p \#{Process.pid}`.split("\n", 2).last.strip - puts "PROCESS: \#{process_title}" - RUBY - - before do - path.open("w") {|f| f << executable } - path.chmod(0o755) - - install_gemfile <<-G - gem "rack" - G - end - - let(:exec) { "EXEC: load" } - let(:args) { "ARGS: #{path} arg1 arg2" } - let(:rack) { "RACK: 1.0.0" } - let(:process) do - title = "PROCESS: #{path}" - title += " arg1 arg2" if RUBY_VERSION >= "2.1" - title - end - let(:exit_code) { 0 } - let(:expected) { [exec, args, rack, process].join("\n") } - let(:expected_err) { "" } - - subject { bundle "exec #{path} arg1 arg2", :env => { :RUBYOPT => "-r#{spec_dir.join("support/hax")}" } } - - shared_examples_for "it runs" do - it "like a normally executed executable" do - subject - expect(exitstatus).to eq(exit_code) if exitstatus - expect(last_command.stderr).to eq(expected_err) - expect(last_command.stdout).to eq(expected) - end - end - - it_behaves_like "it runs" - - context "the executable exits explicitly" do - let(:executable) { super() << "\nexit #{exit_code}\nputs 'POST_EXIT'\n" } - - context "with exit 0" do - it_behaves_like "it runs" - end - - context "with exit 99" do - let(:exit_code) { 99 } - it_behaves_like "it runs" - end - end - - context "the executable exits by SignalException" do - let(:executable) do - ex = super() - ex << "\n" - if LessThanProc.with(RUBY_VERSION).call("1.9") - # Ruby < 1.9 needs a flush for a exit by signal, later - # rubies do not - ex << "STDOUT.flush\n" - end - ex << "raise SignalException, 'SIGTERM'\n" - ex - end - let(:expected_err) { ENV["TRAVIS"] ? "Terminated" : "" } - let(:exit_code) do - # signal mask 128 + plus signal 15 -> TERM - # this is specified by C99 - 128 + 15 - end - it_behaves_like "it runs" - end - - context "the executable is empty", :bundler => "< 2" do - let(:executable) { "" } - - let(:exit_code) { 0 } - let(:expected) { "#{path} is empty" } - let(:expected_err) { "" } - if LessThanProc.with(RUBY_VERSION).call("1.9") - # Kernel#exec in ruby < 1.9 will raise Errno::ENOEXEC if the command content is empty, - # even if the command is set as an executable. - pending "Kernel#exec is different" - else - it_behaves_like "it runs" - end - end - - context "the executable is empty", :bundler => "2" do - let(:executable) { "" } - - let(:exit_code) { 0 } - let(:expected_err) { "#{path} is empty" } - let(:expected) { "" } - it_behaves_like "it runs" - end - - context "the executable raises", :bundler => "< 2" do - let(:executable) { super() << "\nraise 'ERROR'" } - let(:exit_code) { 1 } - let(:expected) { super() << "\nbundler: failed to load command: #{path} (#{path})" } - let(:expected_err) do - "RuntimeError: ERROR\n #{path}:10" + - (Bundler.current_ruby.ruby_18? ? "" : ":in `'") - end - it_behaves_like "it runs" - end - - context "the executable raises", :bundler => "2" do - let(:executable) { super() << "\nraise 'ERROR'" } - let(:exit_code) { 1 } - let(:expected_err) do - "bundler: failed to load command: #{path} (#{path})" \ - "\nRuntimeError: ERROR\n #{path}:10:in `'" - end - it_behaves_like "it runs" - end - - context "when the file uses the current ruby shebang", :ruby_repo do - let(:shebang) { "#!#{Gem.ruby}" } - it_behaves_like "it runs" - end - - context "when Bundler.setup fails", :bundler => "< 2" do - before do - gemfile <<-G - gem 'rack', '2' - G - ENV["BUNDLER_FORCE_TTY"] = "true" - end - - let(:exit_code) { Bundler::GemNotFound.new.status_code } - let(:expected) { <<-EOS.strip } -\e[31mCould not find gem 'rack (= 2)' in any of the gem sources listed in your Gemfile.\e[0m -\e[33mRun `bundle install` to install missing gems.\e[0m - EOS - - it_behaves_like "it runs" - end - - context "when Bundler.setup fails", :bundler => "2" do - before do - gemfile <<-G - gem 'rack', '2' - G - ENV["BUNDLER_FORCE_TTY"] = "true" - end - - let(:exit_code) { Bundler::GemNotFound.new.status_code } - let(:expected) { <<-EOS.strip } -\e[31mCould not find gem 'rack (= 2)' in locally installed gems. -The source contains 'rack' at: 1.0.0\e[0m -\e[33mRun `bundle install` to install missing gems.\e[0m - EOS - - it_behaves_like "it runs" - end - - context "when the executable exits non-zero via at_exit" do - let(:executable) { super() + "\n\nat_exit { $! ? raise($!) : exit(1) }" } - let(:exit_code) { 1 } - - it_behaves_like "it runs" - end - - context "when disable_exec_load is set" do - let(:exec) { "EXEC: exec" } - let(:process) { "PROCESS: ruby #{path} arg1 arg2" } - - before do - bundle "config disable_exec_load true" - end - - it_behaves_like "it runs" - end - - context "regarding $0 and __FILE__" do - let(:executable) { super() + <<-'RUBY' } - - puts "$0: #{$0.inspect}" - puts "__FILE__: #{__FILE__.inspect}" - RUBY - - let(:expected) { super() + <<-EOS.chomp } - -$0: #{path.to_s.inspect} -__FILE__: #{path.to_s.inspect} - EOS - - it_behaves_like "it runs" - - context "when the path is relative" do - let(:path) { super().relative_path_from(bundled_app) } - - if LessThanProc.with(RUBY_VERSION).call("1.9") - pending "relative paths have ./ __FILE__" - else - it_behaves_like "it runs" - end - end - - context "when the path is relative with a leading ./" do - let(:path) { Pathname.new("./#{super().relative_path_from(Pathname.pwd)}") } - - if LessThanProc.with(RUBY_VERSION).call("< 1.9") - pending "relative paths with ./ have absolute __FILE__" - else - it_behaves_like "it runs" - end - end - end - - context "signals being trapped by bundler" do - let(:executable) { strip_whitespace <<-RUBY } - #{shebang} - begin - Thread.new do - puts 'Started' # For process sync - STDOUT.flush - sleep 1 # ignore quality_spec - raise "Didn't receive INT at all" - end.join - rescue Interrupt - puts "foo" - end - RUBY - - it "receives the signal" do - skip "popen3 doesn't provide a way to get pid " unless RUBY_VERSION >= "1.9.3" - - bundle("exec #{path}") do |_, o, thr| - o.gets # Consumes 'Started' and ensures that thread has started - Process.kill("INT", thr.pid) - end - - expect(out).to eq("foo") - end - end - end - - context "nested bundle exec", :ruby_repo do - let(:system_gems_to_install) { super() << :bundler } - - context "with shared gems disabled" do - before do - gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - G - bundle :install, :system_bundler => true, :path => "vendor/bundler" - end - - it "overrides disable_shared_gems so bundler can be found" do - file = bundled_app("file_that_bundle_execs.rb") - create_file(file, <<-RB) - #!#{Gem.ruby} - puts `bundle exec echo foo` - RB - file.chmod(0o777) - bundle! "exec #{file}", :system_bundler => true - expect(out).to eq("foo") - end - end - - context "with a system gem that shadows a default gem" do - let(:openssl_version) { "99.9.9" } - let(:expected) { ruby "gem 'openssl', '< 999999'; require 'openssl'; puts OpenSSL::VERSION", :artifice => nil } - - it "only leaves the default gem in the stdlib available" do - skip "openssl isn't a default gem" if expected.empty? - - install_gemfile! "" # must happen before installing the broken system gem - - build_repo4 do - build_gem "openssl", openssl_version do |s| - s.write("lib/openssl.rb", <<-RB) - raise "custom openssl should not be loaded, it's not in the gemfile!" - RB - end - end - - system_gems(:bundler, "openssl-#{openssl_version}", :gem_repo => gem_repo4) - - file = bundled_app("require_openssl.rb") - create_file(file, <<-RB) - #!/usr/bin/env ruby - require "openssl" - puts OpenSSL::VERSION - warn Gem.loaded_specs.values.map(&:full_name) - RB - file.chmod(0o777) - - aggregate_failures do - expect(bundle!("exec #{file}", :artifice => nil)).to eq(expected) - expect(bundle!("exec bundle exec #{file}", :artifice => nil)).to eq(expected) - expect(bundle!("exec ruby #{file}", :artifice => nil)).to eq(expected) - # Ignore expectaion for default bundler gem conflict. - unless ENV["BUNDLER_SPEC_SUB_VERSION"] - expect(run!(file.read, :no_lib => true, :artifice => nil)).to eq(expected) - end - end - - # sanity check that we get the newer, custom version without bundler - sys_exec("#{Gem.ruby} #{file}") - expect(last_command.stderr).to include("custom openssl should not be loaded") - end - end - end -end diff --git a/spec/bundler/commands/help_spec.rb b/spec/bundler/commands/help_spec.rb deleted file mode 100644 index cd6f13756c..0000000000 --- a/spec/bundler/commands/help_spec.rb +++ /dev/null @@ -1,98 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe "bundle help" do - # RubyGems 1.4+ no longer load gem plugins so this test is no longer needed - it "complains if older versions of bundler are installed", :rubygems => "< 1.4" do - system_gems "bundler-0.8.1" - - bundle "help" - expect(err).to include("older than 0.9") - expect(err).to include("running `gem cleanup bundler`.") - end - - it "uses mann when available", :ruby_repo do - with_fake_man do - bundle "help gemfile" - end - expect(out).to eq(%(["#{root}/man/gemfile.5"])) - end - - it "prefixes bundle commands with bundle- when finding the groff files", :ruby_repo do - with_fake_man do - bundle "help install" - end - expect(out).to eq(%(["#{root}/man/bundle-install.1"])) - end - - it "simply outputs the txt file when there is no man on the path", :ruby_repo do - with_path_as("") do - bundle "help install" - end - expect(out).to match(/BUNDLE-INSTALL/) - end - - it "still outputs the old help for commands that do not have man pages yet" do - bundle "help version" - expect(out).to include("Prints the bundler's version information") - end - - it "looks for a binary and executes it with --help option if it's named bundler-" do - File.open(tmp("bundler-testtasks"), "w", 0o755) do |f| - f.puts "#!/usr/bin/env ruby\nputs ARGV.join(' ')\n" - end - - with_path_added(tmp) do - bundle "help testtasks" - end - - expect(exitstatus).to be_zero if exitstatus - expect(out).to eq("--help") - end - - it "is called when the --help flag is used after the command", :ruby_repo do - with_fake_man do - bundle "install --help" - end - expect(out).to eq(%(["#{root}/man/bundle-install.1"])) - end - - it "is called when the --help flag is used before the command", :ruby_repo do - with_fake_man do - bundle "--help install" - end - expect(out).to eq(%(["#{root}/man/bundle-install.1"])) - end - - it "is called when the -h flag is used before the command", :ruby_repo do - with_fake_man do - bundle "-h install" - end - expect(out).to eq(%(["#{root}/man/bundle-install.1"])) - end - - it "is called when the -h flag is used after the command", :ruby_repo do - with_fake_man do - bundle "install -h" - end - expect(out).to eq(%(["#{root}/man/bundle-install.1"])) - end - - it "has helpful output when using --help flag for a non-existent command" do - with_fake_man do - bundle "instill -h" - end - expect(out).to include('Could not find command "instill".') - end - - it "is called when only using the --help flag", :ruby_repo do - with_fake_man do - bundle "--help" - end - expect(out).to eq(%(["#{root}/man/bundle.1"])) - - with_fake_man do - bundle "-h" - end - expect(out).to eq(%(["#{root}/man/bundle.1"])) - end -end diff --git a/spec/bundler/commands/info_spec.rb b/spec/bundler/commands/info_spec.rb deleted file mode 100644 index a9ab8fc210..0000000000 --- a/spec/bundler/commands/info_spec.rb +++ /dev/null @@ -1,57 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe "bundle info" do - context "info from specific gem in gemfile" do - before do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "rails" - G - end - - it "prints information about the current gem" do - bundle "info rails" - expect(out).to include "* rails (2.3.2) -\tSummary: This is just a fake gem for testing -\tHomepage: http://example.com" - expect(out).to match(%r{Path\: .*\/rails\-2\.3\.2}) - end - - context "given a gem that is not installed" do - it "prints missing gem error" do - bundle "info foo" - expect(out).to eq "Could not find gem 'foo'." - end - end - - context "given a default gem shippped in ruby", :ruby_repo do - it "prints information about the default gem", :if => (RUBY_VERSION >= "2.0") do - bundle "info rdoc" - expect(out).to include("* rdoc") - expect(out).to include("Default Gem: yes") - end - end - - context "when gem does not have homepage" do - before do - build_repo1 do - build_gem "rails", "2.3.2" do |s| - s.executables = "rails" - s.summary = "Just another test gem" - end - end - end - - it "excludes the homepage field from the output" do - expect(out).to_not include("Homepage:") - end - end - - context "given --path option" do - it "prints the path to the gem" do - bundle "info rails" - expect(out).to match(%r{.*\/rails\-2\.3\.2}) - end - end - end -end diff --git a/spec/bundler/commands/init_spec.rb b/spec/bundler/commands/init_spec.rb deleted file mode 100644 index c1cd7b90c8..0000000000 --- a/spec/bundler/commands/init_spec.rb +++ /dev/null @@ -1,163 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe "bundle init" do - it "generates a Gemfile", :bundler => "< 2" do - bundle! :init - expect(out).to include("Writing new Gemfile") - expect(bundled_app("Gemfile")).to be_file - end - - it "generates a gems.rb", :bundler => "2" do - bundle! :init - expect(out).to include("Writing new gems.rb") - expect(bundled_app("gems.rb")).to be_file - end - - context "when a Gemfile already exists", :bundler => "< 2" do - before do - create_file "Gemfile", <<-G - gem "rails" - G - end - - it "does not change existing Gemfiles" do - expect { bundle :init }.not_to change { File.read(bundled_app("Gemfile")) } - end - - it "notifies the user that an existing Gemfile already exists" do - bundle :init - expect(out).to include("Gemfile already exists") - end - end - - context "when gems.rb already exists", :bundler => ">= 2" do - before do - create_file("gems.rb", <<-G) - gem "rails" - G - end - - it "does not change existing Gemfiles" do - expect { bundle :init }.not_to change { File.read(bundled_app("gems.rb")) } - end - - it "notifies the user that an existing gems.rb already exists" do - bundle :init - expect(out).to include("gems.rb already exists") - end - end - - context "when a Gemfile exists in a parent directory", :bundler => "< 2" do - let(:subdir) { "child_dir" } - - it "lets users generate a Gemfile in a child directory" do - bundle! :init - - FileUtils.mkdir bundled_app(subdir) - - Dir.chdir bundled_app(subdir) do - bundle! :init - end - - expect(out).to include("Writing new Gemfile") - expect(bundled_app("#{subdir}/Gemfile")).to be_file - end - end - - context "when a gems.rb file exists in a parent directory", :bundler => ">= 2" do - let(:subdir) { "child_dir" } - - it "lets users generate a Gemfile in a child directory" do - bundle! :init - - FileUtils.mkdir bundled_app(subdir) - - Dir.chdir bundled_app(subdir) do - bundle! :init - end - - expect(out).to include("Writing new gems.rb") - expect(bundled_app("#{subdir}/gems.rb")).to be_file - end - end - - context "given --gemspec option", :bundler => "< 2" do - let(:spec_file) { tmp.join("test.gemspec") } - - it "should generate from an existing gemspec" do - File.open(spec_file, "w") do |file| - file << <<-S - Gem::Specification.new do |s| - s.name = 'test' - s.add_dependency 'rack', '= 1.0.1' - s.add_development_dependency 'rspec', '1.2' - end - S - end - - bundle :init, :gemspec => spec_file - - gemfile = if Bundler::VERSION[0, 2] == "1." - bundled_app("Gemfile").read - else - bundled_app("gems.rb").read - end - expect(gemfile).to match(%r{source 'https://rubygems.org'}) - expect(gemfile.scan(/gem "rack", "= 1.0.1"/).size).to eq(1) - expect(gemfile.scan(/gem "rspec", "= 1.2"/).size).to eq(1) - expect(gemfile.scan(/group :development/).size).to eq(1) - end - - context "when gemspec file is invalid" do - it "notifies the user that specification is invalid" do - File.open(spec_file, "w") do |file| - file << <<-S - Gem::Specification.new do |s| - s.name = 'test' - s.invalid_method_name - end - S - end - - bundle :init, :gemspec => spec_file - expect(last_command.bundler_err).to include("There was an error while loading `test.gemspec`") - end - end - end - - context "when init_gems_rb setting is enabled" do - before { bundle "config init_gems_rb true" } - - context "given --gemspec option", :bundler => "< 2" do - let(:spec_file) { tmp.join("test.gemspec") } - - before do - File.open(spec_file, "w") do |file| - file << <<-S - Gem::Specification.new do |s| - s.name = 'test' - s.add_dependency 'rack', '= 1.0.1' - s.add_development_dependency 'rspec', '1.2' - end - S - end - end - - it "should generate from an existing gemspec" do - bundle :init, :gemspec => spec_file - - gemfile = bundled_app("gems.rb").read - expect(gemfile).to match(%r{source 'https://rubygems.org'}) - expect(gemfile.scan(/gem "rack", "= 1.0.1"/).size).to eq(1) - expect(gemfile.scan(/gem "rspec", "= 1.2"/).size).to eq(1) - expect(gemfile.scan(/group :development/).size).to eq(1) - end - - it "prints message to user" do - bundle :init, :gemspec => spec_file - - expect(out).to include("Writing new gems.rb") - end - end - end -end diff --git a/spec/bundler/commands/inject_spec.rb b/spec/bundler/commands/inject_spec.rb deleted file mode 100644 index 6c1994b59d..0000000000 --- a/spec/bundler/commands/inject_spec.rb +++ /dev/null @@ -1,117 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe "bundle inject", :bundler => "< 2" do - before :each do - gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - G - end - - context "without a lockfile" do - it "locks with the injected gems" do - expect(bundled_app("Gemfile.lock")).not_to exist - bundle "inject 'rack-obama' '> 0'" - expect(bundled_app("Gemfile.lock").read).to match(/rack-obama/) - end - end - - context "with a lockfile" do - before do - bundle "install" - end - - it "adds the injected gems to the Gemfile" do - expect(bundled_app("Gemfile").read).not_to match(/rack-obama/) - bundle "inject 'rack-obama' '> 0'" - expect(bundled_app("Gemfile").read).to match(/rack-obama/) - end - - it "locks with the injected gems" do - expect(bundled_app("Gemfile.lock").read).not_to match(/rack-obama/) - bundle "inject 'rack-obama' '> 0'" - expect(bundled_app("Gemfile.lock").read).to match(/rack-obama/) - end - end - - context "with injected gems already in the Gemfile" do - it "doesn't add existing gems" do - bundle "inject 'rack' '> 0'" - expect(out).to match(/cannot specify the same gem twice/i) - end - end - - context "incorrect arguments" do - it "fails when more than 2 arguments are passed" do - bundle "inject gem_name 1 v" - expect(out).to eq(<<-E.strip) -ERROR: "bundle inject" was called with arguments ["gem_name", "1", "v"] -Usage: "bundle inject GEM VERSION" - E - end - end - - context "with source option" do - it "add gem with source option in gemfile" do - bundle "inject 'foo' '>0' --source file://#{gem_repo1}" - gemfile = bundled_app("Gemfile").read - str = "gem \"foo\", \"> 0\", :source => \"file://#{gem_repo1}\"" - expect(gemfile).to include str - end - end - - context "with group option" do - it "add gem with group option in gemfile" do - bundle "inject 'rack-obama' '>0' --group=development" - gemfile = bundled_app("Gemfile").read - str = "gem \"rack-obama\", \"> 0\", :group => [:development]" - expect(gemfile).to include str - end - - it "add gem with multiple groups in gemfile" do - bundle "inject 'rack-obama' '>0' --group=development,test" - gemfile = bundled_app("Gemfile").read - str = "gem \"rack-obama\", \"> 0\", :groups => [:development, :test]" - expect(gemfile).to include str - end - end - - context "when frozen" do - before do - bundle "install" - if Bundler.feature_flag.bundler_2_mode? - bundle! "config --local deployment true" - else - bundle! "config --local frozen true" - end - end - - it "injects anyway" do - bundle "inject 'rack-obama' '> 0'" - expect(bundled_app("Gemfile").read).to match(/rack-obama/) - end - - it "locks with the injected gems" do - expect(bundled_app("Gemfile.lock").read).not_to match(/rack-obama/) - bundle "inject 'rack-obama' '> 0'" - expect(bundled_app("Gemfile.lock").read).to match(/rack-obama/) - end - - it "restores frozen afterwards" do - bundle "inject 'rack-obama' '> 0'" - config = YAML.load(bundled_app(".bundle/config").read) - expect(config["BUNDLE_DEPLOYMENT"] || config["BUNDLE_FROZEN"]).to eq("true") - end - - it "doesn't allow Gemfile changes" do - gemfile <<-G - source "file://#{gem_repo1}" - gem "rack-obama" - G - bundle "inject 'rack' '> 0'" - expect(out).to match(/trying to install in deployment mode after changing/) - - expect(bundled_app("Gemfile.lock").read).not_to match(/rack-obama/) - end - end -end diff --git a/spec/bundler/commands/install_spec.rb b/spec/bundler/commands/install_spec.rb deleted file mode 100644 index 4cb8584633..0000000000 --- a/spec/bundler/commands/install_spec.rb +++ /dev/null @@ -1,537 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe "bundle install with gem sources" do - describe "the simple case" do - it "prints output and returns if no dependencies are specified" do - gemfile <<-G - source "file://#{gem_repo1}" - G - - bundle :install - expect(out).to match(/no dependencies/) - end - - it "does not make a lockfile if the install fails" do - install_gemfile <<-G - raise StandardError, "FAIL" - G - - expect(last_command.bundler_err).to include('StandardError, "FAIL"') - expect(bundled_app("Gemfile.lock")).not_to exist - end - - it "creates a Gemfile.lock" do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - G - - expect(bundled_app("Gemfile.lock")).to exist - end - - it "does not create ./.bundle by default", :bundler => "< 2" do - gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - G - - bundle! :install # can't use install_gemfile since it sets retry - expect(bundled_app(".bundle")).not_to exist - end - - it "does not create ./.bundle by default when installing to system gems" do - gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - G - - bundle! :install, :env => { "BUNDLE_PATH__SYSTEM" => true } # can't use install_gemfile since it sets retry - expect(bundled_app(".bundle")).not_to exist - end - - it "creates lock files based on the Gemfile name" do - gemfile bundled_app("OmgFile"), <<-G - source "file://#{gem_repo1}" - gem "rack", "1.0" - G - - bundle "install --gemfile OmgFile" - - expect(bundled_app("OmgFile.lock")).to exist - end - - it "doesn't delete the lockfile if one already exists" do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem 'rack' - G - - lockfile = File.read(bundled_app("Gemfile.lock")) - - install_gemfile <<-G - raise StandardError, "FAIL" - G - - expect(File.read(bundled_app("Gemfile.lock"))).to eq(lockfile) - end - - it "does not touch the lockfile if nothing changed" do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - G - - expect { run "1" }.not_to change { File.mtime(bundled_app("Gemfile.lock")) } - end - - it "fetches gems" do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem 'rack' - G - - expect(default_bundle_path("gems/rack-1.0.0")).to exist - expect(the_bundle).to include_gems("rack 1.0.0") - end - - it "fetches gems when multiple versions are specified" do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem 'rack', "> 0.9", "< 1.0" - G - - expect(default_bundle_path("gems/rack-0.9.1")).to exist - expect(the_bundle).to include_gems("rack 0.9.1") - end - - it "fetches gems when multiple versions are specified take 2" do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem 'rack', "< 1.0", "> 0.9" - G - - expect(default_bundle_path("gems/rack-0.9.1")).to exist - expect(the_bundle).to include_gems("rack 0.9.1") - end - - it "raises an appropriate error when gems are specified using symbols" do - install_gemfile(<<-G) - source "file://#{gem_repo1}" - gem :rack - G - expect(exitstatus).to eq(4) if exitstatus - end - - it "pulls in dependencies" do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "rails" - G - - expect(the_bundle).to include_gems "actionpack 2.3.2", "rails 2.3.2" - end - - it "does the right version" do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "rack", "0.9.1" - G - - expect(the_bundle).to include_gems "rack 0.9.1" - end - - it "does not install the development dependency" do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "with_development_dependency" - G - - expect(the_bundle).to include_gems("with_development_dependency 1.0.0"). - and not_include_gems("activesupport 2.3.5") - end - - it "resolves correctly" do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "activemerchant" - gem "rails" - G - - expect(the_bundle).to include_gems "activemerchant 1.0", "activesupport 2.3.2", "actionpack 2.3.2" - end - - it "activates gem correctly according to the resolved gems" do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "activesupport", "2.3.5" - G - - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "activemerchant" - gem "rails" - G - - expect(the_bundle).to include_gems "activemerchant 1.0", "activesupport 2.3.2", "actionpack 2.3.2" - end - - it "does not reinstall any gem that is already available locally" do - system_gems "activesupport-2.3.2", :path => :bundle_path - - build_repo2 do - build_gem "activesupport", "2.3.2" do |s| - s.write "lib/activesupport.rb", "ACTIVESUPPORT = 'fail'" - end - end - - install_gemfile <<-G - source "file://#{gem_repo2}" - gem "activerecord", "2.3.2" - G - - expect(the_bundle).to include_gems "activesupport 2.3.2" - end - - it "works when the gemfile specifies gems that only exist in the system" do - build_gem "foo", :to_bundle => true - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - gem "foo" - G - - expect(the_bundle).to include_gems "rack 1.0.0", "foo 1.0.0" - end - - it "prioritizes local gems over remote gems" do - build_gem "rack", "1.0.0", :to_bundle => true do |s| - s.add_dependency "activesupport", "2.3.5" - end - - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - G - - expect(the_bundle).to include_gems "rack 1.0.0", "activesupport 2.3.5" - end - - describe "with a gem that installs multiple platforms" do - it "installs gems for the local platform as first choice" do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "platform_specific" - G - - run "require 'platform_specific' ; puts PLATFORM_SPECIFIC" - expect(out).to eq("1.0.0 #{Bundler.local_platform}") - end - - it "falls back on plain ruby" do - simulate_platform "foo-bar-baz" - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "platform_specific" - G - - run "require 'platform_specific' ; puts PLATFORM_SPECIFIC" - expect(out).to eq("1.0.0 RUBY") - end - - it "installs gems for java" do - simulate_platform "java" - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "platform_specific" - G - - run "require 'platform_specific' ; puts PLATFORM_SPECIFIC" - expect(out).to eq("1.0.0 JAVA") - end - - it "installs gems for windows" do - simulate_platform mswin - - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "platform_specific" - G - - run "require 'platform_specific' ; puts PLATFORM_SPECIFIC" - expect(out).to eq("1.0.0 MSWIN") - end - end - - describe "doing bundle install foo" do - before do - gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - G - end - - it "works" do - bundle "install", forgotten_command_line_options(:path => "vendor") - expect(the_bundle).to include_gems "rack 1.0" - end - - it "allows running bundle install --system without deleting foo", :bundler => "< 2" do - bundle "install", forgotten_command_line_options(:path => "vendor") - bundle "install", forgotten_command_line_options(:system => true) - FileUtils.rm_rf(bundled_app("vendor")) - expect(the_bundle).to include_gems "rack 1.0" - end - - it "allows running bundle install --system after deleting foo", :bundler => "< 2" do - bundle "install", forgotten_command_line_options(:path => "vendor") - FileUtils.rm_rf(bundled_app("vendor")) - bundle "install", forgotten_command_line_options(:system => true) - expect(the_bundle).to include_gems "rack 1.0" - end - end - - it "finds gems in multiple sources", :bundler => "< 2" do - build_repo2 - update_repo2 - - install_gemfile <<-G - source "file://#{gem_repo1}" - source "file://#{gem_repo2}" - - gem "activesupport", "1.2.3" - gem "rack", "1.2" - G - - expect(the_bundle).to include_gems "rack 1.2", "activesupport 1.2.3" - end - - it "gives a useful error if no sources are set" do - install_gemfile <<-G - gem "rack" - G - - bundle :install - expect(out).to include("Your Gemfile has no gem server sources") - end - - it "creates a Gemfile.lock on a blank Gemfile" do - install_gemfile <<-G - G - - expect(File.exist?(bundled_app("Gemfile.lock"))).to eq(true) - end - - it "gracefully handles error when rubygems server is unavailable" do - install_gemfile <<-G, :artifice => nil - source "file://#{gem_repo1}" - source "http://localhost:9384" do - gem 'foo' - end - G - - bundle :install, :artifice => nil - expect(out).to include("Could not fetch specs from http://localhost:9384/") - expect(out).not_to include("file://") - end - - it "fails gracefully when downloading an invalid specification from the full index", :rubygems => "2.5" do - build_repo2 do - build_gem "ajp-rails", "0.0.0", :gemspec => false, :skip_validation => true do |s| - bad_deps = [["ruby-ajp", ">= 0.2.0"], ["rails", ">= 0.14"]] - s. - instance_variable_get(:@spec). - instance_variable_set(:@dependencies, bad_deps) - - raise "failed to set bad deps" unless s.dependencies == bad_deps - end - build_gem "ruby-ajp", "1.0.0" - end - - install_gemfile <<-G, :full_index => true - source "file://#{gem_repo2}" - - gem "ajp-rails", "0.0.0" - G - - expect(last_command.stdboth).not_to match(/Error Report/i) - expect(last_command.bundler_err).to include("An error occurred while installing ajp-rails (0.0.0), and Bundler cannot continue."). - and include("Make sure that `gem install ajp-rails -v '0.0.0'` succeeds before bundling.") - end - - it "doesn't blow up when the local .bundle/config is empty" do - FileUtils.mkdir_p(bundled_app(".bundle")) - FileUtils.touch(bundled_app(".bundle/config")) - - install_gemfile(<<-G) - source "file://#{gem_repo1}" - - gem 'foo' - G - expect(exitstatus).to eq(0) if exitstatus - end - - it "doesn't blow up when the global .bundle/config is empty" do - FileUtils.mkdir_p("#{Bundler.rubygems.user_home}/.bundle") - FileUtils.touch("#{Bundler.rubygems.user_home}/.bundle/config") - - install_gemfile(<<-G) - source "file://#{gem_repo1}" - - gem 'foo' - G - expect(exitstatus).to eq(0) if exitstatus - end - end - - describe "Ruby version in Gemfile.lock" do - include Bundler::GemHelpers - - context "and using an unsupported Ruby version" do - it "prints an error" do - install_gemfile <<-G - ::RUBY_VERSION = '2.0.1' - ruby '~> 2.2' - G - expect(out).to include("Your Ruby version is 2.0.1, but your Gemfile specified ~> 2.2") - end - end - - context "and using a supported Ruby version" do - before do - install_gemfile <<-G - ::RUBY_VERSION = '2.1.3' - ::RUBY_PATCHLEVEL = 100 - ruby '~> 2.1.0' - G - end - - it "writes current Ruby version to Gemfile.lock" do - lockfile_should_be <<-L - GEM - specs: - - PLATFORMS - #{lockfile_platforms} - - DEPENDENCIES - - RUBY VERSION - ruby 2.1.3p100 - - BUNDLED WITH - #{Bundler::VERSION} - L - end - - it "updates Gemfile.lock with updated incompatible ruby version" do - install_gemfile <<-G - ::RUBY_VERSION = '2.2.3' - ::RUBY_PATCHLEVEL = 100 - ruby '~> 2.2.0' - G - - lockfile_should_be <<-L - GEM - specs: - - PLATFORMS - #{lockfile_platforms} - - DEPENDENCIES - - RUBY VERSION - ruby 2.2.3p100 - - BUNDLED WITH - #{Bundler::VERSION} - L - end - end - end - - describe "when Bundler root contains regex chars" do - before do - root_dir = tmp("foo[]bar") - - FileUtils.mkdir_p(root_dir) - in_app_root_custom(root_dir) - end - - it "doesn't blow up" do - build_lib "foo" - gemfile = <<-G - gem 'foo', :path => "#{lib_path("foo-1.0")}" - G - File.open("Gemfile", "w") do |file| - file.puts gemfile - end - - bundle :install - - expect(exitstatus).to eq(0) if exitstatus - end - end - - describe "when requesting a quiet install via --quiet" do - it "should be quiet" do - gemfile <<-G - gem 'rack' - G - - bundle :install, :quiet => true - expect(out).to include("Could not find gem 'rack'") - expect(out).to_not include("Your Gemfile has no gem server sources") - end - end - - describe "when bundle path does not have write access" do - before do - FileUtils.mkdir_p(bundled_app("vendor")) - gemfile <<-G - source "file://#{gem_repo1}" - gem 'rack' - G - end - - it "should display a proper message to explain the problem" do - FileUtils.chmod(0o500, bundled_app("vendor")) - - bundle :install, forgotten_command_line_options(:path => "vendor") - expect(out).to include(bundled_app("vendor").to_s) - expect(out).to include("grant write permissions") - end - end - - context "after installing with --standalone" do - before do - install_gemfile! <<-G - source "file://#{gem_repo1}" - gem "rack" - G - forgotten_command_line_options(:path => "bundle") - bundle! "install", :standalone => true - end - - it "includes the standalone path" do - bundle! "binstubs rack", :standalone => true - standalone_line = File.read(bundled_app("bin/rackup")).each_line.find {|line| line.include? "$:.unshift" }.strip - expect(standalone_line).to eq %($:.unshift File.expand_path "../../bundle", path.realpath) - end - end - - describe "when bundle install is executed with unencoded authentication" do - before do - gemfile <<-G - source 'https://rubygems.org/' - gem "." - G - end - - it "should display a helpful messag explaining how to fix it" do - bundle :install, :env => { "BUNDLE_RUBYGEMS__ORG" => "user:pass{word" } - expect(exitstatus).to eq(17) if exitstatus - expect(out).to eq("Please CGI escape your usernames and passwords before " \ - "setting them for authentication.") - end - end -end diff --git a/spec/bundler/commands/issue_spec.rb b/spec/bundler/commands/issue_spec.rb deleted file mode 100644 index 04c575130e..0000000000 --- a/spec/bundler/commands/issue_spec.rb +++ /dev/null @@ -1,16 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe "bundle issue" do - it "exits with a message" do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "rails" - G - - bundle "issue" - expect(out).to include "Did you find an issue with Bundler?" - expect(out).to include "## Environment" - expect(out).to include "## Gemfile" - expect(out).to include "## Bundle Doctor" - end -end diff --git a/spec/bundler/commands/licenses_spec.rb b/spec/bundler/commands/licenses_spec.rb deleted file mode 100644 index 144931fb27..0000000000 --- a/spec/bundler/commands/licenses_spec.rb +++ /dev/null @@ -1,31 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe "bundle licenses" do - before :each do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "rails" - gem "with_license" - G - end - - it "prints license information for all gems in the bundle" do - bundle "licenses" - - expect(out).to include("bundler: Unknown") - expect(out).to include("with_license: MIT") - end - - it "performs an automatic bundle install" do - gemfile <<-G - source "file://#{gem_repo1}" - gem "rails" - gem "with_license" - gem "foo" - G - - bundle "config auto_install 1" - bundle :licenses - expect(out).to include("Installing foo 1.0") - end -end diff --git a/spec/bundler/commands/list_spec.rb b/spec/bundler/commands/list_spec.rb deleted file mode 100644 index 0ea70f015c..0000000000 --- a/spec/bundler/commands/list_spec.rb +++ /dev/null @@ -1,40 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe "bundle list", :bundler => "2" do - before do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - G - end - - context "with name-only option" do - it "prints only the name of the gems in the bundle" do - bundle "list --name-only" - expect(out).to eq "rack" - end - end - - context "when no gems are in the gemfile" do - before do - install_gemfile <<-G - source "file://#{gem_repo1}" - G - end - - it "prints message saying no gems are in the bundle" do - bundle "list" - expect(out).to include("No gems in the Gemfile") - end - end - - it "lists gems installed in the bundle" do - bundle "list" - expect(out).to include(" * rack (1.0.0)") - end - - it "aliases the ls command to list" do - bundle "ls" - expect(out).to include("Gems included by the bundle") - end -end diff --git a/spec/bundler/commands/lock_spec.rb b/spec/bundler/commands/lock_spec.rb deleted file mode 100644 index 01337d27ce..0000000000 --- a/spec/bundler/commands/lock_spec.rb +++ /dev/null @@ -1,314 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe "bundle lock" do - def strip_lockfile(lockfile) - strip_whitespace(lockfile).sub(/\n\Z/, "") - end - - def read_lockfile(file = "Gemfile.lock") - strip_lockfile bundled_app(file).read - end - - let(:repo) { gem_repo1 } - - before :each do - gemfile <<-G - source "file://localhost#{repo}" - gem "rails" - gem "with_license" - gem "foo" - G - - @lockfile = strip_lockfile <<-L - GEM - remote: file://localhost#{repo}/ - specs: - actionmailer (2.3.2) - activesupport (= 2.3.2) - actionpack (2.3.2) - activesupport (= 2.3.2) - activerecord (2.3.2) - activesupport (= 2.3.2) - activeresource (2.3.2) - activesupport (= 2.3.2) - activesupport (2.3.2) - foo (1.0) - rails (2.3.2) - actionmailer (= 2.3.2) - actionpack (= 2.3.2) - activerecord (= 2.3.2) - activeresource (= 2.3.2) - rake (= 10.0.2) - rake (10.0.2) - with_license (1.0) - - PLATFORMS - #{lockfile_platforms} - - DEPENDENCIES - foo - rails - with_license - - BUNDLED WITH - #{Bundler::VERSION} - L - end - - it "prints a lockfile when there is no existing lockfile with --print" do - bundle "lock --print" - - expect(out).to eq(@lockfile) - end - - it "prints a lockfile when there is an existing lockfile with --print" do - lockfile @lockfile - - bundle "lock --print" - - expect(out).to eq(@lockfile) - end - - it "writes a lockfile when there is no existing lockfile" do - bundle "lock" - - expect(read_lockfile).to eq(@lockfile) - end - - it "writes a lockfile when there is an outdated lockfile using --update" do - lockfile @lockfile.gsub("2.3.2", "2.3.1") - - bundle! "lock --update" - - expect(read_lockfile).to eq(@lockfile) - end - - it "does not fetch remote specs when using the --local option" do - bundle "lock --update --local" - - expect(out).to match(/sources listed in your Gemfile|installed locally/) - end - - it "writes to a custom location using --lockfile" do - bundle "lock --lockfile=lock" - - expect(out).to match(/Writing lockfile to.+lock/) - expect(read_lockfile "lock").to eq(@lockfile) - expect { read_lockfile }.to raise_error(Errno::ENOENT) - end - - it "update specific gems using --update" do - lockfile @lockfile.gsub("2.3.2", "2.3.1").gsub("10.0.2", "10.0.1") - - bundle "lock --update rails rake" - - expect(read_lockfile).to eq(@lockfile) - end - - it "errors when updating a missing specific gems using --update" do - lockfile @lockfile - - bundle "lock --update blahblah" - expect(out).to eq("Could not find gem 'blahblah'.") - - expect(read_lockfile).to eq(@lockfile) - end - - # see update_spec for more coverage on same options. logic is shared so it's not necessary - # to repeat coverage here. - context "conservative updates" do - before do - build_repo4 do - build_gem "foo", %w[1.4.3 1.4.4] do |s| - s.add_dependency "bar", "~> 2.0" - end - build_gem "foo", %w[1.4.5 1.5.0] do |s| - s.add_dependency "bar", "~> 2.1" - end - build_gem "foo", %w[1.5.1] do |s| - s.add_dependency "bar", "~> 3.0" - end - build_gem "bar", %w[2.0.3 2.0.4 2.0.5 2.1.0 2.1.1 3.0.0] - build_gem "qux", %w[1.0.0 1.0.1 1.1.0 2.0.0] - end - - # establish a lockfile set to 1.4.3 - install_gemfile <<-G - source "file://#{gem_repo4}" - gem 'foo', '1.4.3' - gem 'bar', '2.0.3' - gem 'qux', '1.0.0' - G - - # remove 1.4.3 requirement and bar altogether - # to setup update specs below - gemfile <<-G - source "file://#{gem_repo4}" - gem 'foo' - gem 'qux' - G - end - - it "single gem updates dependent gem to minor" do - bundle "lock --update foo --patch" - - expect(the_bundle.locked_gems.specs.map(&:full_name)).to eq(%w[foo-1.4.5 bar-2.1.1 qux-1.0.0].sort) - end - - it "minor preferred with strict" do - bundle "lock --update --minor --strict" - - expect(the_bundle.locked_gems.specs.map(&:full_name)).to eq(%w[foo-1.5.0 bar-2.1.1 qux-1.1.0].sort) - end - end - - it "supports adding new platforms" do - bundle! "lock --add-platform java x86-mingw32" - - lockfile = Bundler::LockfileParser.new(read_lockfile) - expect(lockfile.platforms).to match_array(local_platforms.unshift(java, mingw).uniq) - end - - it "supports adding the `ruby` platform" do - bundle! "lock --add-platform ruby" - lockfile = Bundler::LockfileParser.new(read_lockfile) - expect(lockfile.platforms).to match_array(local_platforms.unshift("ruby").uniq) - end - - it "warns when adding an unknown platform" do - bundle "lock --add-platform foobarbaz" - expect(out).to include("The platform `foobarbaz` is unknown to RubyGems and adding it will likely lead to resolution errors") - end - - it "allows removing platforms" do - bundle! "lock --add-platform java x86-mingw32" - - lockfile = Bundler::LockfileParser.new(read_lockfile) - expect(lockfile.platforms).to match_array(local_platforms.unshift(java, mingw).uniq) - - bundle! "lock --remove-platform java" - - lockfile = Bundler::LockfileParser.new(read_lockfile) - expect(lockfile.platforms).to match_array(local_platforms.unshift(mingw).uniq) - end - - it "errors when removing all platforms" do - bundle "lock --remove-platform #{local_platforms.join(" ")}" - expect(last_command.bundler_err).to include("Removing all platforms from the bundle is not allowed") - end - - # from https://github.com/bundler/bundler/issues/4896 - it "properly adds platforms when platform requirements come from different dependencies" do - build_repo4 do - build_gem "ffi", "1.9.14" - build_gem "ffi", "1.9.14" do |s| - s.platform = mingw - end - - build_gem "gssapi", "0.1" - build_gem "gssapi", "0.2" - build_gem "gssapi", "0.3" - build_gem "gssapi", "1.2.0" do |s| - s.add_dependency "ffi", ">= 1.0.1" - end - - build_gem "mixlib-shellout", "2.2.6" - build_gem "mixlib-shellout", "2.2.6" do |s| - s.platform = "universal-mingw32" - s.add_dependency "win32-process", "~> 0.8.2" - end - - # we need all these versions to get the sorting the same as it would be - # pulling from rubygems.org - %w[0.8.3 0.8.2 0.8.1 0.8.0].each do |v| - build_gem "win32-process", v do |s| - s.add_dependency "ffi", ">= 1.0.0" - end - end - end - - gemfile <<-G - source "file://localhost#{gem_repo4}" - - gem "mixlib-shellout" - gem "gssapi" - G - - simulate_platform(mingw) { bundle! :lock } - - expect(the_bundle.lockfile).to read_as(strip_whitespace(<<-G)) - GEM - remote: file://localhost#{gem_repo4}/ - specs: - ffi (1.9.14-x86-mingw32) - gssapi (1.2.0) - ffi (>= 1.0.1) - mixlib-shellout (2.2.6-universal-mingw32) - win32-process (~> 0.8.2) - win32-process (0.8.3) - ffi (>= 1.0.0) - - PLATFORMS - x86-mingw32 - - DEPENDENCIES - gssapi - mixlib-shellout - - BUNDLED WITH - #{Bundler::VERSION} - G - - simulate_platform(rb) { bundle! :lock } - - expect(the_bundle.lockfile).to read_as(strip_whitespace(<<-G)) - GEM - remote: file://localhost#{gem_repo4}/ - specs: - ffi (1.9.14) - ffi (1.9.14-x86-mingw32) - gssapi (1.2.0) - ffi (>= 1.0.1) - mixlib-shellout (2.2.6) - mixlib-shellout (2.2.6-universal-mingw32) - win32-process (~> 0.8.2) - win32-process (0.8.3) - ffi (>= 1.0.0) - - PLATFORMS - ruby - x86-mingw32 - - DEPENDENCIES - gssapi - mixlib-shellout - - BUNDLED WITH - #{Bundler::VERSION} - G - end - - context "when an update is available" do - let(:repo) { gem_repo2 } - - before do - lockfile(@lockfile) - build_repo2 do - build_gem "foo", "2.0" - end - end - - it "does not implicitly update" do - bundle! "lock" - - expect(read_lockfile).to eq(@lockfile) - end - - it "accounts for changes in the gemfile" do - gemfile gemfile.gsub('"foo"', '"foo", "2.0"') - bundle! "lock" - - expect(read_lockfile).to eq(@lockfile.sub("foo (1.0)", "foo (2.0)").sub(/foo$/, "foo (= 2.0)")) - end - end -end diff --git a/spec/bundler/commands/newgem_spec.rb b/spec/bundler/commands/newgem_spec.rb deleted file mode 100644 index 97695cc1cd..0000000000 --- a/spec/bundler/commands/newgem_spec.rb +++ /dev/null @@ -1,907 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe "bundle gem" do - def reset! - super - global_config "BUNDLE_GEM__MIT" => "false", "BUNDLE_GEM__TEST" => "false", "BUNDLE_GEM__COC" => "false" - end - - def remove_push_guard(gem_name) - # Remove exception that prevents public pushes on older RubyGems versions - if Gem::Version.new(Gem::VERSION) < Gem::Version.new("2.0") - path = "#{gem_name}/#{gem_name}.gemspec" - content = File.read(path).sub(/raise "RubyGems 2\.0 or newer.*/, "") - File.open(path, "w") {|f| f.write(content) } - end - end - - def execute_bundle_gem(gem_name, flag = "", to_remove_push_guard = true) - bundle! "gem #{gem_name} #{flag}" - remove_push_guard(gem_name) if to_remove_push_guard - # reset gemspec cache for each test because of commit 3d4163a - Bundler.clear_gemspec_cache - end - - def gem_skeleton_assertions(gem_name) - expect(bundled_app("#{gem_name}/#{gem_name}.gemspec")).to exist - expect(bundled_app("#{gem_name}/README.md")).to exist - expect(bundled_app("#{gem_name}/Gemfile")).to exist - expect(bundled_app("#{gem_name}/Rakefile")).to exist - expect(bundled_app("#{gem_name}/lib/test/gem.rb")).to exist - expect(bundled_app("#{gem_name}/lib/test/gem/version.rb")).to exist - end - - before do - git_config_content = <<-EOF - [user] - name = "Bundler User" - email = user@example.com - [github] - user = bundleuser - EOF - @git_config_location = ENV["GIT_CONFIG"] - path = "#{File.expand_path(tmp, File.dirname(__FILE__))}/test_git_config.txt" - File.open(path, "w") {|f| f.write(git_config_content) } - ENV["GIT_CONFIG"] = path - end - - after do - FileUtils.rm(ENV["GIT_CONFIG"]) if File.exist?(ENV["GIT_CONFIG"]) - ENV["GIT_CONFIG"] = @git_config_location - end - - shared_examples_for "git config is present" do - context "git config user.{name,email} present" do - it "sets gemspec author to git user.name if available" do - expect(generated_gem.gemspec.authors.first).to eq("Bundler User") - end - - it "sets gemspec email to git user.email if available" do - expect(generated_gem.gemspec.email.first).to eq("user@example.com") - end - end - end - - shared_examples_for "git config is absent" do - it "sets gemspec author to default message if git user.name is not set or empty" do - expect(generated_gem.gemspec.authors.first).to eq("TODO: Write your name") - end - - it "sets gemspec email to default message if git user.email is not set or empty" do - expect(generated_gem.gemspec.email.first).to eq("TODO: Write your email address") - end - end - - shared_examples_for "--mit flag" do - before do - execute_bundle_gem(gem_name, "--mit") - end - it "generates a gem skeleton with MIT license" do - gem_skeleton_assertions(gem_name) - expect(bundled_app("test-gem/LICENSE.txt")).to exist - skel = Bundler::GemHelper.new(bundled_app(gem_name).to_s) - expect(skel.gemspec.license).to eq("MIT") - end - end - - shared_examples_for "--no-mit flag" do - before do - execute_bundle_gem(gem_name, "--no-mit") - end - it "generates a gem skeleton without MIT license" do - gem_skeleton_assertions(gem_name) - expect(bundled_app("test-gem/LICENSE.txt")).to_not exist - end - end - - shared_examples_for "--coc flag" do - before do - execute_bundle_gem(gem_name, "--coc", false) - end - it "generates a gem skeleton with MIT license" do - gem_skeleton_assertions(gem_name) - expect(bundled_app("test-gem/CODE_OF_CONDUCT.md")).to exist - end - - describe "README additions" do - it "generates the README with a section for the Code of Conduct" do - expect(bundled_app("test-gem/README.md").read).to include("## Code of Conduct") - expect(bundled_app("test-gem/README.md").read).to include("https://github.com/bundleuser/#{gem_name}/blob/master/CODE_OF_CONDUCT.md") - end - end - end - - shared_examples_for "--no-coc flag" do - before do - execute_bundle_gem(gem_name, "--no-coc", false) - end - it "generates a gem skeleton without Code of Conduct" do - gem_skeleton_assertions(gem_name) - expect(bundled_app("test-gem/CODE_OF_CONDUCT.md")).to_not exist - end - - describe "README additions" do - it "generates the README without a section for the Code of Conduct" do - expect(bundled_app("test-gem/README.md").read).not_to include("## Code of Conduct") - expect(bundled_app("test-gem/README.md").read).not_to include("https://github.com/bundleuser/#{gem_name}/blob/master/CODE_OF_CONDUCT.md") - end - end - end - - context "README.md" do - let(:gem_name) { "test_gem" } - let(:generated_gem) { Bundler::GemHelper.new(bundled_app(gem_name).to_s) } - - context "git config github.user present" do - before do - execute_bundle_gem(gem_name) - end - - it "contribute URL set to git username" do - expect(bundled_app("test_gem/README.md").read).not_to include("[USERNAME]") - expect(bundled_app("test_gem/README.md").read).to include("github.com/bundleuser") - end - end - - context "git config github.user is absent" do - before do - sys_exec("git config --unset github.user") - reset! - in_app_root - bundle "gem #{gem_name}" - remove_push_guard(gem_name) - end - - it "contribute URL set to [USERNAME]" do - expect(bundled_app("test_gem/README.md").read).to include("[USERNAME]") - expect(bundled_app("test_gem/README.md").read).not_to include("github.com/bundleuser") - end - end - end - - it "creates a new git repository" do - in_app_root - bundle "gem test_gem" - expect(bundled_app("test_gem/.git")).to exist - end - - context "when git is not available" do - let(:gem_name) { "test_gem" } - - # This spec cannot have `git` available in the test env - before do - load_paths = [lib, spec] - load_path_str = "-I#{load_paths.join(File::PATH_SEPARATOR)}" - - sys_exec "PATH=\"\" #{Gem.ruby} #{load_path_str} #{bindir.join("bundle")} gem #{gem_name}" - end - - it "creates the gem without the need for git" do - expect(bundled_app("#{gem_name}/README.md")).to exist - end - - it "doesn't create a git repo" do - expect(bundled_app("#{gem_name}/.git")).to_not exist - end - - it "doesn't create a .gitignore file" do - expect(bundled_app("#{gem_name}/.gitignore")).to_not exist - end - end - - it "generates a valid gemspec" do - in_app_root - bundle! "gem newgem --bin" - - process_file(bundled_app("newgem", "newgem.gemspec")) do |line| - # Simulate replacing TODOs with real values - case line - when /spec\.metadata\['allowed_push_host'\]/, /spec\.homepage/ - line.gsub(/\=.*$/, "= 'http://example.org'") - when /spec\.summary/ - line.gsub(/\=.*$/, "= %q{A short summary of my new gem.}") - when /spec\.description/ - line.gsub(/\=.*$/, "= %q{A longer description of my new gem.}") - # Remove exception that prevents public pushes on older RubyGems versions - when /raise "RubyGems 2.0 or newer/ - line.gsub(/.*/, "") if Gem::Version.new(Gem::VERSION) < Gem::Version.new("2.0") - else - line - end - end - - Dir.chdir(bundled_app("newgem")) do - gems = ["rake-10.0.2", :bundler] - gems.delete(:bundler) if ENV["BUNDLE_RUBY"] && ENV["BUNDLE_GEM"] - system_gems gems, :path => :bundle_path - bundle! "exec rake build" - end - - expect(last_command.stdboth).not_to include("ERROR") - end - - context "gem naming with relative paths" do - before do - reset! - in_app_root - end - - it "resolves ." do - create_temporary_dir("tmp") - - bundle "gem ." - - expect(bundled_app("tmp/lib/tmp.rb")).to exist - end - - it "resolves .." do - create_temporary_dir("temp/empty_dir") - - bundle "gem .." - - expect(bundled_app("temp/lib/temp.rb")).to exist - end - - it "resolves relative directory" do - create_temporary_dir("tmp/empty/tmp") - - bundle "gem ../../empty" - - expect(bundled_app("tmp/empty/lib/empty.rb")).to exist - end - - def create_temporary_dir(dir) - FileUtils.mkdir_p(dir) - Dir.chdir(dir) - end - end - - context "gem naming with underscore" do - let(:gem_name) { "test_gem" } - - before do - execute_bundle_gem(gem_name) - end - - let(:generated_gem) { Bundler::GemHelper.new(bundled_app(gem_name).to_s) } - - it "generates a gem skeleton" do - expect(bundled_app("test_gem/test_gem.gemspec")).to exist - expect(bundled_app("test_gem/Gemfile")).to exist - expect(bundled_app("test_gem/Rakefile")).to exist - expect(bundled_app("test_gem/lib/test_gem.rb")).to exist - expect(bundled_app("test_gem/lib/test_gem/version.rb")).to exist - expect(bundled_app("test_gem/.gitignore")).to exist - - expect(bundled_app("test_gem/bin/setup")).to exist - expect(bundled_app("test_gem/bin/console")).to exist - expect(bundled_app("test_gem/bin/setup")).to be_executable - expect(bundled_app("test_gem/bin/console")).to be_executable - end - - it "starts with version 0.1.0" do - expect(bundled_app("test_gem/lib/test_gem/version.rb").read).to match(/VERSION = "0.1.0"/) - end - - it "does not nest constants" do - expect(bundled_app("test_gem/lib/test_gem/version.rb").read).to match(/module TestGem/) - expect(bundled_app("test_gem/lib/test_gem.rb").read).to match(/module TestGem/) - end - - it_should_behave_like "git config is present" - - context "git config user.{name,email} is not set" do - before do - `git config --unset user.name` - `git config --unset user.email` - reset! - in_app_root - bundle "gem #{gem_name}" - remove_push_guard(gem_name) - end - - it_should_behave_like "git config is absent" - end - - it "sets gemspec metadata['allowed_push_host']", :rubygems => "2.0" do - expect(generated_gem.gemspec.metadata["allowed_push_host"]). - to match(/mygemserver\.com/) - end - - it "requires the version file" do - expect(bundled_app("test_gem/lib/test_gem.rb").read).to match(%r{require "test_gem/version"}) - end - - it "runs rake without problems" do - system_gems ["rake-10.0.2"] - - rakefile = strip_whitespace <<-RAKEFILE - task :default do - puts 'SUCCESS' - end - RAKEFILE - File.open(bundled_app("test_gem/Rakefile"), "w") do |file| - file.puts rakefile - end - - Dir.chdir(bundled_app(gem_name)) do - sys_exec(rake) - expect(out).to include("SUCCESS") - end - end - - context "--exe parameter set" do - before do - reset! - in_app_root - bundle "gem #{gem_name} --exe" - end - - it "builds exe skeleton" do - expect(bundled_app("test_gem/exe/test_gem")).to exist - end - - it "requires 'test-gem'" do - expect(bundled_app("test_gem/exe/test_gem").read).to match(/require "test_gem"/) - end - end - - context "--bin parameter set" do - before do - reset! - in_app_root - bundle "gem #{gem_name} --bin" - end - - it "builds exe skeleton" do - expect(bundled_app("test_gem/exe/test_gem")).to exist - end - - it "requires 'test-gem'" do - expect(bundled_app("test_gem/exe/test_gem").read).to match(/require "test_gem"/) - end - end - - context "no --test parameter" do - before do - reset! - in_app_root - bundle "gem #{gem_name}" - end - - it "doesn't create any spec/test file" do - expect(bundled_app("test_gem/.rspec")).to_not exist - expect(bundled_app("test_gem/spec/test_gem_spec.rb")).to_not exist - expect(bundled_app("test_gem/spec/spec_helper.rb")).to_not exist - expect(bundled_app("test_gem/test/test_test_gem.rb")).to_not exist - expect(bundled_app("test_gem/test/minitest_helper.rb")).to_not exist - end - end - - context "--test parameter set to rspec" do - before do - reset! - in_app_root - bundle "gem #{gem_name} --test=rspec" - end - - it "builds spec skeleton" do - expect(bundled_app("test_gem/.rspec")).to exist - expect(bundled_app("test_gem/spec/test_gem_spec.rb")).to exist - expect(bundled_app("test_gem/spec/spec_helper.rb")).to exist - end - - it "depends on a specific version of rspec", :rubygems => ">= 1.8.1" do - remove_push_guard(gem_name) - rspec_dep = generated_gem.gemspec.development_dependencies.find {|d| d.name == "rspec" } - expect(rspec_dep).to be_specific - end - - it "requires 'test-gem'" do - expect(bundled_app("test_gem/spec/spec_helper.rb").read).to include(%(require "test_gem")) - end - - it "creates a default test which fails" do - expect(bundled_app("test_gem/spec/test_gem_spec.rb").read).to include("expect(false).to eq(true)") - end - end - - context "gem.test setting set to rspec" do - before do - reset! - in_app_root - bundle "config gem.test rspec" - bundle "gem #{gem_name}" - end - - it "builds spec skeleton" do - expect(bundled_app("test_gem/.rspec")).to exist - expect(bundled_app("test_gem/spec/test_gem_spec.rb")).to exist - expect(bundled_app("test_gem/spec/spec_helper.rb")).to exist - end - end - - context "gem.test setting set to rspec and --test is set to minitest" do - before do - reset! - in_app_root - bundle "config gem.test rspec" - bundle "gem #{gem_name} --test=minitest" - end - - it "builds spec skeleton" do - expect(bundled_app("test_gem/test/test_gem_test.rb")).to exist - expect(bundled_app("test_gem/test/test_helper.rb")).to exist - end - end - - context "--test parameter set to minitest" do - before do - reset! - in_app_root - bundle "gem #{gem_name} --test=minitest" - end - - it "depends on a specific version of minitest", :rubygems => ">= 1.8.1" do - remove_push_guard(gem_name) - rspec_dep = generated_gem.gemspec.development_dependencies.find {|d| d.name == "minitest" } - expect(rspec_dep).to be_specific - end - - it "builds spec skeleton" do - expect(bundled_app("test_gem/test/test_gem_test.rb")).to exist - expect(bundled_app("test_gem/test/test_helper.rb")).to exist - end - - it "requires 'test-gem'" do - expect(bundled_app("test_gem/test/test_helper.rb").read).to include(%(require "test_gem")) - end - - it "requires 'minitest_helper'" do - expect(bundled_app("test_gem/test/test_gem_test.rb").read).to include(%(require "test_helper")) - end - - it "creates a default test which fails" do - expect(bundled_app("test_gem/test/test_gem_test.rb").read).to include("assert false") - end - end - - context "gem.test setting set to minitest" do - before do - reset! - in_app_root - bundle "config gem.test minitest" - bundle "gem #{gem_name}" - end - - it "creates a default rake task to run the test suite" do - rakefile = strip_whitespace <<-RAKEFILE - require "bundler/gem_tasks" - require "rake/testtask" - - Rake::TestTask.new(:test) do |t| - t.libs << "test" - t.libs << "lib" - t.test_files = FileList["test/**/*_test.rb"] - end - - task :default => :test - RAKEFILE - - expect(bundled_app("test_gem/Rakefile").read).to eq(rakefile) - end - end - - context "--test with no arguments" do - before do - reset! - in_app_root - bundle "gem #{gem_name} --test" - end - - it "defaults to rspec" do - expect(bundled_app("test_gem/spec/spec_helper.rb")).to exist - expect(bundled_app("test_gem/test/minitest_helper.rb")).to_not exist - end - - it "creates a .travis.yml file to test the library against the current Ruby version on Travis CI" do - expect(bundled_app("test_gem/.travis.yml").read).to match(/- #{RUBY_VERSION}/) - end - end - - context "--edit option" do - it "opens the generated gemspec in the user's text editor" do - reset! - in_app_root - output = bundle "gem #{gem_name} --edit=echo" - gemspec_path = File.join(Dir.pwd, gem_name, "#{gem_name}.gemspec") - expect(output).to include("echo \"#{gemspec_path}\"") - end - end - end - - context "testing --mit and --coc options against bundle config settings" do - let(:gem_name) { "test-gem" } - - context "with mit option in bundle config settings set to true" do - before do - global_config "BUNDLE_GEM__MIT" => "true", "BUNDLE_GEM__TEST" => "false", "BUNDLE_GEM__COC" => "false" - end - after { reset! } - it_behaves_like "--mit flag" - it_behaves_like "--no-mit flag" - end - - context "with mit option in bundle config settings set to false" do - it_behaves_like "--mit flag" - it_behaves_like "--no-mit flag" - end - - context "with coc option in bundle config settings set to true" do - before do - global_config "BUNDLE_GEM__MIT" => "false", "BUNDLE_GEM__TEST" => "false", "BUNDLE_GEM__COC" => "true" - end - after { reset! } - it_behaves_like "--coc flag" - it_behaves_like "--no-coc flag" - end - - context "with coc option in bundle config settings set to false" do - it_behaves_like "--coc flag" - it_behaves_like "--no-coc flag" - end - end - - context "gem naming with dashed" do - let(:gem_name) { "test-gem" } - - before do - execute_bundle_gem(gem_name) - end - - let(:generated_gem) { Bundler::GemHelper.new(bundled_app(gem_name).to_s) } - - it "generates a gem skeleton" do - expect(bundled_app("test-gem/test-gem.gemspec")).to exist - expect(bundled_app("test-gem/Gemfile")).to exist - expect(bundled_app("test-gem/Rakefile")).to exist - expect(bundled_app("test-gem/lib/test/gem.rb")).to exist - expect(bundled_app("test-gem/lib/test/gem/version.rb")).to exist - end - - it "starts with version 0.1.0" do - expect(bundled_app("test-gem/lib/test/gem/version.rb").read).to match(/VERSION = "0.1.0"/) - end - - it "nests constants so they work" do - expect(bundled_app("test-gem/lib/test/gem/version.rb").read).to match(/module Test\n module Gem/) - expect(bundled_app("test-gem/lib/test/gem.rb").read).to match(/module Test\n module Gem/) - end - - it_should_behave_like "git config is present" - - context "git config user.{name,email} is not set" do - before do - `git config --unset user.name` - `git config --unset user.email` - reset! - in_app_root - bundle "gem #{gem_name}" - remove_push_guard(gem_name) - end - - it_should_behave_like "git config is absent" - end - - it "requires the version file" do - expect(bundled_app("test-gem/lib/test/gem.rb").read).to match(%r{require "test/gem/version"}) - end - - it "runs rake without problems" do - system_gems ["rake-10.0.2"] - - rakefile = strip_whitespace <<-RAKEFILE - task :default do - puts 'SUCCESS' - end - RAKEFILE - File.open(bundled_app("test-gem/Rakefile"), "w") do |file| - file.puts rakefile - end - - Dir.chdir(bundled_app(gem_name)) do - sys_exec(rake) - expect(out).to include("SUCCESS") - end - end - - context "--bin parameter set" do - before do - reset! - in_app_root - bundle "gem #{gem_name} --bin" - end - - it "builds bin skeleton" do - expect(bundled_app("test-gem/exe/test-gem")).to exist - end - - it "requires 'test/gem'" do - expect(bundled_app("test-gem/exe/test-gem").read).to match(%r{require "test/gem"}) - end - end - - context "no --test parameter" do - before do - reset! - in_app_root - bundle "gem #{gem_name}" - end - - it "doesn't create any spec/test file" do - expect(bundled_app("test-gem/.rspec")).to_not exist - expect(bundled_app("test-gem/spec/test/gem_spec.rb")).to_not exist - expect(bundled_app("test-gem/spec/spec_helper.rb")).to_not exist - expect(bundled_app("test-gem/test/test_test/gem.rb")).to_not exist - expect(bundled_app("test-gem/test/minitest_helper.rb")).to_not exist - end - end - - context "--test parameter set to rspec" do - before do - reset! - in_app_root - bundle "gem #{gem_name} --test=rspec" - end - - it "builds spec skeleton" do - expect(bundled_app("test-gem/.rspec")).to exist - expect(bundled_app("test-gem/spec/test/gem_spec.rb")).to exist - expect(bundled_app("test-gem/spec/spec_helper.rb")).to exist - end - - it "requires 'test/gem'" do - expect(bundled_app("test-gem/spec/spec_helper.rb").read).to include(%(require "test/gem")) - end - - it "creates a default test which fails" do - expect(bundled_app("test-gem/spec/test/gem_spec.rb").read).to include("expect(false).to eq(true)") - end - - it "creates a default rake task to run the specs" do - rakefile = strip_whitespace <<-RAKEFILE - require "bundler/gem_tasks" - require "rspec/core/rake_task" - - RSpec::Core::RakeTask.new(:spec) - - task :default => :spec - RAKEFILE - - expect(bundled_app("test-gem/Rakefile").read).to eq(rakefile) - end - end - - context "--test parameter set to minitest" do - before do - reset! - in_app_root - bundle "gem #{gem_name} --test=minitest" - end - - it "builds spec skeleton" do - expect(bundled_app("test-gem/test/test/gem_test.rb")).to exist - expect(bundled_app("test-gem/test/test_helper.rb")).to exist - end - - it "requires 'test/gem'" do - expect(bundled_app("test-gem/test/test_helper.rb").read).to match(%r{require "test/gem"}) - end - - it "requires 'test_helper'" do - expect(bundled_app("test-gem/test/test/gem_test.rb").read).to match(/require "test_helper"/) - end - - it "creates a default test which fails" do - expect(bundled_app("test-gem/test/test/gem_test.rb").read).to match(/assert false/) - end - - it "creates a default rake task to run the test suite" do - rakefile = strip_whitespace <<-RAKEFILE - require "bundler/gem_tasks" - require "rake/testtask" - - Rake::TestTask.new(:test) do |t| - t.libs << "test" - t.libs << "lib" - t.test_files = FileList["test/**/*_test.rb"] - end - - task :default => :test - RAKEFILE - - expect(bundled_app("test-gem/Rakefile").read).to eq(rakefile) - end - end - - context "--test with no arguments" do - before do - reset! - in_app_root - bundle "gem #{gem_name} --test" - end - - it "defaults to rspec" do - expect(bundled_app("test-gem/spec/spec_helper.rb")).to exist - expect(bundled_app("test-gem/test/minitest_helper.rb")).to_not exist - end - end - - context "--ext parameter set" do - before do - reset! - in_app_root - bundle "gem test_gem --ext" - end - - it "builds ext skeleton" do - expect(bundled_app("test_gem/ext/test_gem/extconf.rb")).to exist - expect(bundled_app("test_gem/ext/test_gem/test_gem.h")).to exist - expect(bundled_app("test_gem/ext/test_gem/test_gem.c")).to exist - end - - it "includes rake-compiler" do - expect(bundled_app("test_gem/test_gem.gemspec").read).to include('spec.add_development_dependency "rake-compiler"') - end - - it "depends on compile task for build" do - rakefile = strip_whitespace <<-RAKEFILE - require "bundler/gem_tasks" - require "rake/extensiontask" - - task :build => :compile - - Rake::ExtensionTask.new("test_gem") do |ext| - ext.lib_dir = "lib/test_gem" - end - - task :default => [:clobber, :compile, :spec] - RAKEFILE - - expect(bundled_app("test_gem/Rakefile").read).to eq(rakefile) - end - end - end - - describe "uncommon gem names" do - it "can deal with two dashes" do - bundle "gem a--a" - Bundler.clear_gemspec_cache - - expect(bundled_app("a--a/a--a.gemspec")).to exist - end - - it "fails gracefully with a ." do - bundle "gem foo.gemspec" - expect(last_command.bundler_err).to end_with("Invalid gem name foo.gemspec -- `Foo.gemspec` is an invalid constant name") - end - - it "fails gracefully with a ^" do - bundle "gem ^" - expect(last_command.bundler_err).to end_with("Invalid gem name ^ -- `^` is an invalid constant name") - end - - it "fails gracefully with a space" do - bundle "gem 'foo bar'" - expect(last_command.bundler_err).to end_with("Invalid gem name foo bar -- `Foo bar` is an invalid constant name") - end - - it "fails gracefully when multiple names are passed" do - bundle "gem foo bar baz" - expect(last_command.bundler_err).to eq(<<-E.strip) -ERROR: "bundle gem" was called with arguments ["foo", "bar", "baz"] -Usage: "bundle gem NAME [OPTIONS]" - E - end - end - - describe "#ensure_safe_gem_name" do - before do - bundle "gem #{subject}" - end - after do - Bundler.clear_gemspec_cache - end - - context "with an existing const name" do - subject { "gem" } - it { expect(out).to include("Invalid gem name #{subject}") } - end - - context "with an existing hyphenated const name" do - subject { "gem-specification" } - it { expect(out).to include("Invalid gem name #{subject}") } - end - - context "starting with an existing const name" do - subject { "gem-somenewconstantname" } - it { expect(out).not_to include("Invalid gem name #{subject}") } - end - - context "ending with an existing const name" do - subject { "somenewconstantname-gem" } - it { expect(out).not_to include("Invalid gem name #{subject}") } - end - end - - context "on first run" do - before do - in_app_root - end - - it "asks about test framework" do - global_config "BUNDLE_GEM__MIT" => "false", "BUNDLE_GEM__COC" => "false" - - bundle "gem foobar" do |input, _, _| - input.puts "rspec" - end - - expect(bundled_app("foobar/spec/spec_helper.rb")).to exist - rakefile = strip_whitespace <<-RAKEFILE - require "bundler/gem_tasks" - require "rspec/core/rake_task" - - RSpec::Core::RakeTask.new(:spec) - - task :default => :spec - RAKEFILE - - expect(bundled_app("foobar/Rakefile").read).to eq(rakefile) - expect(bundled_app("foobar/foobar.gemspec").read).to include('spec.add_development_dependency "rspec"') - end - - it "asks about MIT license" do - global_config "BUNDLE_GEM__TEST" => "false", "BUNDLE_GEM__COC" => "false" - - bundle :config - - bundle "gem foobar" do |input, _, _| - input.puts "yes" - end - - expect(bundled_app("foobar/LICENSE.txt")).to exist - end - - it "asks about CoC" do - global_config "BUNDLE_GEM__MIT" => "false", "BUNDLE_GEM__TEST" => "false" - - bundle "gem foobar" do |input, _, _| - input.puts "yes" - end - - expect(bundled_app("foobar/CODE_OF_CONDUCT.md")).to exist - end - end - - context "on conflicts with a previously created file" do - it "should fail gracefully" do - in_app_root do - FileUtils.touch("conflict-foobar") - end - bundle "gem conflict-foobar" - expect(last_command.bundler_err).to include("Errno::ENOTDIR") - expect(exitstatus).to eql(32) if exitstatus - end - end - - context "on conflicts with a previously created directory" do - it "should succeed" do - in_app_root do - FileUtils.mkdir_p("conflict-foobar/Gemfile") - end - bundle! "gem conflict-foobar" - expect(last_command.stdout).to include("file_clash conflict-foobar/Gemfile"). - and include "Initializing git repo in #{bundled_app("conflict-foobar")}" - end - end -end diff --git a/spec/bundler/commands/open_spec.rb b/spec/bundler/commands/open_spec.rb deleted file mode 100644 index 5cab846fb5..0000000000 --- a/spec/bundler/commands/open_spec.rb +++ /dev/null @@ -1,92 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe "bundle open" do - before :each do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "rails" - G - end - - it "opens the gem with BUNDLER_EDITOR as highest priority" do - bundle "open rails", :env => { "EDITOR" => "echo editor", "VISUAL" => "echo visual", "BUNDLER_EDITOR" => "echo bundler_editor" } - expect(out).to include("bundler_editor #{default_bundle_path("gems", "rails-2.3.2")}") - end - - it "opens the gem with VISUAL as 2nd highest priority" do - bundle "open rails", :env => { "EDITOR" => "echo editor", "VISUAL" => "echo visual", "BUNDLER_EDITOR" => "" } - expect(out).to include("visual #{default_bundle_path("gems", "rails-2.3.2")}") - end - - it "opens the gem with EDITOR as 3rd highest priority" do - bundle "open rails", :env => { "EDITOR" => "echo editor", "VISUAL" => "", "BUNDLER_EDITOR" => "" } - expect(out).to include("editor #{default_bundle_path("gems", "rails-2.3.2")}") - end - - it "complains if no EDITOR is set" do - bundle "open rails", :env => { "EDITOR" => "", "VISUAL" => "", "BUNDLER_EDITOR" => "" } - expect(out).to eq("To open a bundled gem, set $EDITOR or $BUNDLER_EDITOR") - end - - it "complains if gem not in bundle" do - bundle "open missing", :env => { "EDITOR" => "echo editor", "VISUAL" => "", "BUNDLER_EDITOR" => "" } - expect(out).to match(/could not find gem 'missing'/i) - end - - it "does not blow up if the gem to open does not have a Gemfile" do - git = build_git "foo" - ref = git.ref_for("master", 11) - - install_gemfile <<-G - source "file://#{gem_repo1}" - gem 'foo', :git => "#{lib_path("foo-1.0")}" - G - - bundle "open foo", :env => { "EDITOR" => "echo editor", "VISUAL" => "", "BUNDLER_EDITOR" => "" } - expect(out).to match("editor #{default_bundle_path.join("bundler/gems/foo-1.0-#{ref}")}") - end - - it "suggests alternatives for similar-sounding gems" do - bundle "open Rails", :env => { "EDITOR" => "echo editor", "VISUAL" => "", "BUNDLER_EDITOR" => "" } - expect(out).to match(/did you mean rails\?/i) - end - - it "opens the gem with short words" do - bundle "open rec", :env => { "EDITOR" => "echo editor", "VISUAL" => "echo visual", "BUNDLER_EDITOR" => "echo bundler_editor" } - - expect(out).to include("bundler_editor #{default_bundle_path("gems", "activerecord-2.3.2")}") - end - - it "select the gem from many match gems" do - env = { "EDITOR" => "echo editor", "VISUAL" => "echo visual", "BUNDLER_EDITOR" => "echo bundler_editor" } - bundle "open active", :env => env do |input, _, _| - input.puts "2" - end - - expect(out).to match(/bundler_editor #{default_bundle_path('gems', 'activerecord-2.3.2')}\z/) - end - - it "allows selecting exit from many match gems" do - env = { "EDITOR" => "echo editor", "VISUAL" => "echo visual", "BUNDLER_EDITOR" => "echo bundler_editor" } - bundle! "open active", :env => env do |input, _, _| - input.puts "0" - end - end - - it "performs an automatic bundle install" do - gemfile <<-G - source "file://#{gem_repo1}" - gem "rails" - gem "foo" - G - - bundle "config auto_install 1" - bundle "open rails", :env => { "EDITOR" => "echo editor", "VISUAL" => "", "BUNDLER_EDITOR" => "" } - expect(out).to include("Installing foo 1.0") - end - - it "opens the editor with a clean env" do - bundle "open", :env => { "EDITOR" => "sh -c 'env'", "VISUAL" => "", "BUNDLER_EDITOR" => "" } - expect(out).not_to include("BUNDLE_GEMFILE=") - end -end diff --git a/spec/bundler/commands/outdated_spec.rb b/spec/bundler/commands/outdated_spec.rb deleted file mode 100644 index f0ad136c98..0000000000 --- a/spec/bundler/commands/outdated_spec.rb +++ /dev/null @@ -1,755 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe "bundle outdated" do - before :each do - build_repo2 do - build_git "foo", :path => lib_path("foo") - build_git "zebra", :path => lib_path("zebra") - end - - install_gemfile <<-G - source "file://#{gem_repo2}" - gem "zebra", :git => "#{lib_path("zebra")}" - gem "foo", :git => "#{lib_path("foo")}" - gem "activesupport", "2.3.5" - gem "weakling", "~> 0.0.1" - gem "duradura", '7.0' - gem "terranova", '8' - G - end - - describe "with no arguments" do - it "returns a sorted list of outdated gems" do - update_repo2 do - build_gem "activesupport", "3.0" - build_gem "weakling", "0.2" - update_git "foo", :path => lib_path("foo") - update_git "zebra", :path => lib_path("zebra") - end - - bundle "outdated" - - expect(out).to include("activesupport (newest 3.0, installed 2.3.5, requested = 2.3.5)") - expect(out).to include("weakling (newest 0.2, installed 0.0.3, requested ~> 0.0.1)") - expect(out).to include("foo (newest 1.0") - - # Gem names are one per-line, between "*" and their parenthesized version. - gem_list = out.split("\n").map {|g| g[/\* (.*) \(/, 1] }.compact - expect(gem_list).to eq(gem_list.sort) - end - - it "returns non zero exit status if outdated gems present" do - update_repo2 do - build_gem "activesupport", "3.0" - update_git "foo", :path => lib_path("foo") - end - - bundle "outdated" - - expect(exitstatus).to_not be_zero if exitstatus - end - - it "returns success exit status if no outdated gems present" do - bundle "outdated" - - expect(exitstatus).to be_zero if exitstatus - end - - it "adds gem group to dependency output when repo is updated" do - install_gemfile <<-G - source "file://#{gem_repo2}" - - group :development, :test do - gem 'activesupport', '2.3.5' - end - G - - update_repo2 { build_gem "activesupport", "3.0" } - - bundle "outdated --verbose" - expect(out).to include("activesupport (newest 3.0, installed 2.3.5, requested = 2.3.5) in groups \"development, test\"") - end - end - - describe "with --group option" do - def test_group_option(group = nil, gems_list_size = 1) - install_gemfile <<-G - source "file://#{gem_repo2}" - - gem "weakling", "~> 0.0.1" - gem "terranova", '8' - group :development, :test do - gem "duradura", '7.0' - gem 'activesupport', '2.3.5' - end - G - - update_repo2 do - build_gem "activesupport", "3.0" - build_gem "terranova", "9" - build_gem "duradura", "8.0" - end - - bundle "outdated --group #{group}" - - # Gem names are one per-line, between "*" and their parenthesized version. - gem_list = out.split("\n").map {|g| g[/\* (.*) \(/, 1] }.compact - expect(gem_list).to eq(gem_list.sort) - expect(gem_list.size).to eq gems_list_size - end - - it "not outdated gems" do - install_gemfile <<-G - source "file://#{gem_repo2}" - - gem "weakling", "~> 0.0.1" - gem "terranova", '8' - group :development, :test do - gem 'activesupport', '2.3.5' - gem "duradura", '7.0' - end - G - - bundle "outdated --group" - expect(out).to include("Bundle up to date!") - end - - it "returns a sorted list of outdated gems from one group => 'default'" do - test_group_option("default") - - expect(out).to include("===== Group default =====") - expect(out).to include("terranova (") - - expect(out).not_to include("===== Group development, test =====") - expect(out).not_to include("activesupport") - expect(out).not_to include("duradura") - end - - it "returns a sorted list of outdated gems from one group => 'development'" do - test_group_option("development", 2) - - expect(out).not_to include("===== Group default =====") - expect(out).not_to include("terranova (") - - expect(out).to include("===== Group development, test =====") - expect(out).to include("activesupport") - expect(out).to include("duradura") - end - end - - describe "with --groups option" do - it "not outdated gems" do - install_gemfile <<-G - source "file://#{gem_repo2}" - - gem "weakling", "~> 0.0.1" - gem "terranova", '8' - group :development, :test do - gem 'activesupport', '2.3.5' - gem "duradura", '7.0' - end - G - - bundle "outdated --groups" - expect(out).to include("Bundle up to date!") - end - - it "returns a sorted list of outdated gems by groups" do - install_gemfile <<-G - source "file://#{gem_repo2}" - - gem "weakling", "~> 0.0.1" - gem "terranova", '8' - group :development, :test do - gem 'activesupport', '2.3.5' - gem "duradura", '7.0' - end - G - - update_repo2 do - build_gem "activesupport", "3.0" - build_gem "terranova", "9" - build_gem "duradura", "8.0" - end - - bundle "outdated --groups" - expect(out).to include("===== Group default =====") - expect(out).to include("terranova (newest 9, installed 8, requested = 8)") - expect(out).to include("===== Group development, test =====") - expect(out).to include("activesupport (newest 3.0, installed 2.3.5, requested = 2.3.5)") - expect(out).to include("duradura (newest 8.0, installed 7.0, requested = 7.0)") - - expect(out).not_to include("weakling (") - - # TODO: check gems order inside the group - end - end - - describe "with --local option" do - it "uses local cache to return a list of outdated gems" do - update_repo2 do - build_gem "activesupport", "2.3.4" - end - - bundle! "config clean false" - - install_gemfile <<-G - source "file://#{gem_repo2}" - gem "activesupport", "2.3.4" - G - - bundle "outdated --local" - - expect(out).to include("activesupport (newest 2.3.5, installed 2.3.4, requested = 2.3.4)") - end - - it "doesn't hit repo2" do - FileUtils.rm_rf(gem_repo2) - - bundle "outdated --local" - expect(out).not_to match(/Fetching (gem|version|dependency) metadata from/) - end - end - - shared_examples_for "a minimal output is desired" do - context "and gems are outdated" do - before do - update_repo2 do - build_gem "activesupport", "3.0" - build_gem "weakling", "0.2" - end - end - - it "outputs a sorted list of outdated gems with a more minimal format" do - minimal_output = "activesupport (newest 3.0, installed 2.3.5, requested = 2.3.5)\n" \ - "weakling (newest 0.2, installed 0.0.3, requested ~> 0.0.1)" - subject - expect(out).to eq(minimal_output) - end - end - - context "and no gems are outdated" do - it "has empty output" do - subject - expect(out).to eq("") - end - end - end - - describe "with --parseable option" do - subject { bundle "outdated --parseable" } - - it_behaves_like "a minimal output is desired" - end - - describe "with aliased --porcelain option" do - subject { bundle "outdated --porcelain" } - - it_behaves_like "a minimal output is desired" - end - - describe "with specified gems" do - it "returns list of outdated gems" do - update_repo2 do - build_gem "activesupport", "3.0" - update_git "foo", :path => lib_path("foo") - end - - bundle "outdated foo" - expect(out).not_to include("activesupport (newest") - expect(out).to include("foo (newest 1.0") - end - end - - describe "pre-release gems" do - context "without the --pre option" do - it "ignores pre-release versions" do - update_repo2 do - build_gem "activesupport", "3.0.0.beta" - end - - bundle "outdated" - expect(out).not_to include("activesupport (3.0.0.beta > 2.3.5)") - end - end - - context "with the --pre option" do - it "includes pre-release versions" do - update_repo2 do - build_gem "activesupport", "3.0.0.beta" - end - - bundle "outdated --pre" - expect(out).to include("activesupport (newest 3.0.0.beta, installed 2.3.5, requested = 2.3.5)") - end - end - - context "when current gem is a pre-release" do - it "includes the gem" do - update_repo2 do - build_gem "activesupport", "3.0.0.beta.1" - build_gem "activesupport", "3.0.0.beta.2" - end - - install_gemfile <<-G - source "file://#{gem_repo2}" - gem "activesupport", "3.0.0.beta.1" - G - - bundle "outdated" - expect(out).to include("(newest 3.0.0.beta.2, installed 3.0.0.beta.1, requested = 3.0.0.beta.1)") - end - end - end - - describe "with --strict option" do - it "only reports gems that have a newer version that matches the specified dependency version requirements" do - update_repo2 do - build_gem "activesupport", "3.0" - build_gem "weakling", "0.0.5" - end - - bundle "outdated --strict" - - expect(out).to_not include("activesupport (newest") - expect(out).to include("(newest 0.0.5, installed 0.0.3, requested ~> 0.0.1)") - end - - it "only reports gem dependencies when they can actually be updated" do - install_gemfile <<-G - source "file://#{gem_repo2}" - gem "rack_middleware", "1.0" - G - - bundle "outdated --strict" - - expect(out).to_not include("rack (1.2") - end - - describe "and filter options" do - it "only reports gems that match requirement and patch filter level" do - install_gemfile <<-G - source "file://#{gem_repo2}" - gem "activesupport", "~> 2.3" - gem "weakling", ">= 0.0.1" - G - - update_repo2 do - build_gem "activesupport", %w[2.4.0 3.0.0] - build_gem "weakling", "0.0.5" - end - - bundle "outdated --strict --filter-patch" - - expect(out).to_not include("activesupport (newest") - expect(out).to include("(newest 0.0.5, installed 0.0.3") - end - - it "only reports gems that match requirement and minor filter level" do - install_gemfile <<-G - source "file://#{gem_repo2}" - gem "activesupport", "~> 2.3" - gem "weakling", ">= 0.0.1" - G - - update_repo2 do - build_gem "activesupport", %w[2.3.9] - build_gem "weakling", "0.1.5" - end - - bundle "outdated --strict --filter-minor" - - expect(out).to_not include("activesupport (newest") - expect(out).to include("(newest 0.1.5, installed 0.0.3") - end - - it "only reports gems that match requirement and major filter level" do - install_gemfile <<-G - source "file://#{gem_repo2}" - gem "activesupport", "~> 2.3" - gem "weakling", ">= 0.0.1" - G - - update_repo2 do - build_gem "activesupport", %w[2.4.0 2.5.0] - build_gem "weakling", "1.1.5" - end - - bundle "outdated --strict --filter-major" - - expect(out).to_not include("activesupport (newest") - expect(out).to include("(newest 1.1.5, installed 0.0.3") - end - end - end - - describe "with invalid gem name" do - it "returns could not find gem name" do - bundle "outdated invalid_gem_name" - expect(out).to include("Could not find gem 'invalid_gem_name'.") - end - - it "returns non-zero exit code" do - bundle "outdated invalid_gem_name" - expect(exitstatus).to_not be_zero if exitstatus - end - end - - it "performs an automatic bundle install" do - gemfile <<-G - source "file://#{gem_repo1}" - gem "rack", "0.9.1" - gem "foo" - G - - bundle "config auto_install 1" - bundle :outdated - expect(out).to include("Installing foo 1.0") - end - - context "after bundle install --deployment", :bundler => "< 2" do - before do - install_gemfile <<-G, forgotten_command_line_options(:deployment => true) - source "file://#{gem_repo2}" - - gem "rack" - gem "foo" - G - end - - it "outputs a helpful message about being in deployment mode" do - update_repo2 { build_gem "activesupport", "3.0" } - - bundle "outdated" - expect(last_command).to be_failure - expect(out).to include("You are trying to check outdated gems in deployment mode.") - expect(out).to include("Run `bundle outdated` elsewhere.") - expect(out).to include("If this is a development machine, remove the ") - expect(out).to include("Gemfile freeze\nby running `bundle install --no-deployment`.") - end - end - - context "after bundle config deployment true" do - before do - install_gemfile <<-G - source "file://#{gem_repo2}" - - gem "rack" - gem "foo" - G - bundle! "config deployment true" - end - - it "outputs a helpful message about being in deployment mode" do - update_repo2 { build_gem "activesupport", "3.0" } - - bundle "outdated" - expect(last_command).to be_failure - expect(out).to include("You are trying to check outdated gems in deployment mode.") - expect(out).to include("Run `bundle outdated` elsewhere.") - expect(out).to include("If this is a development machine, remove the ") - expect(out).to include("Gemfile freeze\nby running `bundle config --delete deployment`.") - end - end - - context "update available for a gem on a different platform" do - before do - install_gemfile <<-G - source "file://#{gem_repo2}" - gem "laduradura", '= 5.15.2' - G - end - - it "reports that no updates are available" do - bundle "outdated" - expect(out).to include("Bundle up to date!") - end - end - - context "update available for a gem on the same platform while multiple platforms used for gem" do - it "reports that updates are available if the Ruby platform is used" do - install_gemfile <<-G - source "file://#{gem_repo2}" - gem "laduradura", '= 5.15.2', :platforms => [:ruby, :jruby] - G - - bundle "outdated" - expect(out).to include("Bundle up to date!") - end - - it "reports that updates are available if the JRuby platform is used" do - simulate_ruby_engine "jruby", "1.6.7" do - simulate_platform "jruby" do - install_gemfile <<-G - source "file://#{gem_repo2}" - gem "laduradura", '= 5.15.2', :platforms => [:ruby, :jruby] - G - - bundle "outdated" - expect(out).to include("Outdated gems included in the bundle:") - expect(out).to include("laduradura (newest 5.15.3, installed 5.15.2, requested = 5.15.2)") - end - end - end - end - - shared_examples_for "version update is detected" do - it "reports that a gem has a newer version" do - subject - expect(out).to include("Outdated gems included in the bundle:") - expect(out).to include("activesupport (newest") - expect(out).to_not include("ERROR REPORT TEMPLATE") - end - end - - shared_examples_for "major version updates are detected" do - before do - update_repo2 do - build_gem "activesupport", "3.3.5" - build_gem "weakling", "0.8.0" - end - end - - it_behaves_like "version update is detected" - end - - context "when on a new machine" do - before do - simulate_new_machine - - update_git "foo", :path => lib_path("foo") - update_repo2 do - build_gem "activesupport", "3.3.5" - build_gem "weakling", "0.8.0" - end - end - - subject { bundle "outdated" } - it_behaves_like "version update is detected" - end - - shared_examples_for "minor version updates are detected" do - before do - update_repo2 do - build_gem "activesupport", "2.7.5" - build_gem "weakling", "2.0.1" - end - end - - it_behaves_like "version update is detected" - end - - shared_examples_for "patch version updates are detected" do - before do - update_repo2 do - build_gem "activesupport", "2.3.7" - build_gem "weakling", "0.3.1" - end - end - - it_behaves_like "version update is detected" - end - - shared_examples_for "no version updates are detected" do - it "does not detect any version updates" do - subject - expect(out).to include("updates to display.") - expect(out).to_not include("ERROR REPORT TEMPLATE") - expect(out).to_not include("activesupport (newest") - expect(out).to_not include("weakling (newest") - end - end - - shared_examples_for "major version is ignored" do - before do - update_repo2 do - build_gem "activesupport", "3.3.5" - build_gem "weakling", "1.0.1" - end - end - - it_behaves_like "no version updates are detected" - end - - shared_examples_for "minor version is ignored" do - before do - update_repo2 do - build_gem "activesupport", "2.4.5" - build_gem "weakling", "0.3.1" - end - end - - it_behaves_like "no version updates are detected" - end - - shared_examples_for "patch version is ignored" do - before do - update_repo2 do - build_gem "activesupport", "2.3.6" - build_gem "weakling", "0.0.4" - end - end - - it_behaves_like "no version updates are detected" - end - - describe "with --filter-major option" do - subject { bundle "outdated --filter-major" } - - it_behaves_like "major version updates are detected" - it_behaves_like "minor version is ignored" - it_behaves_like "patch version is ignored" - end - - describe "with --filter-minor option" do - subject { bundle "outdated --filter-minor" } - - it_behaves_like "minor version updates are detected" - it_behaves_like "major version is ignored" - it_behaves_like "patch version is ignored" - end - - describe "with --filter-patch option" do - subject { bundle "outdated --filter-patch" } - - it_behaves_like "patch version updates are detected" - it_behaves_like "major version is ignored" - it_behaves_like "minor version is ignored" - end - - describe "with --filter-minor --filter-patch options" do - subject { bundle "outdated --filter-minor --filter-patch" } - - it_behaves_like "minor version updates are detected" - it_behaves_like "patch version updates are detected" - it_behaves_like "major version is ignored" - end - - describe "with --filter-major --filter-minor options" do - subject { bundle "outdated --filter-major --filter-minor" } - - it_behaves_like "major version updates are detected" - it_behaves_like "minor version updates are detected" - it_behaves_like "patch version is ignored" - end - - describe "with --filter-major --filter-patch options" do - subject { bundle "outdated --filter-major --filter-patch" } - - it_behaves_like "major version updates are detected" - it_behaves_like "patch version updates are detected" - it_behaves_like "minor version is ignored" - end - - describe "with --filter-major --filter-minor --filter-patch options" do - subject { bundle "outdated --filter-major --filter-minor --filter-patch" } - - it_behaves_like "major version updates are detected" - it_behaves_like "minor version updates are detected" - it_behaves_like "patch version updates are detected" - end - - context "conservative updates" do - context "without update-strict" do - before do - build_repo4 do - build_gem "patch", %w[1.0.0 1.0.1] - build_gem "minor", %w[1.0.0 1.0.1 1.1.0] - build_gem "major", %w[1.0.0 1.0.1 1.1.0 2.0.0] - end - - # establish a lockfile set to 1.0.0 - install_gemfile <<-G - source "file://#{gem_repo4}" - gem 'patch', '1.0.0' - gem 'minor', '1.0.0' - gem 'major', '1.0.0' - G - - # remove 1.4.3 requirement and bar altogether - # to setup update specs below - gemfile <<-G - source "file://#{gem_repo4}" - gem 'patch' - gem 'minor' - gem 'major' - G - end - - it "shows nothing when patching and filtering to minor" do - bundle "outdated --patch --filter-minor" - - expect(out).to include("No minor updates to display.") - expect(out).not_to include("patch (newest") - expect(out).not_to include("minor (newest") - expect(out).not_to include("major (newest") - end - - it "shows all gems when patching and filtering to patch" do - bundle "outdated --patch --filter-patch" - - expect(out).to include("patch (newest 1.0.1") - expect(out).to include("minor (newest 1.0.1") - expect(out).to include("major (newest 1.0.1") - end - - it "shows minor and major when updating to minor and filtering to patch and minor" do - bundle "outdated --minor --filter-minor" - - expect(out).not_to include("patch (newest") - expect(out).to include("minor (newest 1.1.0") - expect(out).to include("major (newest 1.1.0") - end - - it "shows minor when updating to major and filtering to minor with parseable" do - bundle "outdated --major --filter-minor --parseable" - - expect(out).not_to include("patch (newest") - expect(out).to include("minor (newest") - expect(out).not_to include("major (newest") - end - end - - context "with update-strict" do - before do - build_repo4 do - build_gem "foo", %w[1.4.3 1.4.4] do |s| - s.add_dependency "bar", "~> 2.0" - end - build_gem "foo", %w[1.4.5 1.5.0] do |s| - s.add_dependency "bar", "~> 2.1" - end - build_gem "foo", %w[1.5.1] do |s| - s.add_dependency "bar", "~> 3.0" - end - build_gem "bar", %w[2.0.3 2.0.4 2.0.5 2.1.0 2.1.1 3.0.0] - build_gem "qux", %w[1.0.0 1.1.0 2.0.0] - end - - # establish a lockfile set to 1.4.3 - install_gemfile <<-G - source "file://#{gem_repo4}" - gem 'foo', '1.4.3' - gem 'bar', '2.0.3' - gem 'qux', '1.0.0' - G - - # remove 1.4.3 requirement and bar altogether - # to setup update specs below - gemfile <<-G - source "file://#{gem_repo4}" - gem 'foo' - gem 'qux' - G - end - - it "shows gems with update-strict updating to patch and filtering to patch" do - bundle "outdated --patch --update-strict --filter-patch" - - expect(out).to include("foo (newest 1.4.4") - expect(out).to include("bar (newest 2.0.5") - expect(out).not_to include("qux (newest") - end - end - end -end diff --git a/spec/bundler/commands/package_spec.rb b/spec/bundler/commands/package_spec.rb deleted file mode 100644 index 6351909bc7..0000000000 --- a/spec/bundler/commands/package_spec.rb +++ /dev/null @@ -1,306 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe "bundle package" do - context "with --gemfile" do - it "finds the gemfile" do - gemfile bundled_app("NotGemfile"), <<-G - source "file://#{gem_repo1}" - gem 'rack' - G - - bundle "package --gemfile=NotGemfile" - - ENV["BUNDLE_GEMFILE"] = "NotGemfile" - expect(the_bundle).to include_gems "rack 1.0.0" - end - end - - context "with --all" do - context "without a gemspec" do - it "caches all dependencies except bundler itself" do - gemfile <<-D - source "file://#{gem_repo1}" - gem 'rack' - gem 'bundler' - D - - bundle :package, forgotten_command_line_options([:all, :cache_all] => true) - - expect(bundled_app("vendor/cache/rack-1.0.0.gem")).to exist - expect(bundled_app("vendor/cache/bundler-0.9.gem")).to_not exist - end - end - - context "with a gemspec" do - context "that has the same name as the gem" do - before do - File.open(bundled_app("mygem.gemspec"), "w") do |f| - f.write <<-G - Gem::Specification.new do |s| - s.name = "mygem" - s.version = "0.1.1" - s.summary = "" - s.authors = ["gem author"] - s.add_development_dependency "nokogiri", "=1.4.2" - end - G - end - end - - it "caches all dependencies except bundler and the gemspec specified gem" do - gemfile <<-D - source "file://#{gem_repo1}" - gem 'rack' - gemspec - D - - bundle! :package, forgotten_command_line_options([:all, :cache_all] => true) - - expect(bundled_app("vendor/cache/rack-1.0.0.gem")).to exist - expect(bundled_app("vendor/cache/nokogiri-1.4.2.gem")).to exist - expect(bundled_app("vendor/cache/mygem-0.1.1.gem")).to_not exist - expect(bundled_app("vendor/cache/bundler-0.9.gem")).to_not exist - end - end - - context "that has a different name as the gem" do - before do - File.open(bundled_app("mygem_diffname.gemspec"), "w") do |f| - f.write <<-G - Gem::Specification.new do |s| - s.name = "mygem" - s.version = "0.1.1" - s.summary = "" - s.authors = ["gem author"] - s.add_development_dependency "nokogiri", "=1.4.2" - end - G - end - end - - it "caches all dependencies except bundler and the gemspec specified gem" do - gemfile <<-D - source "file://#{gem_repo1}" - gem 'rack' - gemspec - D - - bundle! :package, forgotten_command_line_options([:all, :cache_all] => true) - - expect(bundled_app("vendor/cache/rack-1.0.0.gem")).to exist - expect(bundled_app("vendor/cache/nokogiri-1.4.2.gem")).to exist - expect(bundled_app("vendor/cache/mygem-0.1.1.gem")).to_not exist - expect(bundled_app("vendor/cache/bundler-0.9.gem")).to_not exist - end - end - end - - context "with multiple gemspecs" do - before do - File.open(bundled_app("mygem.gemspec"), "w") do |f| - f.write <<-G - Gem::Specification.new do |s| - s.name = "mygem" - s.version = "0.1.1" - s.summary = "" - s.authors = ["gem author"] - s.add_development_dependency "nokogiri", "=1.4.2" - end - G - end - File.open(bundled_app("mygem_client.gemspec"), "w") do |f| - f.write <<-G - Gem::Specification.new do |s| - s.name = "mygem_test" - s.version = "0.1.1" - s.summary = "" - s.authors = ["gem author"] - s.add_development_dependency "weakling", "=0.0.3" - end - G - end - end - - it "caches all dependencies except bundler and the gemspec specified gems" do - gemfile <<-D - source "file://#{gem_repo1}" - gem 'rack' - gemspec :name => 'mygem' - gemspec :name => 'mygem_test' - D - - bundle! :package, forgotten_command_line_options([:all, :cache_all] => true) - - expect(bundled_app("vendor/cache/rack-1.0.0.gem")).to exist - expect(bundled_app("vendor/cache/nokogiri-1.4.2.gem")).to exist - expect(bundled_app("vendor/cache/weakling-0.0.3.gem")).to exist - expect(bundled_app("vendor/cache/mygem-0.1.1.gem")).to_not exist - expect(bundled_app("vendor/cache/mygem_test-0.1.1.gem")).to_not exist - expect(bundled_app("vendor/cache/bundler-0.9.gem")).to_not exist - end - end - end - - context "with --path", :bundler => "< 2" do - it "sets root directory for gems" do - gemfile <<-D - source "file://#{gem_repo1}" - gem 'rack' - D - - bundle! :package, forgotten_command_line_options(:path => bundled_app("test")) - - expect(the_bundle).to include_gems "rack 1.0.0" - expect(bundled_app("test/vendor/cache/")).to exist - end - end - - context "with --no-install" do - it "puts the gems in vendor/cache but does not install them" do - gemfile <<-D - source "file://#{gem_repo1}" - gem 'rack' - D - - bundle! "package --no-install" - - expect(the_bundle).not_to include_gems "rack 1.0.0" - expect(bundled_app("vendor/cache/rack-1.0.0.gem")).to exist - end - - it "does not prevent installing gems with bundle install" do - gemfile <<-D - source "file://#{gem_repo1}" - gem 'rack' - D - - bundle! "package --no-install" - bundle! "install" - - expect(the_bundle).to include_gems "rack 1.0.0" - end - end - - context "with --all-platforms" do - it "puts the gems in vendor/cache even for other rubies", :ruby => "2.1" do - gemfile <<-D - source "file://#{gem_repo1}" - gem 'rack', :platforms => :ruby_19 - D - - bundle "package --all-platforms" - expect(bundled_app("vendor/cache/rack-1.0.0.gem")).to exist - end - end - - context "with --frozen" do - before do - gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - G - bundle "install" - end - - subject { bundle :package, forgotten_command_line_options(:frozen => true) } - - it "tries to install with frozen" do - bundle! "config deployment true" - gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - gem "rack-obama" - G - subject - expect(exitstatus).to eq(16) if exitstatus - expect(out).to include("deployment mode") - expect(out).to include("You have added to the Gemfile") - expect(out).to include("* rack-obama") - bundle "env" - expect(out).to include("frozen").or include("deployment") - end - end -end - -RSpec.describe "bundle install with gem sources" do - describe "when cached and locked" do - it "does not hit the remote at all" do - build_repo2 - install_gemfile <<-G - source "file://#{gem_repo2}" - gem "rack" - G - - bundle :pack - simulate_new_machine - FileUtils.rm_rf gem_repo2 - - bundle "install --local" - expect(the_bundle).to include_gems "rack 1.0.0" - end - - it "does not hit the remote at all" do - build_repo2 - install_gemfile! <<-G - source "file://#{gem_repo2}" - gem "rack" - G - - bundle! :pack - simulate_new_machine - FileUtils.rm_rf gem_repo2 - - bundle! :install, forgotten_command_line_options(:deployment => true, :path => "vendor/bundle") - expect(the_bundle).to include_gems "rack 1.0.0" - end - - it "does not reinstall already-installed gems" do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - G - bundle :pack - - build_gem "rack", "1.0.0", :path => bundled_app("vendor/cache") do |s| - s.write "lib/rack.rb", "raise 'omg'" - end - - bundle :install - expect(err).to lack_errors - expect(the_bundle).to include_gems "rack 1.0" - end - - it "ignores cached gems for the wrong platform" do - simulate_platform "java" do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "platform_specific" - G - bundle :pack - end - - simulate_new_machine - - simulate_platform "ruby" do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "platform_specific" - G - run "require 'platform_specific' ; puts PLATFORM_SPECIFIC" - expect(out).to eq("1.0.0 RUBY") - end - end - - it "does not update the cache if --no-cache is passed" do - gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - G - bundled_app("vendor/cache").mkpath - expect(bundled_app("vendor/cache").children).to be_empty - - bundle "install --no-cache" - expect(bundled_app("vendor/cache").children).to be_empty - end - end -end diff --git a/spec/bundler/commands/pristine_spec.rb b/spec/bundler/commands/pristine_spec.rb deleted file mode 100644 index 24291c1918..0000000000 --- a/spec/bundler/commands/pristine_spec.rb +++ /dev/null @@ -1,168 +0,0 @@ -# frozen_string_literal: true - -require "bundler/vendored_fileutils" - -RSpec.describe "bundle pristine", :ruby_repo do - before :each do - build_lib "baz", :path => bundled_app do |s| - s.version = "1.0.0" - s.add_development_dependency "baz-dev", "=1.0.0" - end - - build_repo2 do - build_gem "weakling" - build_gem "baz-dev", "1.0.0" - build_gem "very_simple_binary", &:add_c_extension - build_git "foo", :path => lib_path("foo") - build_lib "bar", :path => lib_path("bar") - end - - install_gemfile! <<-G - source "file://#{gem_repo2}" - gem "weakling" - gem "very_simple_binary" - gem "foo", :git => "#{lib_path("foo")}" - gem "bar", :path => "#{lib_path("bar")}" - - gemspec - G - end - - context "when sourced from RubyGems" do - it "reverts using cached .gem file" do - spec = Bundler.definition.specs["weakling"].first - changes_txt = Pathname.new(spec.full_gem_path).join("lib/changes.txt") - - FileUtils.touch(changes_txt) - expect(changes_txt).to be_file - - bundle "pristine" - expect(changes_txt).to_not be_file - end - - it "does not delete the bundler gem", :ruby_repo do - ENV["BUNDLER_SPEC_KEEP_DEFAULT_BUNDLER_GEM"] = "true" - system_gems :bundler - bundle! "install" - bundle! "pristine", :system_bundler => true - bundle! "-v", :system_bundler => true - # An old rubygems couldn't handle a correct version of vendoered bundler. - bundler_version = Gem::VERSION < "2.1" ? "1.16.0" : Bundler::VERSION - expect(out).to end_with(bundler_version) - end - end - - context "when sourced from git repo" do - it "reverts by resetting to current revision`" do - spec = Bundler.definition.specs["foo"].first - changed_file = Pathname.new(spec.full_gem_path).join("lib/foo.rb") - diff = "#Pristine spec changes" - - File.open(changed_file, "a") {|f| f.puts diff } - expect(File.read(changed_file)).to include(diff) - - bundle! "pristine" - expect(File.read(changed_file)).to_not include(diff) - end - - it "removes added files" do - spec = Bundler.definition.specs["foo"].first - changes_txt = Pathname.new(spec.full_gem_path).join("lib/changes.txt") - - FileUtils.touch(changes_txt) - expect(changes_txt).to be_file - - bundle! "pristine" - expect(changes_txt).not_to be_file - end - end - - context "when sourced from gemspec" do - it "displays warning and ignores changes when sourced from gemspec" do - spec = Bundler.definition.specs["baz"].first - changed_file = Pathname.new(spec.full_gem_path).join("lib/baz.rb") - diff = "#Pristine spec changes" - - File.open(changed_file, "a") {|f| f.puts diff } - expect(File.read(changed_file)).to include(diff) - - bundle "pristine" - expect(File.read(changed_file)).to include(diff) - expect(out).to include("Cannot pristine #{spec.name} (#{spec.version}#{spec.git_version}). Gem is sourced from local path.") - end - - it "reinstall gemspec dependency" do - spec = Bundler.definition.specs["baz-dev"].first - changed_file = Pathname.new(spec.full_gem_path).join("lib/baz-dev.rb") - diff = "#Pristine spec changes" - - File.open(changed_file, "a") {|f| f.puts "#Pristine spec changes" } - expect(File.read(changed_file)).to include(diff) - - bundle "pristine" - expect(File.read(changed_file)).to_not include(diff) - end - end - - context "when sourced from path" do - it "displays warning and ignores changes when sourced from local path" do - spec = Bundler.definition.specs["bar"].first - changes_txt = Pathname.new(spec.full_gem_path).join("lib/changes.txt") - FileUtils.touch(changes_txt) - expect(changes_txt).to be_file - bundle "pristine" - expect(out).to include("Cannot pristine #{spec.name} (#{spec.version}#{spec.git_version}). Gem is sourced from local path.") - expect(changes_txt).to be_file - end - end - - context "when passing a list of gems to pristine" do - it "resets them" do - foo = Bundler.definition.specs["foo"].first - foo_changes_txt = Pathname.new(foo.full_gem_path).join("lib/changes.txt") - FileUtils.touch(foo_changes_txt) - expect(foo_changes_txt).to be_file - - bar = Bundler.definition.specs["bar"].first - bar_changes_txt = Pathname.new(bar.full_gem_path).join("lib/changes.txt") - FileUtils.touch(bar_changes_txt) - expect(bar_changes_txt).to be_file - - weakling = Bundler.definition.specs["weakling"].first - weakling_changes_txt = Pathname.new(weakling.full_gem_path).join("lib/changes.txt") - FileUtils.touch(weakling_changes_txt) - expect(weakling_changes_txt).to be_file - - bundle! "pristine foo bar weakling" - - expect(out).to include("Cannot pristine bar (1.0). Gem is sourced from local path."). - and include("Installing weakling 1.0") - - expect(weakling_changes_txt).not_to be_file - expect(foo_changes_txt).not_to be_file - expect(bar_changes_txt).to be_file - end - - it "raises when one of them is not in the lockfile" do - bundle "pristine abcabcabc" - expect(out).to include("Could not find gem 'abcabcabc'.") - end - end - - context "when a build config exists for one of the gems" do - let(:very_simple_binary) { Bundler.definition.specs["very_simple_binary"].first } - let(:c_ext_dir) { Pathname.new(very_simple_binary.full_gem_path).join("ext") } - let(:build_opt) { "--with-ext-lib=#{c_ext_dir}" } - before { bundle "config build.very_simple_binary -- #{build_opt}" } - - # This just verifies that the generated Makefile from the c_ext gem makes - # use of the build_args from the bundle config - it "applies the config when installing the gem" do - bundle! "pristine" - - makefile_contents = File.read(c_ext_dir.join("Makefile").to_s) - expect(makefile_contents).to match(/libpath =.*#{c_ext_dir}/) - expect(makefile_contents).to match(/LIBPATH =.*-L#{c_ext_dir}/) - end - end -end diff --git a/spec/bundler/commands/show_spec.rb b/spec/bundler/commands/show_spec.rb deleted file mode 100644 index adbf289fd0..0000000000 --- a/spec/bundler/commands/show_spec.rb +++ /dev/null @@ -1,190 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe "bundle show", :bundler => "< 2" do - context "with a standard Gemfile" do - before :each do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "rails" - G - end - - it "creates a Gemfile.lock if one did not exist" do - FileUtils.rm("Gemfile.lock") - - bundle "show" - - expect(bundled_app("Gemfile.lock")).to exist - end - - it "creates a Gemfile.lock when invoked with a gem name" do - FileUtils.rm("Gemfile.lock") - - bundle "show rails" - - expect(bundled_app("Gemfile.lock")).to exist - end - - it "prints path if gem exists in bundle" do - bundle "show rails" - expect(out).to eq(default_bundle_path("gems", "rails-2.3.2").to_s) - end - - it "warns if path no longer exists on disk" do - FileUtils.rm_rf(default_bundle_path("gems", "rails-2.3.2")) - - bundle "show rails" - - expect(out).to match(/has been deleted/i). - and include(default_bundle_path("gems", "rails-2.3.2").to_s) - end - - it "prints the path to the running bundler", :ruby_repo do - bundle "show bundler" - expect(out).to eq(root.to_s) - end - - it "complains if gem not in bundle" do - bundle "show missing" - expect(out).to match(/could not find gem 'missing'/i) - end - - it "prints path of all gems in bundle sorted by name" do - bundle "show --paths" - - expect(out).to include(default_bundle_path("gems", "rake-10.0.2").to_s) - expect(out).to include(default_bundle_path("gems", "rails-2.3.2").to_s) - - # Gem names are the last component of their path. - gem_list = out.split.map {|p| p.split("/").last } - expect(gem_list).to eq(gem_list.sort) - end - - it "prints summary of gems" do - bundle "show --verbose" - - expect(out).to include("* actionmailer (2.3.2)") - expect(out).to include("\tSummary: This is just a fake gem for testing") - expect(out).to include("\tHomepage: No website available.") - expect(out).to include("\tStatus: Up to date") - end - end - - context "with a git repo in the Gemfile" do - before :each do - @git = build_git "foo", "1.0" - end - - it "prints out git info" do - install_gemfile <<-G - gem "foo", :git => "#{lib_path("foo-1.0")}" - G - expect(the_bundle).to include_gems "foo 1.0" - - bundle :show - expect(out).to include("foo (1.0 #{@git.ref_for("master", 6)}") - end - - it "prints out branch names other than master" do - update_git "foo", :branch => "omg" do |s| - s.write "lib/foo.rb", "FOO = '1.0.omg'" - end - @revision = revision_for(lib_path("foo-1.0"))[0...6] - - install_gemfile <<-G - gem "foo", :git => "#{lib_path("foo-1.0")}", :branch => "omg" - G - expect(the_bundle).to include_gems "foo 1.0.omg" - - bundle :show - expect(out).to include("foo (1.0 #{@git.ref_for("omg", 6)}") - end - - it "doesn't print the branch when tied to a ref" do - sha = revision_for(lib_path("foo-1.0")) - install_gemfile <<-G - gem "foo", :git => "#{lib_path("foo-1.0")}", :ref => "#{sha}" - G - - bundle :show - expect(out).to include("foo (1.0 #{sha[0..6]})") - end - - it "handles when a version is a '-' prerelease", :rubygems => "2.1" do - @git = build_git("foo", "1.0.0-beta.1", :path => lib_path("foo")) - install_gemfile <<-G - gem "foo", "1.0.0-beta.1", :git => "#{lib_path("foo")}" - G - expect(the_bundle).to include_gems "foo 1.0.0.pre.beta.1" - - bundle! :show - expect(out).to include("foo (1.0.0.pre.beta.1") - end - end - - context "in a fresh gem in a blank git repo" do - before :each do - build_git "foo", :path => lib_path("foo") - in_app_root_custom lib_path("foo") - File.open("Gemfile", "w") {|f| f.puts "gemspec" } - sys_exec "rm -rf .git && git init" - end - - it "does not output git errors" do - bundle :show - expect(err).to lack_errors - end - end - - it "performs an automatic bundle install" do - gemfile <<-G - source "file://#{gem_repo1}" - gem "foo" - G - - bundle "config auto_install 1" - bundle :show - expect(out).to include("Installing foo 1.0") - end - - context "with an invalid regexp for gem name" do - it "does not find the gem" do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "rails" - G - - invalid_regexp = "[]" - - bundle "show #{invalid_regexp}" - expect(out).to include("Could not find gem '#{invalid_regexp}'.") - end - end - - context "--outdated option" do - # Regression test for https://github.com/bundler/bundler/issues/5375 - before do - build_repo2 - end - - it "doesn't update gems to newer versions" do - install_gemfile! <<-G - source "file://#{gem_repo2}" - gem "rails" - G - - expect(the_bundle).to include_gem("rails 2.3.2") - - update_repo2 do - build_gem "rails", "3.0.0" do |s| - s.executables = "rails" - end - end - - bundle! "show --outdated" - - bundle! "install" - expect(the_bundle).to include_gem("rails 2.3.2") - end - end -end diff --git a/spec/bundler/commands/update_spec.rb b/spec/bundler/commands/update_spec.rb deleted file mode 100644 index 33679dd649..0000000000 --- a/spec/bundler/commands/update_spec.rb +++ /dev/null @@ -1,838 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe "bundle update" do - before :each do - build_repo2 - - install_gemfile <<-G - source "file://#{gem_repo2}" - gem "activesupport" - gem "rack-obama" - G - end - - describe "with no arguments", :bundler => "< 2" do - it "updates the entire bundle" do - update_repo2 do - build_gem "activesupport", "3.0" - end - - bundle "update" - expect(out).to include("Bundle updated!") - expect(the_bundle).to include_gems "rack 1.2", "rack-obama 1.0", "activesupport 3.0" - end - - it "doesn't delete the Gemfile.lock file if something goes wrong" do - gemfile <<-G - source "file://#{gem_repo2}" - gem "activesupport" - gem "rack-obama" - exit! - G - bundle "update" - expect(bundled_app("Gemfile.lock")).to exist - end - end - - describe "with --all", :bundler => "2" do - it "updates the entire bundle" do - update_repo2 do - build_gem "activesupport", "3.0" - end - - bundle! "update", :all => true - expect(out).to include("Bundle updated!") - expect(the_bundle).to include_gems "rack 1.2", "rack-obama 1.0", "activesupport 3.0" - end - - it "doesn't delete the Gemfile.lock file if something goes wrong" do - gemfile <<-G - source "file://#{gem_repo2}" - gem "activesupport" - gem "rack-obama" - exit! - G - bundle "update", :all => true - expect(bundled_app("Gemfile.lock")).to exist - end - end - - context "when update_requires_all_flag is set" do - before { bundle! "config update_requires_all_flag true" } - - it "errors when passed nothing" do - install_gemfile! "" - bundle :update - expect(out).to eq("To update everything, pass the `--all` flag.") - end - - it "errors when passed --all and another option" do - install_gemfile! "" - bundle "update --all foo" - expect(out).to eq("Cannot specify --all along with specific options.") - end - - it "updates everything when passed --all" do - install_gemfile! "" - bundle "update --all" - expect(out).to include("Bundle updated!") - end - end - - describe "--quiet argument" do - it "hides UI messages" do - bundle "update --quiet" - expect(out).not_to include("Bundle updated!") - end - end - - describe "with a top level dependency" do - it "unlocks all child dependencies that are unrelated to other locked dependencies" do - update_repo2 do - build_gem "activesupport", "3.0" - end - - bundle "update rack-obama" - expect(the_bundle).to include_gems "rack 1.2", "rack-obama 1.0", "activesupport 2.3.5" - end - end - - describe "with an unknown dependency" do - it "should inform the user" do - bundle "update halting-problem-solver" - expect(out).to include "Could not find gem 'halting-problem-solver'" - end - it "should suggest alternatives" do - bundle "update active-support" - expect(out).to include "Did you mean activesupport?" - end - end - - describe "with a child dependency" do - it "should update the child dependency" do - update_repo2 - bundle "update rack" - expect(the_bundle).to include_gems "rack 1.2" - end - end - - describe "when a possible resolve requires an older version of a locked gem" do - context "and only_update_to_newer_versions is set" do - before do - bundle! "config only_update_to_newer_versions true" - end - it "does not go to an older version" do - build_repo4 do - build_gem "a" do |s| - s.add_dependency "b" - s.add_dependency "c" - end - build_gem "b" - build_gem "c" - build_gem "c", "2.0" - end - - install_gemfile! <<-G - source "file:#{gem_repo4}" - gem "a" - G - - expect(the_bundle).to include_gems("a 1.0", "b 1.0", "c 2.0") - - update_repo4 do - build_gem "b", "2.0" do |s| - s.add_dependency "c", "< 2" - end - end - - bundle! "update", :all => bundle_update_requires_all? - - expect(the_bundle).to include_gems("a 1.0", "b 1.0", "c 2.0") - end - end - end - - describe "with --local option" do - it "doesn't hit repo2" do - FileUtils.rm_rf(gem_repo2) - - bundle "update --local --all" - expect(out).not_to include("Fetching source index") - end - end - - describe "with --group option" do - it "should update only specified group gems" do - install_gemfile <<-G - source "file://#{gem_repo2}" - gem "activesupport", :group => :development - gem "rack" - G - update_repo2 do - build_gem "activesupport", "3.0" - end - bundle "update --group development" - expect(the_bundle).to include_gems "activesupport 3.0" - expect(the_bundle).not_to include_gems "rack 1.2" - end - - context "when there is a source with the same name as a gem in a group" do - before :each do - build_git "foo", :path => lib_path("activesupport") - install_gemfile <<-G - source "file://#{gem_repo2}" - gem "activesupport", :group => :development - gem "foo", :git => "#{lib_path("activesupport")}" - G - end - - it "should not update the gems from that source" do - update_repo2 { build_gem "activesupport", "3.0" } - update_git "foo", "2.0", :path => lib_path("activesupport") - - bundle "update --group development" - expect(the_bundle).to include_gems "activesupport 3.0" - expect(the_bundle).not_to include_gems "foo 2.0" - end - end - - context "when bundler itself is a transitive dependency" do - it "executes without error" do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "activesupport", :group => :development - gem "rack" - G - update_repo2 do - build_gem "activesupport", "3.0" - end - bundle "update --group development" - expect(the_bundle).to include_gems "activesupport 2.3.5" - expect(the_bundle).to include_gems "bundler #{Bundler::VERSION}" - expect(the_bundle).not_to include_gems "rack 1.2" - end - end - end - - describe "in a frozen bundle" do - it "should fail loudly", :bundler => "< 2" do - bundle! "install --deployment" - bundle "update", :all => bundle_update_requires_all? - - expect(last_command).to be_failure - expect(out).to match(/You are trying to install in deployment mode after changing.your Gemfile/m) - expect(out).to match(/freeze \nby running `bundle install --no-deployment`./m) - end - - it "should suggest different command when frozen is set globally", :bundler => "< 2" do - bundle! "config --global frozen 1" - bundle "update", :all => bundle_update_requires_all? - expect(out).to match(/You are trying to install in deployment mode after changing.your Gemfile/m). - and match(/freeze \nby running `bundle config --delete frozen`./m) - end - - it "should suggest different command when frozen is set globally", :bundler => "2" do - bundle! "config --global deployment true" - bundle "update", :all => bundle_update_requires_all? - expect(out).to match(/You are trying to install in deployment mode after changing.your Gemfile/m). - and match(/freeze \nby running `bundle config --delete deployment`./m) - end - end - - describe "with --source option" do - it "should not update gems not included in the source that happen to have the same name", :bundler => "< 2" do - install_gemfile! <<-G - source "file://#{gem_repo2}" - gem "activesupport" - G - update_repo2 { build_gem "activesupport", "3.0" } - - bundle! "update --source activesupport" - expect(the_bundle).to include_gem "activesupport 3.0" - end - - it "should not update gems not included in the source that happen to have the same name", :bundler => "2" do - install_gemfile! <<-G - source "file://#{gem_repo2}" - gem "activesupport" - G - update_repo2 { build_gem "activesupport", "3.0" } - - bundle! "update --source activesupport" - expect(the_bundle).not_to include_gem "activesupport 3.0" - end - - context "with unlock_source_unlocks_spec set to false" do - before { bundle! "config unlock_source_unlocks_spec false" } - - it "should not update gems not included in the source that happen to have the same name" do - install_gemfile <<-G - source "file://#{gem_repo2}" - gem "activesupport" - G - update_repo2 { build_gem "activesupport", "3.0" } - - bundle "update --source activesupport" - expect(the_bundle).not_to include_gems "activesupport 3.0" - end - end - end - - context "when there is a child dependency that is also in the gemfile" do - before do - build_repo2 do - build_gem "fred", "1.0" - build_gem "harry", "1.0" do |s| - s.add_dependency "fred" - end - end - - install_gemfile <<-G - source "file://#{gem_repo2}" - gem "harry" - gem "fred" - G - end - - it "should not update the child dependencies of a gem that has the same name as the source", :bundler => "< 2" do - update_repo2 do - build_gem "fred", "2.0" - build_gem "harry", "2.0" do |s| - s.add_dependency "fred" - end - end - - bundle "update --source harry" - expect(the_bundle).to include_gems "harry 2.0" - expect(the_bundle).to include_gems "fred 1.0" - end - - it "should not update the child dependencies of a gem that has the same name as the source", :bundler => "2" do - update_repo2 do - build_gem "fred", "2.0" - build_gem "harry", "2.0" do |s| - s.add_dependency "fred" - end - end - - bundle "update --source harry" - expect(the_bundle).to include_gems "harry 1.0", "fred 1.0" - end - end - - context "when there is a child dependency that appears elsewhere in the dependency graph" do - before do - build_repo2 do - build_gem "fred", "1.0" do |s| - s.add_dependency "george" - end - build_gem "george", "1.0" - build_gem "harry", "1.0" do |s| - s.add_dependency "george" - end - end - - install_gemfile <<-G - source "file://#{gem_repo2}" - gem "harry" - gem "fred" - G - end - - it "should not update the child dependencies of a gem that has the same name as the source", :bundler => "< 2" do - update_repo2 do - build_gem "george", "2.0" - build_gem "harry", "2.0" do |s| - s.add_dependency "george" - end - end - - bundle "update --source harry" - expect(the_bundle).to include_gems "harry 2.0" - expect(the_bundle).to include_gems "fred 1.0" - expect(the_bundle).to include_gems "george 1.0" - end - - it "should not update the child dependencies of a gem that has the same name as the source", :bundler => "2" do - update_repo2 do - build_gem "george", "2.0" - build_gem "harry", "2.0" do |s| - s.add_dependency "george" - end - end - - bundle "update --source harry" - expect(the_bundle).to include_gems "harry 1.0", "fred 1.0", "george 1.0" - end - end -end - -RSpec.describe "bundle update in more complicated situations" do - before :each do - build_repo2 - end - - it "will eagerly unlock dependencies of a specified gem" do - install_gemfile <<-G - source "file://#{gem_repo2}" - - gem "thin" - gem "rack-obama" - G - - update_repo2 do - build_gem "thin", "2.0" do |s| - s.add_dependency "rack" - end - end - - bundle "update thin" - expect(the_bundle).to include_gems "thin 2.0", "rack 1.2", "rack-obama 1.0" - end - - it "will warn when some explicitly updated gems are not updated" do - install_gemfile! <<-G - source "file:#{gem_repo2}" - - gem "thin" - gem "rack-obama" - G - - update_repo2 do - build_gem("thin", "2.0") {|s| s.add_dependency "rack" } - build_gem "rack", "10.0" - end - - bundle! "update thin rack-obama" - expect(last_command.stdboth).to include "Bundler attempted to update rack-obama but its version stayed the same" - expect(the_bundle).to include_gems "thin 2.0", "rack 10.0", "rack-obama 1.0" - end - - it "will update only from pinned source" do - install_gemfile <<-G - source "file://#{gem_repo2}" - - source "file://#{gem_repo1}" do - gem "thin" - end - G - - update_repo2 do - build_gem "thin", "2.0" - end - - bundle "update" - expect(the_bundle).to include_gems "thin 1.0" - end -end - -RSpec.describe "bundle update without a Gemfile.lock" do - it "should not explode" do - build_repo2 - - gemfile <<-G - source "file://#{gem_repo2}" - - gem "rack", "1.0" - G - - bundle "update", :all => bundle_update_requires_all? - - expect(the_bundle).to include_gems "rack 1.0.0" - end -end - -RSpec.describe "bundle update when a gem depends on a newer version of bundler" do - before(:each) do - build_repo2 do - build_gem "rails", "3.0.1" do |s| - s.add_dependency "bundler", Bundler::VERSION.succ - end - end - - gemfile <<-G - source "file://#{gem_repo2}" - gem "rails", "3.0.1" - G - end - - it "should explain that bundler conflicted", :bundler => "< 2" do - bundle "update", :all => bundle_update_requires_all? - expect(last_command.stdboth).not_to match(/in snapshot/i) - expect(last_command.bundler_err).to match(/current Bundler version/i). - and match(/perhaps you need to update bundler/i) - end - - it "should warn that the newer version of Bundler would conflict", :bundler => "2" do - bundle! "update", :all => true - expect(last_command.bundler_err).to include("rails (3.0.1) has dependency bundler"). - and include("so the dependency is being ignored") - expect(the_bundle).to include_gem "rails 3.0.1" - end -end - -RSpec.describe "bundle update" do - it "shows the previous version of the gem when updated from rubygems source", :bundler => "< 2" do - build_repo2 - - install_gemfile <<-G - source "file://#{gem_repo2}" - gem "activesupport" - G - - bundle "update", :all => bundle_update_requires_all? - expect(out).to include("Using activesupport 2.3.5") - - update_repo2 do - build_gem "activesupport", "3.0" - end - - bundle "update", :all => bundle_update_requires_all? - expect(out).to include("Installing activesupport 3.0 (was 2.3.5)") - end - - context "with suppress_install_using_messages set" do - before { bundle! "config suppress_install_using_messages true" } - - it "only prints `Using` for versions that have changed" do - build_repo4 do - build_gem "bar" - build_gem "foo" - end - - install_gemfile! <<-G - source "file://#{gem_repo4}" - gem "bar" - gem "foo" - G - - bundle! "update", :all => bundle_update_requires_all? - out.gsub!(/RubyGems [\d\.]+ is not threadsafe.*\n?/, "") - expect(out).to include "Resolving dependencies...\nBundle updated!" - - update_repo4 do - build_gem "foo", "2.0" - end - - bundle! "update", :all => bundle_update_requires_all? - out.sub!("Removing foo (1.0)\n", "") - out.gsub!(/RubyGems [\d\.]+ is not threadsafe.*\n?/, "") - expect(out).to include strip_whitespace(<<-EOS).strip - Resolving dependencies... - Fetching foo 2.0 (was 1.0) - Installing foo 2.0 (was 1.0) - Bundle updated - EOS - end - end - - it "shows error message when Gemfile.lock is not preset and gem is specified" do - install_gemfile <<-G - source "file://#{gem_repo2}" - gem "activesupport" - G - - bundle "update nonexisting" - expect(out).to include("This Bundle hasn't been installed yet. Run `bundle install` to update and install the bundled gems.") - expect(exitstatus).to eq(22) if exitstatus - end -end - -RSpec.describe "bundle update --ruby" do - before do - install_gemfile <<-G - ::RUBY_VERSION = '2.1.3' - ::RUBY_PATCHLEVEL = 100 - ruby '~> 2.1.0' - G - bundle "update --ruby" - end - - context "when the Gemfile removes the ruby" do - before do - install_gemfile <<-G - ::RUBY_VERSION = '2.1.4' - ::RUBY_PATCHLEVEL = 222 - G - end - it "removes the Ruby from the Gemfile.lock" do - bundle "update --ruby" - - lockfile_should_be <<-L - GEM - specs: - - PLATFORMS - #{lockfile_platforms} - - DEPENDENCIES - - BUNDLED WITH - #{Bundler::VERSION} - L - end - end - - context "when the Gemfile specified an updated Ruby version" do - before do - install_gemfile <<-G - ::RUBY_VERSION = '2.1.4' - ::RUBY_PATCHLEVEL = 222 - ruby '~> 2.1.0' - G - end - it "updates the Gemfile.lock with the latest version" do - bundle "update --ruby" - - lockfile_should_be <<-L - GEM - specs: - - PLATFORMS - #{lockfile_platforms} - - DEPENDENCIES - - RUBY VERSION - ruby 2.1.4p222 - - BUNDLED WITH - #{Bundler::VERSION} - L - end - end - - context "when a different Ruby is being used than has been versioned" do - before do - install_gemfile <<-G - ::RUBY_VERSION = '2.2.2' - ::RUBY_PATCHLEVEL = 505 - ruby '~> 2.1.0' - G - end - it "shows a helpful error message" do - bundle "update --ruby" - - expect(out).to include("Your Ruby version is 2.2.2, but your Gemfile specified ~> 2.1.0") - end - end - - context "when updating Ruby version and Gemfile `ruby`" do - before do - install_gemfile <<-G - ::RUBY_VERSION = '1.8.3' - ::RUBY_PATCHLEVEL = 55 - ruby '~> 1.8.0' - G - end - it "updates the Gemfile.lock with the latest version" do - bundle "update --ruby" - - lockfile_should_be <<-L - GEM - specs: - - PLATFORMS - #{lockfile_platforms} - - DEPENDENCIES - - RUBY VERSION - ruby 1.8.3p55 - - BUNDLED WITH - #{Bundler::VERSION} - L - end - end -end - -RSpec.describe "bundle update --bundler" do - it "updates the bundler version in the lockfile without re-resolving" do - build_repo4 do - build_gem "rack", "1.0" - end - - install_gemfile! <<-G - source "file:#{gem_repo4}" - gem "rack" - G - lockfile lockfile.sub(/(^\s*)#{Bundler::VERSION}($)/, '\11.0.0\2') - - FileUtils.rm_r gem_repo4 - - bundle! :update, :bundler => true, :verbose => true - expect(the_bundle).to include_gem "rack 1.0" - - expect(the_bundle.locked_gems.bundler_version).to eq v(Bundler::VERSION) - end -end - -# these specs are slow and focus on integration and therefore are not exhaustive. unit specs elsewhere handle that. -RSpec.describe "bundle update conservative" do - context "patch and minor options" do - before do - build_repo4 do - build_gem "foo", %w[1.4.3 1.4.4] do |s| - s.add_dependency "bar", "~> 2.0" - end - build_gem "foo", %w[1.4.5 1.5.0] do |s| - s.add_dependency "bar", "~> 2.1" - end - build_gem "foo", %w[1.5.1] do |s| - s.add_dependency "bar", "~> 3.0" - end - build_gem "bar", %w[2.0.3 2.0.4 2.0.5 2.1.0 2.1.1 3.0.0] - build_gem "qux", %w[1.0.0 1.0.1 1.1.0 2.0.0] - end - - # establish a lockfile set to 1.4.3 - install_gemfile <<-G - source "file://#{gem_repo4}" - gem 'foo', '1.4.3' - gem 'bar', '2.0.3' - gem 'qux', '1.0.0' - G - - # remove 1.4.3 requirement and bar altogether - # to setup update specs below - gemfile <<-G - source "file://#{gem_repo4}" - gem 'foo' - gem 'qux' - G - end - - context "patch preferred" do - it "single gem updates dependent gem to minor" do - bundle! "update --patch foo" - - expect(the_bundle).to include_gems "foo 1.4.5", "bar 2.1.1", "qux 1.0.0" - end - - it "update all" do - bundle! "update --patch", :all => bundle_update_requires_all? - - expect(the_bundle).to include_gems "foo 1.4.5", "bar 2.1.1", "qux 1.0.1" - end - end - - context "minor preferred" do - it "single gem updates dependent gem to major" do - bundle! "update --minor foo" - - expect(the_bundle).to include_gems "foo 1.5.1", "bar 3.0.0", "qux 1.0.0" - end - end - - context "strict" do - it "patch preferred" do - bundle! "update --patch foo bar --strict" - - expect(the_bundle).to include_gems "foo 1.4.4", "bar 2.0.5", "qux 1.0.0" - end - - it "minor preferred" do - bundle! "update --minor --strict", :all => bundle_update_requires_all? - - expect(the_bundle).to include_gems "foo 1.5.0", "bar 2.1.1", "qux 1.1.0" - end - end - end - - context "eager unlocking" do - before do - build_repo4 do - build_gem "isolated_owner", %w[1.0.1 1.0.2] do |s| - s.add_dependency "isolated_dep", "~> 2.0" - end - build_gem "isolated_dep", %w[2.0.1 2.0.2] - - build_gem "shared_owner_a", %w[3.0.1 3.0.2] do |s| - s.add_dependency "shared_dep", "~> 5.0" - end - build_gem "shared_owner_b", %w[4.0.1 4.0.2] do |s| - s.add_dependency "shared_dep", "~> 5.0" - end - build_gem "shared_dep", %w[5.0.1 5.0.2] - end - - gemfile <<-G - source "file://#{gem_repo4}" - gem 'isolated_owner' - - gem 'shared_owner_a' - gem 'shared_owner_b' - G - - lockfile <<-L - GEM - remote: file://#{gem_repo4} - specs: - isolated_dep (2.0.1) - isolated_owner (1.0.1) - isolated_dep (~> 2.0) - shared_dep (5.0.1) - shared_owner_a (3.0.1) - shared_dep (~> 5.0) - shared_owner_b (4.0.1) - shared_dep (~> 5.0) - - PLATFORMS - ruby - - DEPENDENCIES - shared_owner_a - shared_owner_b - isolated_owner - - BUNDLED WITH - 1.13.0 - L - end - - it "should eagerly unlock isolated dependency" do - bundle "update isolated_owner" - - expect(the_bundle).to include_gems "isolated_owner 1.0.2", "isolated_dep 2.0.2", "shared_dep 5.0.1", "shared_owner_a 3.0.1", "shared_owner_b 4.0.1" - end - - it "should eagerly unlock shared dependency" do - bundle "update shared_owner_a" - - expect(the_bundle).to include_gems "isolated_owner 1.0.1", "isolated_dep 2.0.1", "shared_dep 5.0.2", "shared_owner_a 3.0.2", "shared_owner_b 4.0.1" - end - - it "should not eagerly unlock with --conservative" do - bundle "update --conservative shared_owner_a isolated_owner" - - expect(the_bundle).to include_gems "isolated_owner 1.0.2", "isolated_dep 2.0.2", "shared_dep 5.0.1", "shared_owner_a 3.0.2", "shared_owner_b 4.0.1" - end - - it "should match bundle install conservative update behavior when not eagerly unlocking" do - gemfile <<-G - source "file://#{gem_repo4}" - gem 'isolated_owner', '1.0.2' - - gem 'shared_owner_a', '3.0.2' - gem 'shared_owner_b' - G - - bundle "install" - - expect(the_bundle).to include_gems "isolated_owner 1.0.2", "isolated_dep 2.0.2", "shared_dep 5.0.1", "shared_owner_a 3.0.2", "shared_owner_b 4.0.1" - end - end - - context "error handling" do - before do - gemfile "" - end - - it "raises if too many flags are provided" do - bundle "update --patch --minor", :all => bundle_update_requires_all? - - expect(last_command.bundler_err).to eq "Provide only one of the following options: minor, patch" - end - end -end diff --git a/spec/bundler/commands/version_spec.rb b/spec/bundler/commands/version_spec.rb deleted file mode 100644 index b919c25e0f..0000000000 --- a/spec/bundler/commands/version_spec.rb +++ /dev/null @@ -1,39 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe "bundle version" do - context "with -v" do - it "outputs the version", :bundler => "< 2" do - bundle! "-v" - expect(out).to eq("Bundler version #{Bundler::VERSION}") - end - - it "outputs the version", :bundler => "2" do - bundle! "-v" - expect(out).to eq(Bundler::VERSION) - end - end - - context "with --version" do - it "outputs the version", :bundler => "< 2" do - bundle! "--version" - expect(out).to eq("Bundler version #{Bundler::VERSION}") - end - - it "outputs the version", :bundler => "2" do - bundle! "--version" - expect(out).to eq(Bundler::VERSION) - end - end - - context "with version" do - it "outputs the version with build metadata", :bundler => "< 2" do - bundle! "version" - expect(out).to match(/\ABundler version #{Regexp.escape(Bundler::VERSION)} \(\d{4}-\d{2}-\d{2} commit [a-fA-F0-9]{7,}\)\z/) - end - - it "outputs the version with build metadata", :bundler => "2" do - bundle! "version" - expect(out).to match(/\A#{Regexp.escape(Bundler::VERSION)} \(\d{4}-\d{2}-\d{2} commit [a-fA-F0-9]{7,}\)\z/) - end - end -end diff --git a/spec/bundler/commands/viz_spec.rb b/spec/bundler/commands/viz_spec.rb deleted file mode 100644 index 0e8667eaa7..0000000000 --- a/spec/bundler/commands/viz_spec.rb +++ /dev/null @@ -1,149 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe "bundle viz", :ruby => "1.9.3", :if => Bundler.which("dot") do - let(:ruby_graphviz) do - graphviz_glob = base_system_gems.join("cache/ruby-graphviz*") - Pathname.glob(graphviz_glob).first - end - - before do - system_gems ruby_graphviz - end - - it "graphs gems from the Gemfile" do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - gem "rack-obama" - G - - bundle! "viz" - expect(out).to include("gem_graph.png") - - bundle! "viz", :format => "debug" - expect(out).to eq(strip_whitespace(<<-DOT).strip) - digraph Gemfile { - concentrate = "true"; - normalize = "true"; - nodesep = "0.55"; - edge[ weight = "2"]; - node[ fontname = "Arial, Helvetica, SansSerif"]; - edge[ fontname = "Arial, Helvetica, SansSerif" , fontsize = "12"]; - default [style = "filled", fillcolor = "#B9B9D5", shape = "box3d", fontsize = "16", label = "default"]; - rack [style = "filled", fillcolor = "#B9B9D5", label = "rack"]; - default -> rack [constraint = "false"]; - "rack-obama" [style = "filled", fillcolor = "#B9B9D5", label = "rack-obama"]; - default -> "rack-obama" [constraint = "false"]; - "rack-obama" -> rack; - } - debugging bundle viz... - DOT - end - - it "graphs gems that are prereleases" do - build_repo2 do - build_gem "rack", "1.3.pre" - end - - install_gemfile <<-G - source "file://#{gem_repo2}" - gem "rack", "= 1.3.pre" - gem "rack-obama" - G - - bundle! "viz" - expect(out).to include("gem_graph.png") - - bundle! "viz", :format => :debug, :version => true - expect(out).to eq(strip_whitespace(<<-EOS).strip) - digraph Gemfile { - concentrate = "true"; - normalize = "true"; - nodesep = "0.55"; - edge[ weight = "2"]; - node[ fontname = "Arial, Helvetica, SansSerif"]; - edge[ fontname = "Arial, Helvetica, SansSerif" , fontsize = "12"]; - default [style = "filled", fillcolor = "#B9B9D5", shape = "box3d", fontsize = "16", label = "default"]; - rack [style = "filled", fillcolor = "#B9B9D5", label = "rack\\n1.3.pre"]; - default -> rack [constraint = "false"]; - "rack-obama" [style = "filled", fillcolor = "#B9B9D5", label = "rack-obama\\n1.0"]; - default -> "rack-obama" [constraint = "false"]; - "rack-obama" -> rack; - } - debugging bundle viz... - EOS - end - - context "with another gem that has a graphviz file" do - before do - build_repo4 do - build_gem "graphviz", "999" do |s| - s.write("lib/graphviz.rb", "abort 'wrong graphviz gem loaded'") - end - end - - system_gems ruby_graphviz, "graphviz-999", :gem_repo => gem_repo4 - end - - it "loads the correct ruby-graphviz gem" do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - gem "rack-obama" - G - - bundle! "viz", :format => "debug" - expect(out).to eq(strip_whitespace(<<-DOT).strip) - digraph Gemfile { - concentrate = "true"; - normalize = "true"; - nodesep = "0.55"; - edge[ weight = "2"]; - node[ fontname = "Arial, Helvetica, SansSerif"]; - edge[ fontname = "Arial, Helvetica, SansSerif" , fontsize = "12"]; - default [style = "filled", fillcolor = "#B9B9D5", shape = "box3d", fontsize = "16", label = "default"]; - rack [style = "filled", fillcolor = "#B9B9D5", label = "rack"]; - default -> rack [constraint = "false"]; - "rack-obama" [style = "filled", fillcolor = "#B9B9D5", label = "rack-obama"]; - default -> "rack-obama" [constraint = "false"]; - "rack-obama" -> rack; - } - debugging bundle viz... - DOT - end - end - - context "--without option" do - it "one group" do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "activesupport" - - group :rails do - gem "rails" - end - G - - bundle! "viz --without=rails" - expect(out).to include("gem_graph.png") - end - - it "two groups" do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "activesupport" - - group :rack do - gem "rack" - end - - group :rails do - gem "rails" - end - G - - bundle! "viz --without=rails:rack" - expect(out).to include("gem_graph.png") - end - end -end diff --git a/spec/bundler/install/allow_offline_install_spec.rb b/spec/bundler/install/allow_offline_install_spec.rb deleted file mode 100644 index d4bb595771..0000000000 --- a/spec/bundler/install/allow_offline_install_spec.rb +++ /dev/null @@ -1,92 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe "bundle install with :allow_offline_install" do - before do - bundle "config allow_offline_install true" - end - - context "with no cached data locally" do - it "still installs" do - install_gemfile! <<-G, :artifice => "compact_index" - source "http://testgemserver.local" - gem "rack-obama" - G - expect(the_bundle).to include_gem("rack 1.0") - end - - it "still fails when the network is down" do - install_gemfile <<-G, :artifice => "fail" - source "http://testgemserver.local" - gem "rack-obama" - G - expect(out).to include("Could not reach host testgemserver.local.") - expect(the_bundle).to_not be_locked - end - end - - context "with cached data locally" do - it "will install from the compact index" do - system_gems ["rack-1.0.0"], :path => :bundle_path - - bundle! "config clean false" - install_gemfile! <<-G, :artifice => "compact_index" - source "http://testgemserver.local" - gem "rack-obama" - gem "rack", "< 1.0" - G - - expect(the_bundle).to include_gems("rack-obama 1.0", "rack 0.9.1") - - gemfile <<-G - source "http://testgemserver.local" - gem "rack-obama" - G - - bundle! :update, :artifice => "fail", :all => true - expect(last_command.stdboth).to include "Using the cached data for the new index because of a network error" - - expect(the_bundle).to include_gems("rack-obama 1.0", "rack 1.0.0") - end - - def break_git_remote_ops! - FileUtils.mkdir_p(tmp("broken_path")) - File.open(tmp("broken_path/git"), "w", 0o755) do |f| - f.puts strip_whitespace(<<-RUBY) - #!/usr/bin/env ruby - if %w(fetch --force --quiet --tags refs/heads/*:refs/heads/*).-(ARGV).empty? || %w(clone --bare --no-hardlinks --quiet).-(ARGV).empty? - warn "git remote ops have been disabled" - exit 1 - end - ENV["PATH"] = ENV["PATH"].sub(/^.*?:/, "") - exec("git", *ARGV) - RUBY - end - - old_path = ENV["PATH"] - ENV["PATH"] = "#{tmp("broken_path")}:#{ENV["PATH"]}" - yield if block_given? - ensure - ENV["PATH"] = old_path if block_given? - end - - it "will install from a cached git repo" do - git = build_git "a", "1.0.0", :path => lib_path("a") - update_git("a", :path => git.path, :branch => "new_branch") - install_gemfile! <<-G - gem "a", :git => #{git.path.to_s.dump} - G - - break_git_remote_ops! { bundle! :update, :all => true } - expect(out).to include("Using cached git data because of network errors") - expect(the_bundle).to be_locked - - break_git_remote_ops! do - install_gemfile! <<-G - gem "a", :git => #{git.path.to_s.dump}, :branch => "new_branch" - G - end - expect(out).to include("Using cached git data because of network errors") - expect(the_bundle).to be_locked - end - end -end diff --git a/spec/bundler/install/binstubs_spec.rb b/spec/bundler/install/binstubs_spec.rb deleted file mode 100644 index 23eb691ab8..0000000000 --- a/spec/bundler/install/binstubs_spec.rb +++ /dev/null @@ -1,43 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe "bundle install", :bundler => "< 2" do - describe "when system_bindir is set" do - # On OS X, Gem.bindir defaults to /usr/bin, so system_bindir is useful if - # you want to avoid sudo installs for system gems with OS X's default ruby - it "overrides Gem.bindir" do - expect(Pathname.new("/usr/bin")).not_to be_writable unless Process.euid == 0 - gemfile <<-G - require 'rubygems' - def Gem.bindir; "/usr/bin"; end - source "file://#{gem_repo1}" - gem "rack" - G - - config "BUNDLE_SYSTEM_BINDIR" => system_gem_path("altbin").to_s - bundle :install - expect(the_bundle).to include_gems "rack 1.0.0" - expect(system_gem_path("altbin/rackup")).to exist - end - end - - describe "when multiple gems contain the same exe", :bundler => "< 2" do - before do - build_repo2 do - build_gem "fake", "14" do |s| - s.executables = "rackup" - end - end - - install_gemfile <<-G, :binstubs => true - source "file://#{gem_repo2}" - gem "fake" - gem "rack" - G - end - - it "loads the correct spec's executable" do - gembin("rackup") - expect(out).to eq("1.2") - end - end -end diff --git a/spec/bundler/install/bundler_spec.rb b/spec/bundler/install/bundler_spec.rb deleted file mode 100644 index 08b7e2b673..0000000000 --- a/spec/bundler/install/bundler_spec.rb +++ /dev/null @@ -1,176 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe "bundle install" do - describe "with bundler dependencies" do - before(:each) do - build_repo2 do - build_gem "rails", "3.0" do |s| - s.add_dependency "bundler", ">= 0.9.0.pre" - end - build_gem "bundler", "0.9.1" - build_gem "bundler", Bundler::VERSION - end - end - - it "are forced to the current bundler version" do - install_gemfile <<-G - source "file://#{gem_repo2}" - gem "rails", "3.0" - G - - expect(the_bundle).to include_gems "bundler #{Bundler::VERSION}" - end - - it "are not added if not already present" do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - G - expect(the_bundle).not_to include_gems "bundler #{Bundler::VERSION}" - end - - it "causes a conflict if explicitly requesting a different version" do - install_gemfile <<-G - source "file://#{gem_repo2}" - gem "rails", "3.0" - gem "bundler", "0.9.2" - G - - nice_error = <<-E.strip.gsub(/^ {8}/, "") - Bundler could not find compatible versions for gem "bundler": - In Gemfile: - bundler (= 0.9.2) - - Current Bundler version: - bundler (#{Bundler::VERSION}) - This Gemfile requires a different version of Bundler. - Perhaps you need to update Bundler by running `gem install bundler`? - - Could not find gem 'bundler (= 0.9.2)' in any - E - expect(last_command.bundler_err).to include(nice_error) - end - - it "works for gems with multiple versions in its dependencies" do - install_gemfile <<-G - source "file://#{gem_repo2}" - - gem "multiple_versioned_deps" - G - - install_gemfile <<-G - source "file://#{gem_repo2}" - - gem "multiple_versioned_deps" - gem "rack" - G - - expect(the_bundle).to include_gems "multiple_versioned_deps 1.0.0" - end - - it "includes bundler in the bundle when it's a child dependency" do - install_gemfile <<-G - source "file://#{gem_repo2}" - gem "rails", "3.0" - G - - run "begin; gem 'bundler'; puts 'WIN'; rescue Gem::LoadError; puts 'FAIL'; end" - expect(out).to eq("WIN") - end - - it "allows gem 'bundler' when Bundler is not in the Gemfile or its dependencies" do - install_gemfile <<-G - source "file://#{gem_repo2}" - gem "rack" - G - - run "begin; gem 'bundler'; puts 'WIN'; rescue Gem::LoadError => e; puts e.backtrace; end" - expect(out).to eq("WIN") - end - - it "causes a conflict if child dependencies conflict" do - install_gemfile <<-G - source "file://#{gem_repo2}" - gem "activemerchant" - gem "rails_fail" - G - - nice_error = <<-E.strip.gsub(/^ {8}/, "") - Bundler could not find compatible versions for gem "activesupport": - In Gemfile: - activemerchant was resolved to 1.0, which depends on - activesupport (>= 2.0.0) - - rails_fail was resolved to 1.0, which depends on - activesupport (= 1.2.3) - E - expect(last_command.bundler_err).to include(nice_error) - end - - it "causes a conflict if a child dependency conflicts with the Gemfile" do - install_gemfile <<-G - source "file://#{gem_repo2}" - gem "rails_fail" - gem "activesupport", "2.3.5" - G - - nice_error = <<-E.strip.gsub(/^ {8}/, "") - Bundler could not find compatible versions for gem "activesupport": - In Gemfile: - activesupport (= 2.3.5) - - rails_fail was resolved to 1.0, which depends on - activesupport (= 1.2.3) - E - expect(last_command.bundler_err).to include(nice_error) - end - - it "can install dependencies with newer bundler version with system gems", :ruby => "> 2" do - bundle! "config path.system true" - install_gemfile! <<-G - source "file://#{gem_repo2}" - gem "rails", "3.0" - G - - simulate_bundler_version "99999999.99.1" - - bundle! "check", :env => { "BUNDLER_SPEC_IGNORE_COMPATIBILITY_GUARD" => "1" } - expect(out).to include("The Gemfile's dependencies are satisfied") - end - - it "can install dependencies with newer bundler version with a local path", :ruby => "> 2" do - bundle! "config path .bundle" - install_gemfile! <<-G - source "file://#{gem_repo2}" - gem "rails", "3.0" - G - - simulate_bundler_version "99999999.99.1" - - bundle! "check", :env => { "BUNDLER_SPEC_IGNORE_COMPATIBILITY_GUARD" => "1" } - expect(out).to include("The Gemfile's dependencies are satisfied") - end - - context "with allow_bundler_dependency_conflicts set" do - before { bundle! "config allow_bundler_dependency_conflicts true" } - - it "are forced to the current bundler version with warnings when no compatible version is found" do - build_repo4 do - build_gem "requires_nonexistant_bundler" do |s| - s.add_runtime_dependency "bundler", "99.99.99.99" - end - end - - install_gemfile! <<-G - source "file://#{gem_repo4}" - gem "requires_nonexistant_bundler" - G - - expect(out).to include "requires_nonexistant_bundler (1.0) has dependency bundler (= 99.99.99.99), " \ - "which is unsatisfied by the current bundler version #{Bundler::VERSION}, so the dependency is being ignored" - - expect(the_bundle).to include_gems "bundler #{Bundler::VERSION}", "requires_nonexistant_bundler 1.0" - end - end - end -end diff --git a/spec/bundler/install/deploy_spec.rb b/spec/bundler/install/deploy_spec.rb deleted file mode 100644 index 3b9d68982a..0000000000 --- a/spec/bundler/install/deploy_spec.rb +++ /dev/null @@ -1,423 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe "install with --deployment or --frozen" do - before do - gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - G - end - - context "with CLI flags", :bundler => "< 2" do - it "fails without a lockfile and says that --deployment requires a lock" do - bundle "install --deployment" - expect(out).to include("The --deployment flag requires a Gemfile.lock") - end - - it "fails without a lockfile and says that --frozen requires a lock" do - bundle "install --frozen" - expect(out).to include("The --frozen flag requires a Gemfile.lock") - end - - it "disallows --deployment --system" do - bundle "install --deployment --system" - expect(out).to include("You have specified both --deployment") - expect(out).to include("Please choose only one option") - expect(exitstatus).to eq(15) if exitstatus - end - - it "disallows --deployment --path --system" do - bundle "install --deployment --path . --system" - expect(out).to include("You have specified both --path") - expect(out).to include("as well as --system") - expect(out).to include("Please choose only one option") - expect(exitstatus).to eq(15) if exitstatus - end - - it "works after you try to deploy without a lock" do - bundle "install --deployment" - bundle! :install - expect(the_bundle).to include_gems "rack 1.0" - end - end - - it "still works if you are not in the app directory and specify --gemfile" do - bundle "install" - Dir.chdir tmp do - simulate_new_machine - bundle! :install, - forgotten_command_line_options(:gemfile => "#{tmp}/bundled_app/Gemfile", - :deployment => true, - :path => "vendor/bundle") - end - expect(the_bundle).to include_gems "rack 1.0" - end - - it "works if you exclude a group with a git gem" do - build_git "foo" - gemfile <<-G - group :test do - gem "foo", :git => "#{lib_path("foo-1.0")}" - end - G - bundle :install - bundle! :install, forgotten_command_line_options(:deployment => true, :without => "test") - end - - it "works when you bundle exec bundle", :ruby_repo do - bundle :install - bundle "install --deployment" - bundle! "exec bundle check" - end - - it "works when using path gems from the same path and the version is specified" do - build_lib "foo", :path => lib_path("nested/foo") - build_lib "bar", :path => lib_path("nested/bar") - gemfile <<-G - gem "foo", "1.0", :path => "#{lib_path("nested")}" - gem "bar", :path => "#{lib_path("nested")}" - G - - bundle! :install - bundle! :install, forgotten_command_line_options(:deployment => true) - end - - it "works when there are credentials in the source URL" do - install_gemfile(<<-G, :artifice => "endpoint_strict_basic_authentication", :quiet => true) - source "http://user:pass@localgemserver.test/" - - gem "rack-obama", ">= 1.0" - G - - bundle! :install, forgotten_command_line_options(:deployment => true).merge(:artifice => "endpoint_strict_basic_authentication") - end - - it "works with sources given by a block" do - install_gemfile! <<-G - source "file://#{gem_repo1}" do - gem "rack" - end - G - - bundle! :install, forgotten_command_line_options(:deployment => true) - - expect(the_bundle).to include_gems "rack 1.0" - end - - describe "with an existing lockfile" do - before do - bundle "install" - end - - it "works with the --deployment flag if you didn't change anything", :bundler => "< 2" do - bundle! "install --deployment" - end - - it "works with the --frozen flag if you didn't change anything", :bundler => "< 2" do - bundle! "install --frozen" - end - - it "works with BUNDLE_FROZEN if you didn't change anything" do - bundle! :install, :env => { "BUNDLE_FROZEN" => "true" } - end - - it "explodes with the --deployment flag if you make a change and don't check in the lockfile" do - gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - gem "rack-obama" - G - - bundle :install, forgotten_command_line_options(:deployment => true) - expect(out).to include("deployment mode") - expect(out).to include("You have added to the Gemfile") - expect(out).to include("* rack-obama") - expect(out).not_to include("You have deleted from the Gemfile") - expect(out).not_to include("You have changed in the Gemfile") - end - - it "works if a path gem is missing but is in a without group" do - build_lib "path_gem" - install_gemfile! <<-G - source "file://#{gem_repo1}" - gem "rake" - gem "path_gem", :path => "#{lib_path("path_gem-1.0")}", :group => :development - G - expect(the_bundle).to include_gems "path_gem 1.0" - FileUtils.rm_r lib_path("path_gem-1.0") - - bundle! :install, forgotten_command_line_options(:path => ".bundle", :without => "development", :deployment => true).merge(:env => { :DEBUG => "1" }) - run! "puts :WIN" - expect(out).to eq("WIN") - end - - it "explodes if a path gem is missing" do - build_lib "path_gem" - install_gemfile! <<-G - source "file://#{gem_repo1}" - gem "rake" - gem "path_gem", :path => "#{lib_path("path_gem-1.0")}", :group => :development - G - expect(the_bundle).to include_gems "path_gem 1.0" - FileUtils.rm_r lib_path("path_gem-1.0") - - bundle :install, forgotten_command_line_options(:path => ".bundle", :deployment => true) - expect(out).to include("The path `#{lib_path("path_gem-1.0")}` does not exist.") - end - - it "can have --frozen set via an environment variable", :bundler => "< 2" do - gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - gem "rack-obama" - G - - ENV["BUNDLE_FROZEN"] = "1" - bundle "install" - expect(out).to include("deployment mode") - expect(out).to include("You have added to the Gemfile") - expect(out).to include("* rack-obama") - expect(out).not_to include("You have deleted from the Gemfile") - expect(out).not_to include("You have changed in the Gemfile") - end - - it "can have --deployment set via an environment variable" do - gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - gem "rack-obama" - G - - ENV["BUNDLE_DEPLOYMENT"] = "true" - bundle "install" - expect(out).to include("deployment mode") - expect(out).to include("You have added to the Gemfile") - expect(out).to include("* rack-obama") - expect(out).not_to include("You have deleted from the Gemfile") - expect(out).not_to include("You have changed in the Gemfile") - end - - it "can have --frozen set to false via an environment variable" do - gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - gem "rack-obama" - G - - ENV["BUNDLE_FROZEN"] = "false" - ENV["BUNDLE_DEPLOYMENT"] = "false" - bundle "install" - expect(out).not_to include("deployment mode") - expect(out).not_to include("You have added to the Gemfile") - expect(out).not_to include("* rack-obama") - end - - it "explodes with the --frozen flag if you make a change and don't check in the lockfile", :bundler => "< 2" do - gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - gem "rack-obama", "1.1" - G - - bundle :install, forgotten_command_line_options(:frozen => true) - expect(out).to include("deployment mode") - expect(out).to include("You have added to the Gemfile") - expect(out).to include("* rack-obama (= 1.1)") - expect(out).not_to include("You have deleted from the Gemfile") - expect(out).not_to include("You have changed in the Gemfile") - end - - it "explodes if you remove a gem and don't check in the lockfile" do - gemfile <<-G - source "file://#{gem_repo1}" - gem "activesupport" - G - - bundle :install, forgotten_command_line_options(:deployment => true) - expect(out).to include("deployment mode") - expect(out).to include("You have added to the Gemfile:\n* activesupport\n\n") - expect(out).to include("You have deleted from the Gemfile:\n* rack") - expect(out).not_to include("You have changed in the Gemfile") - end - - it "explodes if you add a source" do - gemfile <<-G - source "file://#{gem_repo1}" - gem "rack", :git => "git://hubz.com" - G - - bundle :install, forgotten_command_line_options(:deployment => true) - expect(out).to include("deployment mode") - expect(out).to include("You have added to the Gemfile:\n* source: git://hubz.com (at master)") - expect(out).not_to include("You have changed in the Gemfile") - end - - it "explodes if you unpin a source" do - build_git "rack" - - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "rack", :git => "#{lib_path("rack-1.0")}" - G - - gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - G - - bundle :install, forgotten_command_line_options(:deployment => true) - expect(out).to include("deployment mode") - expect(out).to include("You have deleted from the Gemfile:\n* source: #{lib_path("rack-1.0")} (at master@#{revision_for(lib_path("rack-1.0"))[0..6]}") - expect(out).not_to include("You have added to the Gemfile") - expect(out).not_to include("You have changed in the Gemfile") - end - - it "explodes if you unpin a source, leaving it pinned somewhere else" do - build_lib "foo", :path => lib_path("rack/foo") - build_git "rack", :path => lib_path("rack") - - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "rack", :git => "#{lib_path("rack")}" - gem "foo", :git => "#{lib_path("rack")}" - G - - gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - gem "foo", :git => "#{lib_path("rack")}" - G - - bundle :install, forgotten_command_line_options(:deployment => true) - expect(out).to include("deployment mode") - expect(out).to include("You have changed in the Gemfile:\n* rack from `no specified source` to `#{lib_path("rack")} (at master@#{revision_for(lib_path("rack"))[0..6]})`") - expect(out).not_to include("You have added to the Gemfile") - expect(out).not_to include("You have deleted from the Gemfile") - end - - context "when replacing a host with the same host with credentials" do - let(:success_message) do - if Bundler::VERSION.split(".", 2).first == "1" - "Could not reach host localgemserver.test" - else - "Bundle complete!" - end - end - - before do - install_gemfile <<-G - source "http://user_name:password@localgemserver.test/" - gem "rack" - G - - lockfile <<-G - GEM - remote: http://localgemserver.test/ - specs: - rack (1.0.0) - - PLATFORMS - #{local} - - DEPENDENCIES - rack - G - end - - it "prevents the replace by default" do - bundle :install, forgotten_command_line_options(:deployment => true) - - expect(out).to match(/The list of sources changed/) - end - - context "when allow_deployment_source_credential_changes is true" do - before { bundle! "config allow_deployment_source_credential_changes true" } - - it "allows the replace" do - bundle :install, forgotten_command_line_options(:deployment => true) - - expect(out).to match(/#{success_message}/) - end - end - - context "when allow_deployment_source_credential_changes is false" do - before { bundle! "config allow_deployment_source_credential_changes false" } - - it "prevents the replace" do - bundle :install, forgotten_command_line_options(:deployment => true) - - expect(out).to match(/The list of sources changed/) - end - end - - context "when BUNDLE_ALLOW_DEPLOYMENT_SOURCE_CREDENTIAL_CHANGES env var is true" do - before { ENV["BUNDLE_ALLOW_DEPLOYMENT_SOURCE_CREDENTIAL_CHANGES"] = "true" } - - it "allows the replace" do - bundle :install, forgotten_command_line_options(:deployment => true) - - expect(out).to match(/#{success_message}/) - end - end - - context "when BUNDLE_ALLOW_DEPLOYMENT_SOURCE_CREDENTIAL_CHANGES env var is false" do - before { ENV["BUNDLE_ALLOW_DEPLOYMENT_SOURCE_CREDENTIAL_CHANGES"] = "false" } - - it "prevents the replace" do - bundle :install, forgotten_command_line_options(:deployment => true) - - expect(out).to match(/The list of sources changed/) - end - end - end - - it "remembers that the bundle is frozen at runtime" do - bundle! :lock - - bundle! "config deployment true" - - gemfile <<-G - source "file://#{gem_repo1}" - gem "rack", "1.0.0" - gem "rack-obama" - G - - expect(the_bundle).not_to include_gems "rack 1.0.0" - expect(err).to include strip_whitespace(<<-E).strip -The dependencies in your gemfile changed - -You have added to the Gemfile: -* rack (= 1.0.0) -* rack-obama - -You have deleted from the Gemfile: -* rack - E - end - end - - context "with path in Gemfile and packed" do - it "works fine after bundle package and bundle install --local" do - build_lib "foo", :path => lib_path("foo") - install_gemfile! <<-G - gem "foo", :path => "#{lib_path("foo")}" - G - - bundle! :install - expect(the_bundle).to include_gems "foo 1.0" - bundle! :package, forgotten_command_line_options([:all, :cache_all] => true) - expect(bundled_app("vendor/cache/foo")).to be_directory - - bundle! "install --local" - expect(out).to include("Updating files in vendor/cache") - - simulate_new_machine - bundle! "install --verbose", forgotten_command_line_options(:deployment => true) - expect(out).not_to include("You are trying to install in deployment mode after changing your Gemfile") - expect(out).not_to include("You have added to the Gemfile") - expect(out).not_to include("You have deleted from the Gemfile") - expect(out).to include("vendor/cache/foo") - expect(the_bundle).to include_gems "foo 1.0" - end - end -end diff --git a/spec/bundler/install/failure_spec.rb b/spec/bundler/install/failure_spec.rb deleted file mode 100644 index 896138c659..0000000000 --- a/spec/bundler/install/failure_spec.rb +++ /dev/null @@ -1,32 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe "bundle install" do - context "installing a gem fails" do - it "prints out why that gem was being installed" do - build_repo2 do - build_gem "activesupport", "2.3.2" do |s| - s.extensions << "Rakefile" - s.write "Rakefile", <<-RUBY - task :default do - abort "make installing activesupport-2.3.2 fail" - end - RUBY - end - end - - install_gemfile <<-G - source "file:#{gem_repo2}" - gem "rails" - G - expect(last_command.bundler_err).to end_with(<<-M.strip) -An error occurred while installing activesupport (2.3.2), and Bundler cannot continue. -Make sure that `gem install activesupport -v '2.3.2'` succeeds before bundling. - -In Gemfile: - rails was resolved to 2.3.2, which depends on - actionmailer was resolved to 2.3.2, which depends on - activesupport - M - end - end -end diff --git a/spec/bundler/install/force_spec.rb b/spec/bundler/install/force_spec.rb deleted file mode 100644 index 52fa4f0d61..0000000000 --- a/spec/bundler/install/force_spec.rb +++ /dev/null @@ -1,62 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe "bundle install" do - %w[force redownload].each do |flag| - describe_opts = {} - describe_opts[:bundler] = "< 2" if flag == "force" - describe "with --#{flag}", describe_opts do - before :each do - gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - G - end - - it "re-installs installed gems" do - rack_lib = default_bundle_path("gems/rack-1.0.0/lib/rack.rb") - - bundle! :install - rack_lib.open("w") {|f| f.write("blah blah blah") } - bundle! :install, flag => true - - expect(out).to include "Installing rack 1.0.0" - expect(rack_lib.open(&:read)).to eq("RACK = '1.0.0'\n") - expect(the_bundle).to include_gems "rack 1.0.0" - end - - it "works on first bundle install" do - bundle! :install, flag => true - - expect(out).to include "Installing rack 1.0.0" - expect(the_bundle).to include_gems "rack 1.0.0" - end - - context "with a git gem" do - let!(:ref) { build_git("foo", "1.0").ref_for("HEAD", 11) } - - before do - gemfile <<-G - gem "foo", :git => "#{lib_path("foo-1.0")}" - G - end - - it "re-installs installed gems" do - foo_lib = default_bundle_path("bundler/gems/foo-1.0-#{ref}/lib/foo.rb") - - bundle! :install - foo_lib.open("w") {|f| f.write("blah blah blah") } - bundle! :install, flag => true - - expect(foo_lib.open(&:read)).to eq("FOO = '1.0'\n") - expect(the_bundle).to include_gems "foo 1.0" - end - - it "works on first bundle install" do - bundle! :install, flag => true - - expect(the_bundle).to include_gems "foo 1.0" - end - end - end - end -end diff --git a/spec/bundler/install/gemfile/eval_gemfile_spec.rb b/spec/bundler/install/gemfile/eval_gemfile_spec.rb deleted file mode 100644 index 035d3692aa..0000000000 --- a/spec/bundler/install/gemfile/eval_gemfile_spec.rb +++ /dev/null @@ -1,82 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe "bundle install with gemfile that uses eval_gemfile" do - before do - build_lib("gunks", :path => bundled_app.join("gems/gunks")) do |s| - s.name = "gunks" - s.version = "0.0.1" - end - end - - context "eval-ed Gemfile points to an internal gemspec" do - before do - create_file "Gemfile-other", <<-G - gemspec :path => 'gems/gunks' - G - end - - it "installs the gemspec specified gem" do - install_gemfile <<-G - eval_gemfile 'Gemfile-other' - G - expect(out).to include("Resolving dependencies") - expect(out).to include("Bundle complete") - - expect(the_bundle).to include_gem "gunks 0.0.1", :source => "path@#{bundled_app("gems", "gunks")}" - end - end - - context "eval-ed Gemfile has relative-path gems" do - before do - build_lib("a", :path => "gems/a") - create_file "nested/Gemfile-nested", <<-G - gem "a", :path => "../gems/a" - G - - gemfile <<-G - eval_gemfile "nested/Gemfile-nested" - G - end - - it "installs the path gem" do - bundle! :install - expect(the_bundle).to include_gem("a 1.0") - end - - # Make sure that we are properly comparing path based gems between the - # parsed lockfile and the evaluated gemfile. - it "bundles with --deployment" do - bundle! :install - bundle! :install, forgotten_command_line_options(:deployment => true) - end - end - - context "Gemfile uses gemspec paths after eval-ing a Gemfile" do - before { create_file "other/Gemfile-other" } - - it "installs the gemspec specified gem" do - install_gemfile <<-G - eval_gemfile 'other/Gemfile-other' - gemspec :path => 'gems/gunks' - G - expect(out).to include("Resolving dependencies") - expect(out).to include("Bundle complete") - - expect(the_bundle).to include_gem "gunks 0.0.1", :source => "path@#{bundled_app("gems", "gunks")}" - end - end - - context "eval-ed Gemfile references other gemfiles" do - it "works with relative paths" do - create_file "other/Gemfile-other", "gem 'rack'" - create_file "other/Gemfile", "eval_gemfile 'Gemfile-other'" - create_file "Gemfile-alt", <<-G - source "file:#{gem_repo1}" - eval_gemfile "other/Gemfile" - G - install_gemfile! "eval_gemfile File.expand_path('Gemfile-alt')" - - expect(the_bundle).to include_gem "rack 1.0.0" - end - end -end diff --git a/spec/bundler/install/gemfile/gemspec_spec.rb b/spec/bundler/install/gemfile/gemspec_spec.rb deleted file mode 100644 index 86cd2d8f3f..0000000000 --- a/spec/bundler/install/gemfile/gemspec_spec.rb +++ /dev/null @@ -1,672 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe "bundle install from an existing gemspec" do - before(:each) do - build_repo2 do - build_gem "bar" - build_gem "bar-dev" - end - end - - it "should install runtime and development dependencies" do - build_lib("foo", :path => tmp.join("foo")) do |s| - s.write("Gemfile", "source :rubygems\ngemspec") - s.add_dependency "bar", "=1.0.0" - s.add_development_dependency "bar-dev", "=1.0.0" - end - install_gemfile <<-G - source "file://#{gem_repo2}" - gemspec :path => '#{tmp.join("foo")}' - G - - expect(the_bundle).to include_gems "bar 1.0.0" - expect(the_bundle).to include_gems "bar-dev 1.0.0", :groups => :development - end - - it "that is hidden should install runtime and development dependencies" do - build_lib("foo", :path => tmp.join("foo")) do |s| - s.write("Gemfile", "source :rubygems\ngemspec") - s.add_dependency "bar", "=1.0.0" - s.add_development_dependency "bar-dev", "=1.0.0" - end - FileUtils.mv tmp.join("foo", "foo.gemspec"), tmp.join("foo", ".gemspec") - - install_gemfile <<-G - source "file://#{gem_repo2}" - gemspec :path => '#{tmp.join("foo")}' - G - - expect(the_bundle).to include_gems "bar 1.0.0" - expect(the_bundle).to include_gems "bar-dev 1.0.0", :groups => :development - end - - it "should handle a list of requirements" do - update_repo2 do - build_gem "baz", "1.0" - build_gem "baz", "1.1" - end - - build_lib("foo", :path => tmp.join("foo")) do |s| - s.write("Gemfile", "source :rubygems\ngemspec") - s.add_dependency "baz", ">= 1.0", "< 1.1" - end - install_gemfile <<-G - source "file://#{gem_repo2}" - gemspec :path => '#{tmp.join("foo")}' - G - - expect(the_bundle).to include_gems "baz 1.0" - end - - it "should raise if there are no gemspecs available" do - build_lib("foo", :path => tmp.join("foo"), :gemspec => false) - - install_gemfile(<<-G) - source "file://#{gem_repo2}" - gemspec :path => '#{tmp.join("foo")}' - G - expect(last_command.bundler_err).to match(/There are no gemspecs at #{tmp.join('foo')}/) - end - - it "should raise if there are too many gemspecs available" do - build_lib("foo", :path => tmp.join("foo")) do |s| - s.write("foo2.gemspec", build_spec("foo", "4.0").first.to_ruby) - end - - install_gemfile(<<-G) - source "file://#{gem_repo2}" - gemspec :path => '#{tmp.join("foo")}' - G - expect(last_command.bundler_err).to match(/There are multiple gemspecs at #{tmp.join('foo')}/) - end - - it "should pick a specific gemspec" do - build_lib("foo", :path => tmp.join("foo")) do |s| - s.write("foo2.gemspec", "") - s.add_dependency "bar", "=1.0.0" - s.add_development_dependency "bar-dev", "=1.0.0" - end - - install_gemfile(<<-G) - source "file://#{gem_repo2}" - gemspec :path => '#{tmp.join("foo")}', :name => 'foo' - G - - expect(the_bundle).to include_gems "bar 1.0.0" - expect(the_bundle).to include_gems "bar-dev 1.0.0", :groups => :development - end - - it "should use a specific group for development dependencies" do - build_lib("foo", :path => tmp.join("foo")) do |s| - s.write("foo2.gemspec", "") - s.add_dependency "bar", "=1.0.0" - s.add_development_dependency "bar-dev", "=1.0.0" - end - - install_gemfile(<<-G) - source "file://#{gem_repo2}" - gemspec :path => '#{tmp.join("foo")}', :name => 'foo', :development_group => :dev - G - - expect(the_bundle).to include_gems "bar 1.0.0" - expect(the_bundle).not_to include_gems "bar-dev 1.0.0", :groups => :development - expect(the_bundle).to include_gems "bar-dev 1.0.0", :groups => :dev - end - - it "should match a lockfile even if the gemspec defines development dependencies" do - build_lib("foo", :path => tmp.join("foo")) do |s| - s.write("Gemfile", "source 'file://#{gem_repo1}'\ngemspec") - s.add_dependency "actionpack", "=2.3.2" - s.add_development_dependency "rake", "=10.0.2" - end - - Dir.chdir(tmp.join("foo")) do - bundle "install" - # This should really be able to rely on $stderr, but, it's not written - # right, so we can't. In fact, this is a bug negation test, and so it'll - # ghost pass in future, and will only catch a regression if the message - # doesn't change. Exit codes should be used correctly (they can be more - # than just 0 and 1). - output = bundle("install --deployment") - expect(output).not_to match(/You have added to the Gemfile/) - expect(output).not_to match(/You have deleted from the Gemfile/) - expect(output).not_to match(/install in deployment mode after changing/) - end - end - - it "should match a lockfile without needing to re-resolve" do - build_lib("foo", :path => tmp.join("foo")) do |s| - s.add_dependency "rack" - end - - install_gemfile! <<-G - source "file://#{gem_repo1}" - gemspec :path => '#{tmp.join("foo")}' - G - - bundle! "install", :verbose => true - - message = "Found no changes, using resolution from the lockfile" - expect(out.scan(message).size).to eq(1) - end - - it "should match a lockfile without needing to re-resolve with development dependencies" do - simulate_platform java - - build_lib("foo", :path => tmp.join("foo")) do |s| - s.add_dependency "rack" - s.add_development_dependency "thin" - end - - install_gemfile! <<-G - source "file://#{gem_repo1}" - gemspec :path => '#{tmp.join("foo")}' - G - - bundle! "install", :verbose => true - - message = "Found no changes, using resolution from the lockfile" - expect(out.scan(message).size).to eq(1) - end - - it "should match a lockfile on non-ruby platforms with a transitive platform dependency" do - simulate_platform java - simulate_ruby_engine "jruby" - - build_lib("foo", :path => tmp.join("foo")) do |s| - s.add_dependency "platform_specific" - end - - system_gems "platform_specific-1.0-java", :path => :bundle_path, :keep_path => true - - install_gemfile! <<-G - gemspec :path => '#{tmp.join("foo")}' - G - - bundle! "update --bundler", :verbose => true - expect(the_bundle).to include_gems "foo 1.0", "platform_specific 1.0 JAVA" - end - - it "should evaluate the gemspec in its directory" do - build_lib("foo", :path => tmp.join("foo")) - File.open(tmp.join("foo/foo.gemspec"), "w") do |s| - s.write "raise 'ahh' unless Dir.pwd == '#{tmp.join("foo")}'" - end - - install_gemfile <<-G - gemspec :path => '#{tmp.join("foo")}' - G - expect(last_command.stdboth).not_to include("ahh") - end - - it "allows the gemspec to activate other gems" do - ENV["BUNDLE_PATH__SYSTEM"] = "true" - # see https://github.com/bundler/bundler/issues/5409 - # - # issue was caused by rubygems having an unresolved gem during a require, - # so emulate that - system_gems %w[rack-1.0.0 rack-0.9.1 rack-obama-1.0] - - build_lib("foo", :path => bundled_app) - gemspec = bundled_app("foo.gemspec").read - bundled_app("foo.gemspec").open("w") do |f| - f.write "#{gemspec.strip}.tap { gem 'rack-obama'; require 'rack-obama' }" - end - - install_gemfile! <<-G - gemspec - G - - expect(the_bundle).to include_gem "foo 1.0" - end - - it "allows conflicts" do - build_lib("foo", :path => tmp.join("foo")) do |s| - s.version = "1.0.0" - s.add_dependency "bar", "= 1.0.0" - end - build_gem "deps", :to_bundle => true do |s| - s.add_dependency "foo", "= 0.0.1" - end - build_gem "foo", "0.0.1", :to_bundle => true - - install_gemfile <<-G - source "file://#{gem_repo2}" - gem "deps" - gemspec :path => '#{tmp.join("foo")}', :name => 'foo' - G - - expect(the_bundle).to include_gems "foo 1.0.0" - end - - it "does not break Gem.finish_resolve with conflicts", :rubygems => ">= 2" do - build_lib("foo", :path => tmp.join("foo")) do |s| - s.version = "1.0.0" - s.add_dependency "bar", "= 1.0.0" - end - update_repo2 do - build_gem "deps" do |s| - s.add_dependency "foo", "= 0.0.1" - end - build_gem "foo", "0.0.1" - end - - install_gemfile! <<-G - source "file://#{gem_repo2}" - gem "deps" - gemspec :path => '#{tmp.join("foo")}', :name => 'foo' - G - - expect(the_bundle).to include_gems "foo 1.0.0" - - run! "Gem.finish_resolve; puts 'WIN'" - expect(out).to eq("WIN") - end - - context "in deployment mode" do - context "when the lockfile was not updated after a change to the gemspec's dependencies" do - it "reports that installation failed" do - build_lib "cocoapods", :path => bundled_app do |s| - s.add_dependency "activesupport", ">= 1" - end - - install_gemfile! <<-G - source "file://#{gem_repo1}" - gemspec - G - - expect(the_bundle).to include_gems("cocoapods 1.0", "activesupport 2.3.5") - - build_lib "cocoapods", :path => bundled_app do |s| - s.add_dependency "activesupport", ">= 1.0.1" - end - - bundle :install, forgotten_command_line_options(:deployment => true) - - expect(out).to include("changed") - end - end - end - - context "when child gemspecs conflict with a released gemspec" do - before do - # build the "parent" gem that depends on another gem in the same repo - build_lib "source_conflict", :path => bundled_app do |s| - s.add_dependency "rack_middleware" - end - - # build the "child" gem that is the same version as a released gem, but - # has completely different and conflicting dependency requirements - build_lib "rack_middleware", "1.0", :path => bundled_app("rack_middleware") do |s| - s.add_dependency "rack", "1.0" # anything other than 0.9.1 - end - end - - it "should install the child gemspec's deps" do - install_gemfile <<-G - source "file://#{gem_repo1}" - gemspec - G - - expect(the_bundle).to include_gems "rack 1.0" - end - end - - context "with a lockfile and some missing dependencies" do - let(:source_uri) { "http://localgemserver.test" } - - context "previously bundled for Ruby" do - let(:platform) { "ruby" } - let(:explicit_platform) { false } - - before do - build_lib("foo", :path => tmp.join("foo")) do |s| - s.add_dependency "rack", "=1.0.0" - end - - if explicit_platform - create_file( - tmp.join("foo", "foo-#{platform}.gemspec"), - build_spec("foo", "1.0", platform) do - dep "rack", "=1.0.0" - @spec.authors = "authors" - @spec.summary = "summary" - end.first.to_ruby - ) - end - - gemfile <<-G - source "#{source_uri}" - gemspec :path => "../foo" - G - - lockfile <<-L - PATH - remote: ../foo - specs: - foo (1.0) - rack (= 1.0.0) - - GEM - remote: #{source_uri} - specs: - rack (1.0.0) - - PLATFORMS - #{generic_local_platform} - - DEPENDENCIES - foo! - - BUNDLED WITH - #{Bundler::VERSION} - L - end - - context "using JRuby with explicit platform" do - let(:platform) { "java" } - let(:explicit_platform) { true } - - it "should install" do - simulate_ruby_engine "jruby" do - simulate_platform "java" do - results = bundle "install", :artifice => "endpoint" - expect(results).to include("Installing rack 1.0.0") - expect(the_bundle).to include_gems "rack 1.0.0" - end - end - end - end - - context "using JRuby" do - let(:platform) { "java" } - - it "should install" do - simulate_ruby_engine "jruby" do - simulate_platform "java" do - results = bundle "install", :artifice => "endpoint" - expect(results).to include("Installing rack 1.0.0") - expect(the_bundle).to include_gems "rack 1.0.0" - end - end - end - end - - context "using Windows" do - it "should install" do - simulate_windows do - results = bundle "install", :artifice => "endpoint" - expect(results).to include("Installing rack 1.0.0") - expect(the_bundle).to include_gems "rack 1.0.0" - end - end - end - end - - context "bundled for ruby and jruby" do - let(:platform_specific_type) { :runtime } - let(:dependency) { "platform_specific" } - before do - build_repo2 do - build_gem "indirect_platform_specific" do |s| - s.add_runtime_dependency "platform_specific" - end - end - - build_lib "foo", :path => "." do |s| - if platform_specific_type == :runtime - s.add_runtime_dependency dependency - elsif platform_specific_type == :development - s.add_development_dependency dependency - else - raise "wrong dependency type #{platform_specific_type}, can only be :development or :runtime" - end - end - - %w[ruby jruby].each do |platform| - simulate_platform(platform) do - install_gemfile <<-G - source "file://localhost#{gem_repo2}" - gemspec - G - end - end - end - - context "on ruby", :bundler => "< 2" do - before do - simulate_platform("ruby") - bundle :install - end - - context "as a runtime dependency" do - it "keeps java dependencies in the lockfile" do - expect(the_bundle).to include_gems "foo 1.0", "platform_specific 1.0 RUBY" - expect(lockfile).to eq strip_whitespace(<<-L) - PATH - remote: . - specs: - foo (1.0) - platform_specific - - GEM - remote: file://localhost#{gem_repo2}/ - specs: - platform_specific (1.0) - platform_specific (1.0-java) - - PLATFORMS - java - ruby - - DEPENDENCIES - foo! - - BUNDLED WITH - #{Bundler::VERSION} - L - end - end - - context "as a development dependency" do - let(:platform_specific_type) { :development } - - it "keeps java dependencies in the lockfile" do - expect(the_bundle).to include_gems "foo 1.0", "platform_specific 1.0 RUBY" - expect(lockfile).to eq strip_whitespace(<<-L) - PATH - remote: . - specs: - foo (1.0) - - GEM - remote: file://localhost#{gem_repo2}/ - specs: - platform_specific (1.0) - platform_specific (1.0-java) - - PLATFORMS - java - ruby - - DEPENDENCIES - foo! - platform_specific - - BUNDLED WITH - #{Bundler::VERSION} - L - end - end - - context "with an indirect platform-specific development dependency" do - let(:platform_specific_type) { :development } - let(:dependency) { "indirect_platform_specific" } - - it "keeps java dependencies in the lockfile" do - expect(the_bundle).to include_gems "foo 1.0", "indirect_platform_specific 1.0", "platform_specific 1.0 RUBY" - expect(lockfile).to eq strip_whitespace(<<-L) - PATH - remote: . - specs: - foo (1.0) - - GEM - remote: file://localhost#{gem_repo2}/ - specs: - indirect_platform_specific (1.0) - platform_specific - platform_specific (1.0) - platform_specific (1.0-java) - - PLATFORMS - java - ruby - - DEPENDENCIES - foo! - indirect_platform_specific - - BUNDLED WITH - #{Bundler::VERSION} - L - end - end - end - - context "on ruby", :bundler => "2" do - before do - simulate_platform("ruby") - bundle :install - end - - context "as a runtime dependency" do - it "keeps java dependencies in the lockfile" do - expect(the_bundle).to include_gems "foo 1.0", "platform_specific 1.0 RUBY" - expect(lockfile).to eq strip_whitespace(<<-L) - GEM - remote: file://localhost#{gem_repo2}/ - specs: - platform_specific (1.0) - platform_specific (1.0-java) - - PATH - remote: . - specs: - foo (1.0) - platform_specific - - PLATFORMS - java - ruby - - DEPENDENCIES - foo! - - BUNDLED WITH - #{Bundler::VERSION} - L - end - end - - context "as a development dependency" do - let(:platform_specific_type) { :development } - - it "keeps java dependencies in the lockfile" do - expect(the_bundle).to include_gems "foo 1.0", "platform_specific 1.0 RUBY" - expect(lockfile).to eq strip_whitespace(<<-L) - GEM - remote: file://localhost#{gem_repo2}/ - specs: - platform_specific (1.0) - platform_specific (1.0-java) - - PATH - remote: . - specs: - foo (1.0) - - PLATFORMS - java - ruby - - DEPENDENCIES - foo! - platform_specific - - BUNDLED WITH - #{Bundler::VERSION} - L - end - end - - context "with an indirect platform-specific development dependency" do - let(:platform_specific_type) { :development } - let(:dependency) { "indirect_platform_specific" } - - it "keeps java dependencies in the lockfile" do - expect(the_bundle).to include_gems "foo 1.0", "indirect_platform_specific 1.0", "platform_specific 1.0 RUBY" - expect(lockfile).to eq strip_whitespace(<<-L) - GEM - remote: file://localhost#{gem_repo2}/ - specs: - indirect_platform_specific (1.0) - platform_specific - platform_specific (1.0) - platform_specific (1.0-java) - - PATH - remote: . - specs: - foo (1.0) - - PLATFORMS - java - ruby - - DEPENDENCIES - foo! - indirect_platform_specific - - BUNDLED WITH - #{Bundler::VERSION} - L - end - end - end - end - end - - context "with multiple platforms" do - before do - build_lib("foo", :path => tmp.join("foo")) do |s| - s.version = "1.0.0" - s.add_development_dependency "rack" - s.write "foo-universal-java.gemspec", build_spec("foo", "1.0.0", "universal-java") {|sj| sj.runtime "rack", "1.0.0" }.first.to_ruby - end - end - - it "installs the ruby platform gemspec" do - simulate_platform "ruby" - - install_gemfile! <<-G - source "file://#{gem_repo1}" - gemspec :path => '#{tmp.join("foo")}', :name => 'foo' - G - - expect(the_bundle).to include_gems "foo 1.0.0", "rack 1.0.0" - end - - it "installs the ruby platform gemspec and skips dev deps with --without development" do - simulate_platform "ruby" - - install_gemfile! <<-G, forgotten_command_line_options(:without => "development") - source "file://#{gem_repo1}" - gemspec :path => '#{tmp.join("foo")}', :name => 'foo' - G - - expect(the_bundle).to include_gem "foo 1.0.0" - expect(the_bundle).not_to include_gem "rack" - end - end -end diff --git a/spec/bundler/install/gemfile/git_spec.rb b/spec/bundler/install/gemfile/git_spec.rb deleted file mode 100644 index 57d83a5295..0000000000 --- a/spec/bundler/install/gemfile/git_spec.rb +++ /dev/null @@ -1,1351 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe "bundle install with git sources" do - describe "when floating on master" do - before :each do - build_git "foo" do |s| - s.executables = "foobar" - end - - install_gemfile <<-G - source "file://#{gem_repo1}" - git "#{lib_path("foo-1.0")}" do - gem 'foo' - end - G - end - - it "fetches gems" do - expect(the_bundle).to include_gems("foo 1.0") - - run <<-RUBY - require 'foo' - puts "WIN" unless defined?(FOO_PREV_REF) - RUBY - - expect(out).to eq("WIN") - end - - it "caches the git repo", :bundler => "< 2" do - expect(Dir["#{default_bundle_path}/cache/bundler/git/foo-1.0-*"]).to have_attributes :size => 1 - end - - it "caches the git repo globally" do - simulate_new_machine - bundle! "config global_gem_cache true" - bundle! :install - expect(Dir["#{home}/.bundle/cache/git/foo-1.0-*"]).to have_attributes :size => 1 - end - - it "caches the evaluated gemspec" do - git = update_git "foo" do |s| - s.executables = ["foobar"] # we added this the first time, so keep it now - s.files = ["bin/foobar"] # updating git nukes the files list - foospec = s.to_ruby.gsub(/s\.files.*/, 's.files = `git ls-files -z`.split("\x0")') - s.write "foo.gemspec", foospec - end - - bundle "update foo" - - sha = git.ref_for("master", 11) - spec_file = default_bundle_path.join("bundler/gems/foo-1.0-#{sha}/foo.gemspec").to_s - ruby_code = Gem::Specification.load(spec_file).to_ruby - file_code = File.read(spec_file) - expect(file_code).to eq(ruby_code) - end - - it "does not update the git source implicitly" do - update_git "foo" - - in_app_root2 do - install_gemfile bundled_app2("Gemfile"), <<-G - git "#{lib_path("foo-1.0")}" do - gem 'foo' - end - G - end - - in_app_root do - run <<-RUBY - require 'foo' - puts "fail" if defined?(FOO_PREV_REF) - RUBY - - expect(out).to be_empty - end - end - - it "sets up git gem executables on the path" do - bundle "exec foobar" - expect(out).to eq("1.0") - end - - it "complains if pinned specs don't exist in the git repo" do - build_git "foo" - - install_gemfile <<-G - gem "foo", "1.1", :git => "#{lib_path("foo-1.0")}" - G - - expect(out).to include("The source contains 'foo' at: 1.0") - end - - it "complains with version and platform if pinned specs don't exist in the git repo" do - simulate_platform "java" - - build_git "only_java" do |s| - s.platform = "java" - end - - install_gemfile <<-G - platforms :jruby do - gem "only_java", "1.2", :git => "#{lib_path("only_java-1.0-java")}" - end - G - - expect(out).to include("The source contains 'only_java' at: 1.0 java") - end - - it "complains with multiple versions and platforms if pinned specs don't exist in the git repo" do - simulate_platform "java" - - build_git "only_java", "1.0" do |s| - s.platform = "java" - end - - build_git "only_java", "1.1" do |s| - s.platform = "java" - s.write "only_java1-0.gemspec", File.read("#{lib_path("only_java-1.0-java")}/only_java.gemspec") - end - - install_gemfile <<-G - platforms :jruby do - gem "only_java", "1.2", :git => "#{lib_path("only_java-1.1-java")}" - end - G - - expect(out).to include("The source contains 'only_java' at: 1.0 java, 1.1 java") - end - - it "still works after moving the application directory" do - bundle "install --path vendor/bundle" - FileUtils.mv bundled_app, tmp("bundled_app.bck") - - Dir.chdir tmp("bundled_app.bck") - expect(the_bundle).to include_gems "foo 1.0" - end - - it "can still install after moving the application directory" do - bundle "install --path vendor/bundle" - FileUtils.mv bundled_app, tmp("bundled_app.bck") - - update_git "foo", "1.1", :path => lib_path("foo-1.0") - - Dir.chdir tmp("bundled_app.bck") - gemfile tmp("bundled_app.bck/Gemfile"), <<-G - source "file://#{gem_repo1}" - git "#{lib_path("foo-1.0")}" do - gem 'foo' - end - - gem "rack", "1.0" - G - - bundle "update foo" - - expect(the_bundle).to include_gems "foo 1.1", "rack 1.0" - end - end - - describe "with an empty git block" do - before do - build_git "foo" - gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - - git "#{lib_path("foo-1.0")}" do - # this page left intentionally blank - end - G - end - - it "does not explode" do - bundle "install" - expect(the_bundle).to include_gems "rack 1.0" - end - end - - describe "when specifying a revision" do - before(:each) do - build_git "foo" - @revision = revision_for(lib_path("foo-1.0")) - update_git "foo" - end - - it "works" do - install_gemfile <<-G - git "#{lib_path("foo-1.0")}", :ref => "#{@revision}" do - gem "foo" - end - G - - run <<-RUBY - require 'foo' - puts "WIN" unless defined?(FOO_PREV_REF) - RUBY - - expect(out).to eq("WIN") - end - - it "works when the revision is a symbol" do - install_gemfile <<-G - git "#{lib_path("foo-1.0")}", :ref => #{@revision.to_sym.inspect} do - gem "foo" - end - G - expect(err).to lack_errors - - run <<-RUBY - require 'foo' - puts "WIN" unless defined?(FOO_PREV_REF) - RUBY - - expect(out).to eq("WIN") - end - - it "works when the revision is a non-head ref" do - # want to ensure we don't fallback to master - update_git "foo", :path => lib_path("foo-1.0") do |s| - s.write("lib/foo.rb", "raise 'FAIL'") - end - - Dir.chdir(lib_path("foo-1.0")) do - `git update-ref -m 'Bundler Spec!' refs/bundler/1 master~1` - end - - # want to ensure we don't fallback to HEAD - update_git "foo", :path => lib_path("foo-1.0"), :branch => "rando" do |s| - s.write("lib/foo.rb", "raise 'FAIL'") - end - - install_gemfile! <<-G - git "#{lib_path("foo-1.0")}", :ref => "refs/bundler/1" do - gem "foo" - end - G - expect(err).to lack_errors - - run! <<-RUBY - require 'foo' - puts "WIN" if defined?(FOO) - RUBY - - expect(out).to eq("WIN") - end - - it "works when the revision is a non-head ref and it was previously downloaded" do - install_gemfile! <<-G - git "#{lib_path("foo-1.0")}" do - gem "foo" - end - G - - # want to ensure we don't fallback to master - update_git "foo", :path => lib_path("foo-1.0") do |s| - s.write("lib/foo.rb", "raise 'FAIL'") - end - - Dir.chdir(lib_path("foo-1.0")) do - `git update-ref -m 'Bundler Spec!' refs/bundler/1 master~1` - end - - # want to ensure we don't fallback to HEAD - update_git "foo", :path => lib_path("foo-1.0"), :branch => "rando" do |s| - s.write("lib/foo.rb", "raise 'FAIL'") - end - - install_gemfile! <<-G - git "#{lib_path("foo-1.0")}", :ref => "refs/bundler/1" do - gem "foo" - end - G - expect(err).to lack_errors - - run! <<-RUBY - require 'foo' - puts "WIN" if defined?(FOO) - RUBY - - expect(out).to eq("WIN") - end - - it "does not download random non-head refs" do - Dir.chdir(lib_path("foo-1.0")) do - sys_exec!("git update-ref -m 'Bundler Spec!' refs/bundler/1 master~1") - end - - bundle! "config global_gem_cache true" - - install_gemfile! <<-G - git "#{lib_path("foo-1.0")}" do - gem "foo" - end - G - - # ensure we also git fetch after cloning - bundle! :update, :all => bundle_update_requires_all? - - Dir.chdir(Dir[home(".bundle/cache/git/foo-*")].first) do - sys_exec("git ls-remote .") - end - - expect(out).not_to include("refs/bundler/1") - end - end - - describe "when specifying a branch" do - let(:branch) { "branch" } - let(:repo) { build_git("foo").path } - before(:each) do - update_git("foo", :path => repo, :branch => branch) - end - - it "works" do - install_gemfile <<-G - git "#{repo}", :branch => #{branch.dump} do - gem "foo" - end - G - - expect(the_bundle).to include_gems("foo 1.0") - end - - context "when the branch starts with a `#`" do - let(:branch) { "#149/redirect-url-fragment" } - it "works" do - install_gemfile <<-G - git "#{repo}", :branch => #{branch.dump} do - gem "foo" - end - G - - expect(the_bundle).to include_gems("foo 1.0") - end - end - - context "when the branch includes quotes" do - let(:branch) { %('") } - it "works" do - install_gemfile <<-G - git "#{repo}", :branch => #{branch.dump} do - gem "foo" - end - G - - expect(the_bundle).to include_gems("foo 1.0") - end - end - end - - describe "when specifying a tag" do - let(:tag) { "tag" } - let(:repo) { build_git("foo").path } - before(:each) do - update_git("foo", :path => repo, :tag => tag) - end - - it "works" do - install_gemfile <<-G - git "#{repo}", :tag => #{tag.dump} do - gem "foo" - end - G - - expect(the_bundle).to include_gems("foo 1.0") - end - - context "when the tag starts with a `#`" do - let(:tag) { "#149/redirect-url-fragment" } - it "works" do - install_gemfile <<-G - git "#{repo}", :tag => #{tag.dump} do - gem "foo" - end - G - - expect(the_bundle).to include_gems("foo 1.0") - end - end - - context "when the tag includes quotes" do - let(:tag) { %('") } - it "works" do - install_gemfile <<-G - git "#{repo}", :tag => #{tag.dump} do - gem "foo" - end - G - - expect(the_bundle).to include_gems("foo 1.0") - end - end - end - - describe "when specifying local override" do - it "uses the local repository instead of checking a new one out" do - # We don't generate it because we actually don't need it - # build_git "rack", "0.8" - - build_git "rack", "0.8", :path => lib_path("local-rack") do |s| - s.write "lib/rack.rb", "puts :LOCAL" - end - - gemfile <<-G - source "file://#{gem_repo1}" - gem "rack", :git => "#{lib_path("rack-0.8")}", :branch => "master" - G - - bundle! %(config local.rack #{lib_path("local-rack")}) - bundle! :install - - run "require 'rack'" - expect(out).to eq("LOCAL") - end - - it "chooses the local repository on runtime" do - build_git "rack", "0.8" - - FileUtils.cp_r("#{lib_path("rack-0.8")}/.", lib_path("local-rack")) - - update_git "rack", "0.8", :path => lib_path("local-rack") do |s| - s.write "lib/rack.rb", "puts :LOCAL" - end - - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "rack", :git => "#{lib_path("rack-0.8")}", :branch => "master" - G - - bundle %(config local.rack #{lib_path("local-rack")}) - run "require 'rack'" - expect(out).to eq("LOCAL") - end - - it "unlocks the source when the dependencies have changed while switching to the local" do - build_git "rack", "0.8" - - FileUtils.cp_r("#{lib_path("rack-0.8")}/.", lib_path("local-rack")) - - update_git "rack", "0.8", :path => lib_path("local-rack") do |s| - s.write "rack.gemspec", build_spec("rack", "0.8") { runtime "rspec", "> 0" }.first.to_ruby - s.write "lib/rack.rb", "puts :LOCAL" - end - - install_gemfile! <<-G - source "file://#{gem_repo1}" - gem "rack", :git => "#{lib_path("rack-0.8")}", :branch => "master" - G - - bundle! %(config local.rack #{lib_path("local-rack")}) - bundle! :install - run! "require 'rack'" - expect(out).to eq("LOCAL") - end - - it "updates specs on runtime" do - system_gems "nokogiri-1.4.2" - - build_git "rack", "0.8" - - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "rack", :git => "#{lib_path("rack-0.8")}", :branch => "master" - G - - lockfile0 = File.read(bundled_app("Gemfile.lock")) - - FileUtils.cp_r("#{lib_path("rack-0.8")}/.", lib_path("local-rack")) - update_git "rack", "0.8", :path => lib_path("local-rack") do |s| - s.add_dependency "nokogiri", "1.4.2" - end - - bundle %(config local.rack #{lib_path("local-rack")}) - run "require 'rack'" - - lockfile1 = File.read(bundled_app("Gemfile.lock")) - expect(lockfile1).not_to eq(lockfile0) - end - - it "updates ref on install" do - build_git "rack", "0.8" - - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "rack", :git => "#{lib_path("rack-0.8")}", :branch => "master" - G - - lockfile0 = File.read(bundled_app("Gemfile.lock")) - - FileUtils.cp_r("#{lib_path("rack-0.8")}/.", lib_path("local-rack")) - update_git "rack", "0.8", :path => lib_path("local-rack") - - bundle %(config local.rack #{lib_path("local-rack")}) - bundle :install - - lockfile1 = File.read(bundled_app("Gemfile.lock")) - expect(lockfile1).not_to eq(lockfile0) - end - - it "explodes if given path does not exist on install" do - build_git "rack", "0.8" - - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "rack", :git => "#{lib_path("rack-0.8")}", :branch => "master" - G - - bundle %(config local.rack #{lib_path("local-rack")}) - bundle :install - expect(out).to match(/Cannot use local override for rack-0.8 because #{Regexp.escape(lib_path('local-rack').to_s)} does not exist/) - end - - it "explodes if branch is not given on install" do - build_git "rack", "0.8" - FileUtils.cp_r("#{lib_path("rack-0.8")}/.", lib_path("local-rack")) - - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "rack", :git => "#{lib_path("rack-0.8")}" - G - - bundle %(config local.rack #{lib_path("local-rack")}) - bundle :install - expect(out).to match(/cannot use local override/i) - end - - it "does not explode if disable_local_branch_check is given" do - build_git "rack", "0.8" - FileUtils.cp_r("#{lib_path("rack-0.8")}/.", lib_path("local-rack")) - - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "rack", :git => "#{lib_path("rack-0.8")}" - G - - bundle %(config local.rack #{lib_path("local-rack")}) - bundle %(config disable_local_branch_check true) - bundle :install - expect(out).to match(/Bundle complete!/) - end - - it "explodes on different branches on install" do - build_git "rack", "0.8" - - FileUtils.cp_r("#{lib_path("rack-0.8")}/.", lib_path("local-rack")) - - update_git "rack", "0.8", :path => lib_path("local-rack"), :branch => "another" do |s| - s.write "lib/rack.rb", "puts :LOCAL" - end - - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "rack", :git => "#{lib_path("rack-0.8")}", :branch => "master" - G - - bundle %(config local.rack #{lib_path("local-rack")}) - bundle :install - expect(out).to match(/is using branch another but Gemfile specifies master/) - end - - it "explodes on invalid revision on install" do - build_git "rack", "0.8" - - build_git "rack", "0.8", :path => lib_path("local-rack") do |s| - s.write "lib/rack.rb", "puts :LOCAL" - end - - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "rack", :git => "#{lib_path("rack-0.8")}", :branch => "master" - G - - bundle %(config local.rack #{lib_path("local-rack")}) - bundle :install - expect(out).to match(/The Gemfile lock is pointing to revision \w+/) - end - end - - describe "specified inline" do - # TODO: Figure out how to write this test so that it is not flaky depending - # on the current network situation. - # it "supports private git URLs" do - # gemfile <<-G - # gem "thingy", :git => "git@notthere.fallingsnow.net:somebody/thingy.git" - # G - # - # bundle :install - # - # # p out - # # p err - # puts err unless err.empty? # This spec fails randomly every so often - # err.should include("notthere.fallingsnow.net") - # err.should include("ssh") - # end - - it "installs from git even if a newer gem is available elsewhere" do - build_git "rack", "0.8" - - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "rack", :git => "#{lib_path("rack-0.8")}" - G - - expect(the_bundle).to include_gems "rack 0.8" - end - - it "installs dependencies from git even if a newer gem is available elsewhere" do - system_gems "rack-1.0.0" - - build_lib "rack", "1.0", :path => lib_path("nested/bar") do |s| - s.write "lib/rack.rb", "puts 'WIN OVERRIDE'" - end - - build_git "foo", :path => lib_path("nested") do |s| - s.add_dependency "rack", "= 1.0" - end - - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "foo", :git => "#{lib_path("nested")}" - G - - run "require 'rack'" - expect(out).to eq("WIN OVERRIDE") - end - - it "correctly unlocks when changing to a git source" do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "rack", "0.9.1" - G - - build_git "rack", :path => lib_path("rack") - - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "rack", "1.0.0", :git => "#{lib_path("rack")}" - G - - expect(the_bundle).to include_gems "rack 1.0.0" - end - - it "correctly unlocks when changing to a git source without versions" do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - G - - build_git "rack", "1.2", :path => lib_path("rack") - - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "rack", :git => "#{lib_path("rack")}" - G - - expect(the_bundle).to include_gems "rack 1.2" - end - end - - describe "block syntax" do - it "pulls all gems from a git block" do - build_lib "omg", :path => lib_path("hi2u/omg") - build_lib "hi2u", :path => lib_path("hi2u") - - install_gemfile <<-G - path "#{lib_path("hi2u")}" do - gem "omg" - gem "hi2u" - end - G - - expect(the_bundle).to include_gems "omg 1.0", "hi2u 1.0" - end - end - - it "uses a ref if specified" do - build_git "foo" - @revision = revision_for(lib_path("foo-1.0")) - update_git "foo" - - install_gemfile <<-G - gem "foo", :git => "#{lib_path("foo-1.0")}", :ref => "#{@revision}" - G - - run <<-RUBY - require 'foo' - puts "WIN" unless defined?(FOO_PREV_REF) - RUBY - - expect(out).to eq("WIN") - end - - it "correctly handles cases with invalid gemspecs" do - build_git "foo" do |s| - s.summary = nil - end - - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "foo", :git => "#{lib_path("foo-1.0")}" - gem "rails", "2.3.2" - G - - expect(the_bundle).to include_gems "foo 1.0" - expect(the_bundle).to include_gems "rails 2.3.2" - end - - it "runs the gemspec in the context of its parent directory" do - build_lib "bar", :path => lib_path("foo/bar"), :gemspec => false do |s| - s.write lib_path("foo/bar/lib/version.rb"), %(BAR_VERSION = '1.0') - s.write "bar.gemspec", <<-G - $:.unshift Dir.pwd # For 1.9 - require 'lib/version' - Gem::Specification.new do |s| - s.name = 'bar' - s.author = 'no one' - s.version = BAR_VERSION - s.summary = 'Bar' - s.files = Dir["lib/**/*.rb"] - end - G - end - - build_git "foo", :path => lib_path("foo") do |s| - s.write "bin/foo", "" - end - - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "bar", :git => "#{lib_path("foo")}" - gem "rails", "2.3.2" - G - - expect(the_bundle).to include_gems "bar 1.0" - expect(the_bundle).to include_gems "rails 2.3.2" - end - - it "installs from git even if a rubygems gem is present" do - build_gem "foo", "1.0", :path => lib_path("fake_foo"), :to_system => true do |s| - s.write "lib/foo.rb", "raise 'FAIL'" - end - - build_git "foo", "1.0" - - install_gemfile <<-G - gem "foo", "1.0", :git => "#{lib_path("foo-1.0")}" - G - - expect(the_bundle).to include_gems "foo 1.0" - end - - it "fakes the gem out if there is no gemspec" do - build_git "foo", :gemspec => false - - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "foo", "1.0", :git => "#{lib_path("foo-1.0")}" - gem "rails", "2.3.2" - G - - expect(the_bundle).to include_gems("foo 1.0") - expect(the_bundle).to include_gems("rails 2.3.2") - end - - it "catches git errors and spits out useful output" do - gemfile <<-G - gem "foo", "1.0", :git => "omgomg" - G - - bundle :install - - expect(out).to include("Git error:") - expect(err).to include("fatal") - expect(err).to include("omgomg") - end - - it "works when the gem path has spaces in it" do - build_git "foo", :path => lib_path("foo space-1.0") - - install_gemfile <<-G - gem "foo", :git => "#{lib_path("foo space-1.0")}" - G - - expect(the_bundle).to include_gems "foo 1.0" - end - - it "handles repos that have been force-pushed" do - build_git "forced", "1.0" - - install_gemfile <<-G - git "#{lib_path("forced-1.0")}" do - gem 'forced' - end - G - expect(the_bundle).to include_gems "forced 1.0" - - update_git "forced" do |s| - s.write "lib/forced.rb", "FORCED = '1.1'" - end - - bundle "update", :all => bundle_update_requires_all? - expect(the_bundle).to include_gems "forced 1.1" - - Dir.chdir(lib_path("forced-1.0")) do - `git reset --hard HEAD^` - end - - bundle "update", :all => bundle_update_requires_all? - expect(the_bundle).to include_gems "forced 1.0" - end - - it "ignores submodules if :submodule is not passed" do - build_git "submodule", "1.0" - build_git "has_submodule", "1.0" do |s| - s.add_dependency "submodule" - end - Dir.chdir(lib_path("has_submodule-1.0")) do - sys_exec "git submodule add #{lib_path("submodule-1.0")} submodule-1.0" - `git commit -m "submodulator"` - end - - install_gemfile <<-G - git "#{lib_path("has_submodule-1.0")}" do - gem "has_submodule" - end - G - expect(out).to match(/could not find gem 'submodule/i) - - expect(the_bundle).not_to include_gems "has_submodule 1.0" - end - - it "handles repos with submodules" do - build_git "submodule", "1.0" - build_git "has_submodule", "1.0" do |s| - s.add_dependency "submodule" - end - Dir.chdir(lib_path("has_submodule-1.0")) do - sys_exec "git submodule add #{lib_path("submodule-1.0")} submodule-1.0" - `git commit -m "submodulator"` - end - - install_gemfile <<-G - git "#{lib_path("has_submodule-1.0")}", :submodules => true do - gem "has_submodule" - end - G - - expect(the_bundle).to include_gems "has_submodule 1.0" - end - - it "handles implicit updates when modifying the source info" do - git = build_git "foo" - - install_gemfile <<-G - git "#{lib_path("foo-1.0")}" do - gem "foo" - end - G - - update_git "foo" - update_git "foo" - - install_gemfile <<-G - git "#{lib_path("foo-1.0")}", :ref => "#{git.ref_for("HEAD^")}" do - gem "foo" - end - G - - run <<-RUBY - require 'foo' - puts "WIN" if FOO_PREV_REF == '#{git.ref_for("HEAD^^")}' - RUBY - - expect(out).to eq("WIN") - end - - it "does not to a remote fetch if the revision is cached locally" do - build_git "foo" - - install_gemfile <<-G - gem "foo", :git => "#{lib_path("foo-1.0")}" - G - - FileUtils.rm_rf(lib_path("foo-1.0")) - - bundle "install" - expect(out).not_to match(/updating/i) - end - - it "doesn't blow up if bundle install is run twice in a row" do - build_git "foo" - - gemfile <<-G - gem "foo", :git => "#{lib_path("foo-1.0")}" - G - - bundle "install" - bundle "install" - expect(exitstatus).to eq(0) if exitstatus - end - - it "prints a friendly error if a file blocks the git repo" do - build_git "foo" - - FileUtils.mkdir_p(default_bundle_path) - FileUtils.touch(default_bundle_path("bundler")) - - install_gemfile <<-G - gem "foo", :git => "#{lib_path("foo-1.0")}" - G - - expect(exitstatus).to_not eq(0) if exitstatus - expect(out).to include("Bundler could not install a gem because it " \ - "needs to create a directory, but a file exists " \ - "- #{default_bundle_path("bundler")}") - end - - it "does not duplicate git gem sources" do - build_lib "foo", :path => lib_path("nested/foo") - build_lib "bar", :path => lib_path("nested/bar") - - build_git "foo", :path => lib_path("nested") - build_git "bar", :path => lib_path("nested") - - gemfile <<-G - gem "foo", :git => "#{lib_path("nested")}" - gem "bar", :git => "#{lib_path("nested")}" - G - - bundle "install" - expect(File.read(bundled_app("Gemfile.lock")).scan("GIT").size).to eq(1) - end - - describe "switching sources" do - it "doesn't explode when switching Path to Git sources" do - build_gem "foo", "1.0", :to_system => true do |s| - s.write "lib/foo.rb", "raise 'fail'" - end - build_lib "foo", "1.0", :path => lib_path("bar/foo") - build_git "bar", "1.0", :path => lib_path("bar") do |s| - s.add_dependency "foo" - end - - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "bar", :path => "#{lib_path("bar")}" - G - - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "bar", :git => "#{lib_path("bar")}" - G - - expect(the_bundle).to include_gems "foo 1.0", "bar 1.0" - end - - it "doesn't explode when switching Gem to Git source" do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "rack-obama" - gem "rack", "1.0.0" - G - - build_git "rack", "1.0" do |s| - s.write "lib/new_file.rb", "puts 'USING GIT'" - end - - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "rack-obama" - gem "rack", "1.0.0", :git => "#{lib_path("rack-1.0")}" - G - - run "require 'new_file'" - expect(out).to eq("USING GIT") - end - end - - describe "bundle install after the remote has been updated" do - it "installs" do - build_git "valim" - - install_gemfile <<-G - gem "valim", :git => "file://#{lib_path("valim-1.0")}" - G - - old_revision = revision_for(lib_path("valim-1.0")) - update_git "valim" - new_revision = revision_for(lib_path("valim-1.0")) - - lockfile = File.read(bundled_app("Gemfile.lock")) - File.open(bundled_app("Gemfile.lock"), "w") do |file| - file.puts lockfile.gsub(/revision: #{old_revision}/, "revision: #{new_revision}") - end - - bundle "install" - - run <<-R - require "valim" - puts VALIM_PREV_REF - R - - expect(out).to eq(old_revision) - end - - it "gives a helpful error message when the remote ref no longer exists" do - build_git "foo" - revision = revision_for(lib_path("foo-1.0")) - - install_gemfile <<-G - gem "foo", :git => "file://#{lib_path("foo-1.0")}", :ref => "#{revision}" - G - bundle "install" - expect(out).to_not match(/Revision.*does not exist/) - - install_gemfile <<-G - gem "foo", :git => "file://#{lib_path("foo-1.0")}", :ref => "deadbeef" - G - bundle "install" - expect(out).to include("Revision deadbeef does not exist in the repository") - end - end - - describe "bundle install --deployment with git sources" do - it "works" do - build_git "valim", :path => lib_path("valim") - - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "valim", "= 1.0", :git => "#{lib_path("valim")}" - G - - simulate_new_machine - - bundle! :install, forgotten_command_line_options(:deployment => true) - end - end - - describe "gem install hooks" do - it "runs pre-install hooks" do - build_git "foo" - gemfile <<-G - gem "foo", :git => "#{lib_path("foo-1.0")}" - G - - File.open(lib_path("install_hooks.rb"), "w") do |h| - h.write <<-H - require 'rubygems' - Gem.pre_install_hooks << lambda do |inst| - STDERR.puts "Ran pre-install hook: \#{inst.spec.full_name}" - end - H - end - - bundle :install, - :requires => [lib_path("install_hooks.rb")] - expect(err).to eq_err("Ran pre-install hook: foo-1.0") - end - - it "runs post-install hooks" do - build_git "foo" - gemfile <<-G - gem "foo", :git => "#{lib_path("foo-1.0")}" - G - - File.open(lib_path("install_hooks.rb"), "w") do |h| - h.write <<-H - require 'rubygems' - Gem.post_install_hooks << lambda do |inst| - STDERR.puts "Ran post-install hook: \#{inst.spec.full_name}" - end - H - end - - bundle :install, - :requires => [lib_path("install_hooks.rb")] - expect(err).to eq_err("Ran post-install hook: foo-1.0") - end - - it "complains if the install hook fails" do - build_git "foo" - gemfile <<-G - gem "foo", :git => "#{lib_path("foo-1.0")}" - G - - File.open(lib_path("install_hooks.rb"), "w") do |h| - h.write <<-H - require 'rubygems' - Gem.pre_install_hooks << lambda do |inst| - false - end - H - end - - bundle :install, - :requires => [lib_path("install_hooks.rb")] - expect(out).to include("failed for foo-1.0") - end - end - - context "with an extension" do - it "installs the extension", :ruby_repo do - build_git "foo" do |s| - s.add_dependency "rake" - s.extensions << "Rakefile" - s.write "Rakefile", <<-RUBY - task :default do - path = File.expand_path("../lib", __FILE__) - FileUtils.mkdir_p(path) - File.open("\#{path}/foo.rb", "w") do |f| - f.puts "FOO = 'YES'" - end - end - RUBY - end - - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "foo", :git => "#{lib_path("foo-1.0")}" - G - - run <<-R - require 'foo' - puts FOO - R - expect(out).to eq("YES") - - run! <<-R - puts $:.grep(/ext/) - R - expect(out).to eq(Pathname.glob(default_bundle_path("bundler/gems/extensions/**/foo-1.0-*")).first.to_s) - end - - it "does not use old extension after ref changes", :ruby_repo do - git_reader = build_git "foo", :no_default => true do |s| - s.extensions = ["ext/extconf.rb"] - s.write "ext/extconf.rb", <<-RUBY - require "mkmf" - create_makefile("foo") - RUBY - s.write "ext/foo.c", "void Init_foo() {}" - end - - 2.times do |i| - Dir.chdir(git_reader.path) do - File.open("ext/foo.c", "w") do |file| - file.write <<-C - #include "ruby.h" - VALUE foo() { return INT2FIX(#{i}); } - void Init_foo() { rb_define_global_function("foo", &foo, 0); } - C - end - `git commit -m 'commit for iteration #{i}' ext/foo.c` - end - git_commit_sha = git_reader.ref_for("HEAD") - - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "foo", :git => "#{lib_path("foo-1.0")}", :ref => "#{git_commit_sha}" - G - - run <<-R - require 'foo' - puts foo - R - - expect(out).to eq(i.to_s) - end - end - - it "does not prompt to gem install if extension fails" do - build_git "foo" do |s| - s.add_dependency "rake" - s.extensions << "Rakefile" - s.write "Rakefile", <<-RUBY - task :default do - raise - end - RUBY - end - - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "foo", :git => "#{lib_path("foo-1.0")}" - G - - expect(last_command.bundler_err).to end_with(<<-M.strip) -An error occurred while installing foo (1.0), and Bundler cannot continue. - -In Gemfile: - foo - M - expect(out).not_to include("gem install foo") - end - - it "does not reinstall the extension", :ruby_repo, :rubygems => ">= 2.3.0" do - build_git "foo" do |s| - s.add_dependency "rake" - s.extensions << "Rakefile" - s.write "Rakefile", <<-RUBY - task :default do - path = File.expand_path("../lib", __FILE__) - FileUtils.mkdir_p(path) - cur_time = Time.now.to_f.to_s - File.open("\#{path}/foo.rb", "w") do |f| - f.puts "FOO = \#{cur_time}" - end - end - RUBY - end - - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "foo", :git => "#{lib_path("foo-1.0")}" - G - - run! <<-R - require 'foo' - puts FOO - R - - installed_time = out - expect(installed_time).to match(/\A\d+\.\d+\z/) - - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "foo", :git => "#{lib_path("foo-1.0")}" - G - - run! <<-R - require 'foo' - puts FOO - R - expect(out).to eq(installed_time) - end - end - - it "ignores git environment variables" do - build_git "xxxxxx" do |s| - s.executables = "xxxxxxbar" - end - - Bundler::SharedHelpers.with_clean_git_env do - ENV["GIT_DIR"] = "bar" - ENV["GIT_WORK_TREE"] = "bar" - - install_gemfile <<-G - source "file://#{gem_repo1}" - git "#{lib_path("xxxxxx-1.0")}" do - gem 'xxxxxx' - end - G - - expect(exitstatus).to eq(0) if exitstatus - expect(ENV["GIT_DIR"]).to eq("bar") - expect(ENV["GIT_WORK_TREE"]).to eq("bar") - end - end - - describe "without git installed" do - it "prints a better error message" do - build_git "foo" - - install_gemfile <<-G - git "#{lib_path("foo-1.0")}" do - gem 'foo' - end - G - - with_path_as("") do - bundle "update", :all => bundle_update_requires_all? - end - expect(last_command.bundler_err). - to include("You need to install git to be able to use gems from git repositories. For help installing git, please refer to GitHub's tutorial at https://help.github.com/articles/set-up-git") - end - - it "installs a packaged git gem successfully" do - build_git "foo" - - install_gemfile <<-G - git "#{lib_path("foo-1.0")}" do - gem 'foo' - end - G - bundle :package, forgotten_command_line_options([:all, :cache_all] => true) - simulate_new_machine - - bundle! "install", :env => { "PATH" => "" } - expect(out).to_not include("You need to install git to be able to use gems from git repositories.") - end - end - - describe "when the git source is overridden with a local git repo" do - before do - bundle! "config --global local.foo #{lib_path("foo")}" - end - - describe "and git output is colorized" do - before do - File.open("#{ENV["HOME"]}/.gitconfig", "w") do |f| - f.write("[color]\n\tui = always\n") - end - end - - it "installs successfully" do - build_git "foo", "1.0", :path => lib_path("foo") - - gemfile <<-G - gem "foo", :git => "#{lib_path("foo")}", :branch => "master" - G - - bundle :install - expect(the_bundle).to include_gems "foo 1.0" - end - end - end - - context "git sources that include credentials" do - context "that are username and password" do - let(:credentials) { "user1:password1" } - - it "does not display the password" do - install_gemfile <<-G - git "https://#{credentials}@github.com/company/private-repo" do - gem "foo" - end - G - - bundle :install - expect(last_command.stdboth).to_not include("password1") - expect(last_command.stdout).to include("Fetching https://user1@github.com/company/private-repo") - end - end - - context "that is an oauth token" do - let(:credentials) { "oauth_token" } - - it "displays the oauth scheme but not the oauth token" do - install_gemfile <<-G - git "https://#{credentials}:x-oauth-basic@github.com/company/private-repo" do - gem "foo" - end - G - - bundle :install - expect(last_command.stdboth).to_not include("oauth_token") - expect(last_command.stdout).to include("Fetching https://x-oauth-basic@github.com/company/private-repo") - end - end - end -end diff --git a/spec/bundler/install/gemfile/groups_spec.rb b/spec/bundler/install/gemfile/groups_spec.rb deleted file mode 100644 index 19c379e188..0000000000 --- a/spec/bundler/install/gemfile/groups_spec.rb +++ /dev/null @@ -1,384 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe "bundle install with groups" do - describe "installing with no options" do - before :each do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - group :emo do - gem "activesupport", "2.3.5" - end - gem "thin", :groups => [:emo] - G - end - - it "installs gems in the default group" do - expect(the_bundle).to include_gems "rack 1.0.0" - end - - it "installs gems in a group block into that group" do - expect(the_bundle).to include_gems "activesupport 2.3.5" - - load_error_run <<-R, "activesupport", :default - require 'activesupport' - puts ACTIVESUPPORT - R - - expect(err).to eq_err("ZOMG LOAD ERROR") - end - - it "installs gems with inline :groups into those groups" do - expect(the_bundle).to include_gems "thin 1.0" - - load_error_run <<-R, "thin", :default - require 'thin' - puts THIN - R - - expect(err).to eq_err("ZOMG LOAD ERROR") - end - - it "sets up everything if Bundler.setup is used with no groups" do - output = run("require 'rack'; puts RACK") - expect(output).to eq("1.0.0") - - output = run("require 'activesupport'; puts ACTIVESUPPORT") - expect(output).to eq("2.3.5") - - output = run("require 'thin'; puts THIN") - expect(output).to eq("1.0") - end - - it "removes old groups when new groups are set up" do - load_error_run <<-RUBY, "thin", :emo - Bundler.setup(:default) - require 'thin' - puts THIN - RUBY - - expect(err).to eq_err("ZOMG LOAD ERROR") - end - - it "sets up old groups when they have previously been removed" do - output = run <<-RUBY, :emo - Bundler.setup(:default) - Bundler.setup(:default, :emo) - require 'thin'; puts THIN - RUBY - expect(output).to eq("1.0") - end - end - - describe "installing --without" do - describe "with gems assigned to a single group" do - before :each do - gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - group :emo do - gem "activesupport", "2.3.5" - end - group :debugging, :optional => true do - gem "thin" - end - G - end - - it "installs gems in the default group" do - bundle! :install, forgotten_command_line_options(:without => "emo") - expect(the_bundle).to include_gems "rack 1.0.0", :groups => [:default] - end - - it "does not install gems from the excluded group" do - bundle :install, :without => "emo" - expect(the_bundle).not_to include_gems "activesupport 2.3.5", :groups => [:default] - end - - it "does not install gems from the previously excluded group" do - bundle :install, forgotten_command_line_options(:without => "emo") - expect(the_bundle).not_to include_gems "activesupport 2.3.5" - bundle :install - expect(the_bundle).not_to include_gems "activesupport 2.3.5" - end - - it "does not say it installed gems from the excluded group" do - bundle! :install, forgotten_command_line_options(:without => "emo") - expect(out).not_to include("activesupport") - end - - it "allows Bundler.setup for specific groups" do - bundle :install, forgotten_command_line_options(:without => "emo") - run!("require 'rack'; puts RACK", :default) - expect(out).to eq("1.0.0") - end - - it "does not effect the resolve" do - gemfile <<-G - source "file://#{gem_repo1}" - gem "activesupport" - group :emo do - gem "rails", "2.3.2" - end - G - - bundle :install, forgotten_command_line_options(:without => "emo") - expect(the_bundle).to include_gems "activesupport 2.3.2", :groups => [:default] - end - - it "still works on a different machine and excludes gems" do - bundle :install, forgotten_command_line_options(:without => "emo") - - simulate_new_machine - bundle :install, forgotten_command_line_options(:without => "emo") - - expect(the_bundle).to include_gems "rack 1.0.0", :groups => [:default] - expect(the_bundle).not_to include_gems "activesupport 2.3.5", :groups => [:default] - end - - it "still works when BUNDLE_WITHOUT is set" do - ENV["BUNDLE_WITHOUT"] = "emo" - - bundle :install - expect(out).not_to include("activesupport") - - expect(the_bundle).to include_gems "rack 1.0.0", :groups => [:default] - expect(the_bundle).not_to include_gems "activesupport 2.3.5", :groups => [:default] - - ENV["BUNDLE_WITHOUT"] = nil - end - - it "clears without when passed an empty list" do - bundle :install, forgotten_command_line_options(:without => "emo") - - bundle :install, forgotten_command_line_options(:without => "") - expect(the_bundle).to include_gems "activesupport 2.3.5" - end - - it "doesn't clear without when nothing is passed" do - bundle :install, forgotten_command_line_options(:without => "emo") - - bundle :install - expect(the_bundle).not_to include_gems "activesupport 2.3.5" - end - - it "does not install gems from the optional group" do - bundle :install - expect(the_bundle).not_to include_gems "thin 1.0" - end - - it "does install gems from the optional group when requested" do - bundle :install, forgotten_command_line_options(:with => "debugging") - expect(the_bundle).to include_gems "thin 1.0" - end - - it "does install gems from the previously requested group" do - bundle :install, forgotten_command_line_options(:with => "debugging") - expect(the_bundle).to include_gems "thin 1.0" - bundle :install - expect(the_bundle).to include_gems "thin 1.0" - end - - it "does install gems from the optional groups requested with BUNDLE_WITH" do - ENV["BUNDLE_WITH"] = "debugging" - bundle :install - expect(the_bundle).to include_gems "thin 1.0" - ENV["BUNDLE_WITH"] = nil - end - - it "clears with when passed an empty list" do - bundle :install, forgotten_command_line_options(:with => "debugging") - bundle :install, forgotten_command_line_options(:with => "") - expect(the_bundle).not_to include_gems "thin 1.0" - end - - it "does remove groups from without when passed at --with", :bundler => "< 2" do - bundle :install, forgotten_command_line_options(:without => "emo") - bundle :install, forgotten_command_line_options(:with => "emo") - expect(the_bundle).to include_gems "activesupport 2.3.5" - end - - it "does remove groups from with when passed at --without", :bundler => "< 2" do - bundle :install, forgotten_command_line_options(:with => "debugging") - bundle :install, forgotten_command_line_options(:without => "debugging") - expect(the_bundle).not_to include_gem "thin 1.0" - end - - it "errors out when passing a group to with and without via CLI flags", :bundler => "< 2" do - bundle :install, forgotten_command_line_options(:with => "emo debugging", :without => "emo") - expect(last_command).to be_failure - expect(out).to include("The offending groups are: emo") - end - - it "allows the BUNDLE_WITH setting to override BUNDLE_WITHOUT" do - ENV["BUNDLE_WITH"] = "debugging" - - bundle! :install - expect(the_bundle).to include_gem "thin 1.0" - - ENV["BUNDLE_WITHOUT"] = "debugging" - expect(the_bundle).to include_gem "thin 1.0" - - bundle! :install - expect(the_bundle).to include_gem "thin 1.0" - end - - it "can add and remove a group at the same time" do - bundle :install, forgotten_command_line_options(:with => "debugging", :without => "emo") - expect(the_bundle).to include_gems "thin 1.0" - expect(the_bundle).not_to include_gems "activesupport 2.3.5" - end - - it "does have no effect when listing a not optional group in with" do - bundle :install, forgotten_command_line_options(:with => "emo") - expect(the_bundle).to include_gems "activesupport 2.3.5" - end - - it "does have no effect when listing an optional group in without" do - bundle :install, forgotten_command_line_options(:without => "debugging") - expect(the_bundle).not_to include_gems "thin 1.0" - end - end - - describe "with gems assigned to multiple groups" do - before :each do - gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - group :emo, :lolercoaster do - gem "activesupport", "2.3.5" - end - G - end - - it "installs gems in the default group" do - bundle! :install, forgotten_command_line_options(:without => "emo lolercoaster") - expect(the_bundle).to include_gems "rack 1.0.0" - end - - it "installs the gem if any of its groups are installed" do - bundle! :install, forgotten_command_line_options(:without => "emo") - expect(the_bundle).to include_gems "rack 1.0.0", "activesupport 2.3.5" - end - - describe "with a gem defined multiple times in different groups" do - before :each do - gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - - group :emo do - gem "activesupport", "2.3.5" - end - - group :lolercoaster do - gem "activesupport", "2.3.5" - end - G - end - - it "installs the gem w/ option --without emo" do - bundle :install, forgotten_command_line_options(:without => "emo") - expect(the_bundle).to include_gems "activesupport 2.3.5" - end - - it "installs the gem w/ option --without lolercoaster" do - bundle :install, forgotten_command_line_options(:without => "lolercoaster") - expect(the_bundle).to include_gems "activesupport 2.3.5" - end - - it "does not install the gem w/ option --without emo lolercoaster" do - bundle :install, forgotten_command_line_options(:without => "emo lolercoaster") - expect(the_bundle).not_to include_gems "activesupport 2.3.5" - end - - it "does not install the gem w/ option --without 'emo lolercoaster'" do - bundle :install, forgotten_command_line_options(:without => "'emo lolercoaster'") - expect(the_bundle).not_to include_gems "activesupport 2.3.5" - end - end - end - - describe "nesting groups" do - before :each do - gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - group :emo do - group :lolercoaster do - gem "activesupport", "2.3.5" - end - end - G - end - - it "installs gems in the default group" do - bundle! :install, forgotten_command_line_options(:without => "emo lolercoaster") - expect(the_bundle).to include_gems "rack 1.0.0" - end - - it "installs the gem if any of its groups are installed" do - bundle! :install, forgotten_command_line_options(:without => "emo") - expect(the_bundle).to include_gems "rack 1.0.0", "activesupport 2.3.5" - end - end - end - - describe "when loading only the default group" do - it "should not load all groups" do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - gem "activesupport", :groups => :development - G - - ruby <<-R - require "bundler" - Bundler.setup :default - Bundler.require :default - puts RACK - begin - require "activesupport" - rescue LoadError - puts "no activesupport" - end - R - - expect(out).to include("1.0") - expect(out).to include("no activesupport") - end - end - - describe "when locked and installed with --without" do - before(:each) do - build_repo2 - system_gems "rack-0.9.1" do - install_gemfile <<-G, forgotten_command_line_options(:without => "rack") - source "file://#{gem_repo2}" - gem "rack" - - group :rack do - gem "rack_middleware" - end - G - end - end - - it "uses the correct versions even if --without was used on the original" do - expect(the_bundle).to include_gems "rack 0.9.1" - expect(the_bundle).not_to include_gems "rack_middleware 1.0" - simulate_new_machine - - bundle :install - - expect(the_bundle).to include_gems "rack 0.9.1" - expect(the_bundle).to include_gems "rack_middleware 1.0" - end - - it "does not hit the remote a second time" do - FileUtils.rm_rf gem_repo2 - bundle! :install, forgotten_command_line_options(:without => "rack").merge(:verbose => true) - expect(last_command.stdboth).not_to match(/fetching/i) - end - end -end diff --git a/spec/bundler/install/gemfile/install_if.rb b/spec/bundler/install/gemfile/install_if.rb deleted file mode 100644 index 1319051fdb..0000000000 --- a/spec/bundler/install/gemfile/install_if.rb +++ /dev/null @@ -1,44 +0,0 @@ -# frozen_string_literal: true - -describe "bundle install with install_if conditionals" do - it "follows the install_if DSL" do - install_gemfile <<-G - source "file://#{gem_repo1}" - install_if(lambda { true }) do - gem "activesupport", "2.3.5" - end - gem "thin", :install_if => false - install_if(lambda { false }) do - gem "foo" - end - gem "rack" - G - - expect(the_bundle).to include_gems("rack 1.0", "activesupport 2.3.5") - expect(the_bundle).not_to include_gems("thin") - expect(the_bundle).not_to include_gems("foo") - - lockfile_should_be <<-L - GEM - remote: file:#{gem_repo1}/ - specs: - activesupport (2.3.5) - foo (1.0) - rack (1.0.0) - thin (1.0) - rack - - PLATFORMS - ruby - - DEPENDENCIES - activesupport (= 2.3.5) - foo - rack - thin - - BUNDLED WITH - #{Bundler::VERSION} - L - end -end diff --git a/spec/bundler/install/gemfile/lockfile_spec.rb b/spec/bundler/install/gemfile/lockfile_spec.rb deleted file mode 100644 index dc1baca6ea..0000000000 --- a/spec/bundler/install/gemfile/lockfile_spec.rb +++ /dev/null @@ -1,48 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe "bundle install with a lockfile present" do - let(:gf) { <<-G } - source "file://#{gem_repo1}" - - gem "rack", "1.0.0" - G - - subject do - install_gemfile(gf) - end - - context "gemfile evaluation" do - let(:gf) { super() + "\n\n File.open('evals', 'a') {|f| f << %(1\n) } unless ENV['BUNDLER_SPEC_NO_APPEND']" } - - context "with plugins disabled" do - before do - bundle! "config plugins false" - subject - end - - it "does not evaluate the gemfile twice" do - bundle! :install - - with_env_vars("BUNDLER_SPEC_NO_APPEND" => "1") { expect(the_bundle).to include_gem "rack 1.0.0" } - - # The first eval is from the initial install, we're testing that the - # second install doesn't double-eval - expect(bundled_app("evals").read.lines.to_a.size).to eq(2) - end - - context "when the gem is not installed" do - before { FileUtils.rm_rf ".bundle" } - - it "does not evaluate the gemfile twice" do - bundle! :install - - with_env_vars("BUNDLER_SPEC_NO_APPEND" => "1") { expect(the_bundle).to include_gem "rack 1.0.0" } - - # The first eval is from the initial install, we're testing that the - # second install doesn't double-eval - expect(bundled_app("evals").read.lines.to_a.size).to eq(2) - end - end - end - end -end diff --git a/spec/bundler/install/gemfile/path_spec.rb b/spec/bundler/install/gemfile/path_spec.rb deleted file mode 100644 index f7789e7ea5..0000000000 --- a/spec/bundler/install/gemfile/path_spec.rb +++ /dev/null @@ -1,630 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe "bundle install with explicit source paths" do - it "fetches gems with a global path source", :bundler => "< 2" do - build_lib "foo" - - install_gemfile <<-G - path "#{lib_path("foo-1.0")}" - gem 'foo' - G - - expect(the_bundle).to include_gems("foo 1.0") - end - - it "fetches gems" do - build_lib "foo" - - install_gemfile <<-G - path "#{lib_path("foo-1.0")}" do - gem 'foo' - end - G - - expect(the_bundle).to include_gems("foo 1.0") - end - - it "supports pinned paths" do - build_lib "foo" - - install_gemfile <<-G - gem 'foo', :path => "#{lib_path("foo-1.0")}" - G - - expect(the_bundle).to include_gems("foo 1.0") - end - - it "supports relative paths" do - build_lib "foo" - - relative_path = lib_path("foo-1.0").relative_path_from(Pathname.new(Dir.pwd)) - - install_gemfile <<-G - gem 'foo', :path => "#{relative_path}" - G - - expect(the_bundle).to include_gems("foo 1.0") - end - - it "expands paths" do - build_lib "foo" - - relative_path = lib_path("foo-1.0").relative_path_from(Pathname.new("~").expand_path) - - install_gemfile <<-G - gem 'foo', :path => "~/#{relative_path}" - G - - expect(the_bundle).to include_gems("foo 1.0") - end - - it "expands paths raise error with not existing user's home dir" do - build_lib "foo" - username = "some_unexisting_user" - relative_path = lib_path("foo-1.0").relative_path_from(Pathname.new("/home/#{username}").expand_path) - - install_gemfile <<-G - gem 'foo', :path => "~#{username}/#{relative_path}" - G - expect(out).to match("There was an error while trying to use the path `~#{username}/#{relative_path}`.") - expect(out).to match("user #{username} doesn't exist") - end - - it "expands paths relative to Bundler.root" do - build_lib "foo", :path => bundled_app("foo-1.0") - - install_gemfile <<-G - gem 'foo', :path => "./foo-1.0" - G - - bundled_app("subdir").mkpath - Dir.chdir(bundled_app("subdir")) do - expect(the_bundle).to include_gems("foo 1.0") - end - end - - it "expands paths when comparing locked paths to Gemfile paths" do - build_lib "foo", :path => bundled_app("foo-1.0") - - install_gemfile <<-G - gem 'foo', :path => File.expand_path("../foo-1.0", __FILE__) - G - - bundle! :install, forgotten_command_line_options(:frozen => true) - expect(exitstatus).to eq(0) if exitstatus - end - - it "installs dependencies from the path even if a newer gem is available elsewhere" do - system_gems "rack-1.0.0" - - build_lib "rack", "1.0", :path => lib_path("nested/bar") do |s| - s.write "lib/rack.rb", "puts 'WIN OVERRIDE'" - end - - build_lib "foo", :path => lib_path("nested") do |s| - s.add_dependency "rack", "= 1.0" - end - - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "foo", :path => "#{lib_path("nested")}" - G - - run "require 'rack'" - expect(out).to eq("WIN OVERRIDE") - end - - it "works" do - build_gem "foo", "1.0.0", :to_system => true do |s| - s.write "lib/foo.rb", "puts 'FAIL'" - end - - build_lib "omg", "1.0", :path => lib_path("omg") do |s| - s.add_dependency "foo" - end - - build_lib "foo", "1.0.0", :path => lib_path("omg/foo") - - install_gemfile <<-G - gem "omg", :path => "#{lib_path("omg")}" - G - - expect(the_bundle).to include_gems "foo 1.0" - end - - it "prefers gemspecs closer to the path root" do - build_lib "premailer", "1.0.0", :path => lib_path("premailer") do |s| - s.write "gemfiles/ruby187.gemspec", <<-G - Gem::Specification.new do |s| - s.name = 'premailer' - s.version = '1.0.0' - s.summary = 'Hi' - s.authors = 'Me' - end - G - end - - install_gemfile <<-G - gem "premailer", :path => "#{lib_path("premailer")}" - G - - # Installation of the 'gemfiles' gemspec would fail since it will be unable - # to require 'premailer.rb' - expect(the_bundle).to include_gems "premailer 1.0.0" - end - - it "warns on invalid specs", :rubygems => "1.7" do - build_lib "foo" - - gemspec = lib_path("foo-1.0").join("foo.gemspec").to_s - File.open(gemspec, "w") do |f| - f.write <<-G - Gem::Specification.new do |s| - s.name = "foo" - end - G - end - - install_gemfile <<-G - gem "foo", :path => "#{lib_path("foo-1.0")}" - G - - expect(out).to_not include("ERROR REPORT") - expect(out).to_not include("Your Gemfile has no gem server sources.") - expect(out).to match(/is not valid. Please fix this gemspec./) - expect(out).to match(/The validation error was 'missing value for attribute version'/) - expect(out).to match(/You have one or more invalid gemspecs that need to be fixed/) - end - - it "supports gemspec syntax" do - build_lib "foo", "1.0", :path => lib_path("foo") do |s| - s.add_dependency "rack", "1.0" - end - - gemfile = <<-G - source "file://#{gem_repo1}" - gemspec - G - - File.open(lib_path("foo/Gemfile"), "w") {|f| f.puts gemfile } - - Dir.chdir(lib_path("foo")) do - bundle "install" - expect(the_bundle).to include_gems "foo 1.0" - expect(the_bundle).to include_gems "rack 1.0" - end - end - - it "supports gemspec syntax with an alternative path" do - build_lib "foo", "1.0", :path => lib_path("foo") do |s| - s.add_dependency "rack", "1.0" - end - - install_gemfile <<-G - source "file://#{gem_repo1}" - gemspec :path => "#{lib_path("foo")}" - G - - expect(the_bundle).to include_gems "foo 1.0" - expect(the_bundle).to include_gems "rack 1.0" - end - - it "doesn't automatically unlock dependencies when using the gemspec syntax" do - build_lib "foo", "1.0", :path => lib_path("foo") do |s| - s.add_dependency "rack", ">= 1.0" - end - - Dir.chdir lib_path("foo") - - install_gemfile lib_path("foo/Gemfile"), <<-G - source "file://#{gem_repo1}" - gemspec - G - - build_gem "rack", "1.0.1", :to_system => true - - bundle "install" - - expect(the_bundle).to include_gems "foo 1.0" - expect(the_bundle).to include_gems "rack 1.0" - end - - it "doesn't automatically unlock dependencies when using the gemspec syntax and the gem has development dependencies" do - build_lib "foo", "1.0", :path => lib_path("foo") do |s| - s.add_dependency "rack", ">= 1.0" - s.add_development_dependency "activesupport" - end - - Dir.chdir lib_path("foo") - - install_gemfile lib_path("foo/Gemfile"), <<-G - source "file://#{gem_repo1}" - gemspec - G - - build_gem "rack", "1.0.1", :to_system => true - - bundle "install" - - expect(the_bundle).to include_gems "foo 1.0" - expect(the_bundle).to include_gems "rack 1.0" - end - - it "raises if there are multiple gemspecs" do - build_lib "foo", "1.0", :path => lib_path("foo") do |s| - s.write "bar.gemspec", build_spec("bar", "1.0").first.to_ruby - end - - install_gemfile <<-G - gemspec :path => "#{lib_path("foo")}" - G - - expect(exitstatus).to eq(15) if exitstatus - expect(out).to match(/There are multiple gemspecs/) - end - - it "allows :name to be specified to resolve ambiguity" do - build_lib "foo", "1.0", :path => lib_path("foo") do |s| - s.write "bar.gemspec" - end - - install_gemfile <<-G - gemspec :path => "#{lib_path("foo")}", :name => "foo" - G - - expect(the_bundle).to include_gems "foo 1.0" - end - - it "sets up executables" do - build_lib "foo" do |s| - s.executables = "foobar" - end - - install_gemfile <<-G - path "#{lib_path("foo-1.0")}" do - gem 'foo' - end - G - expect(the_bundle).to include_gems "foo 1.0" - - bundle "exec foobar" - expect(out).to eq("1.0") - end - - it "handles directories in bin/" do - build_lib "foo" - lib_path("foo-1.0").join("foo.gemspec").rmtree - lib_path("foo-1.0").join("bin/performance").mkpath - - install_gemfile <<-G - gem 'foo', '1.0', :path => "#{lib_path("foo-1.0")}" - G - expect(err).to lack_errors - end - - it "removes the .gem file after installing" do - build_lib "foo" - - install_gemfile <<-G - gem 'foo', :path => "#{lib_path("foo-1.0")}" - G - - expect(lib_path("foo-1.0").join("foo-1.0.gem")).not_to exist - end - - describe "block syntax" do - it "pulls all gems from a path block" do - build_lib "omg" - build_lib "hi2u" - - install_gemfile <<-G - path "#{lib_path}" do - gem "omg" - gem "hi2u" - end - G - - expect(the_bundle).to include_gems "omg 1.0", "hi2u 1.0" - end - end - - it "keeps source pinning" do - build_lib "foo", "1.0", :path => lib_path("foo") - build_lib "omg", "1.0", :path => lib_path("omg") - build_lib "foo", "1.0", :path => lib_path("omg/foo") do |s| - s.write "lib/foo.rb", "puts 'FAIL'" - end - - install_gemfile <<-G - gem "foo", :path => "#{lib_path("foo")}" - gem "omg", :path => "#{lib_path("omg")}" - G - - expect(the_bundle).to include_gems "foo 1.0" - end - - it "works when the path does not have a gemspec" do - build_lib "foo", :gemspec => false - - gemfile <<-G - gem "foo", "1.0", :path => "#{lib_path("foo-1.0")}" - G - - expect(the_bundle).to include_gems "foo 1.0" - - expect(the_bundle).to include_gems "foo 1.0" - end - - it "works when the path does not have a gemspec but there is a lockfile" do - lockfile <<-L - PATH - remote: vendor/bar - specs: - - GEM - remote: http://rubygems.org - L - - in_app_root { FileUtils.mkdir_p("vendor/bar") } - - install_gemfile <<-G - gem "bar", "1.0.0", path: "vendor/bar", require: "bar/nyard" - G - expect(exitstatus).to eq(0) if exitstatus - end - - context "existing lockfile" do - it "rubygems gems don't re-resolve without changes" do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem 'rack-obama', '1.0' - gem 'net-ssh', '1.0' - G - - bundle :check, :env => { "DEBUG" => 1 } - expect(out).to match(/using resolution from the lockfile/) - expect(the_bundle).to include_gems "rack-obama 1.0", "net-ssh 1.0" - end - - it "source path gems w/deps don't re-resolve without changes" do - build_lib "rack-obama", "1.0", :path => lib_path("omg") do |s| - s.add_dependency "yard" - end - - build_lib "net-ssh", "1.0", :path => lib_path("omg") do |s| - s.add_dependency "yard" - end - - install_gemfile <<-G - source "file://#{gem_repo1}" - gem 'rack-obama', :path => "#{lib_path("omg")}" - gem 'net-ssh', :path => "#{lib_path("omg")}" - G - - bundle :check, :env => { "DEBUG" => 1 } - expect(out).to match(/using resolution from the lockfile/) - expect(the_bundle).to include_gems "rack-obama 1.0", "net-ssh 1.0" - end - end - - it "installs executable stubs" do - build_lib "foo" do |s| - s.executables = ["foo"] - end - - install_gemfile <<-G - gem "foo", :path => "#{lib_path("foo-1.0")}" - G - - bundle "exec foo" - expect(out).to eq("1.0") - end - - describe "when the gem version in the path is updated" do - before :each do - build_lib "foo", "1.0", :path => lib_path("foo") do |s| - s.add_dependency "bar" - end - build_lib "bar", "1.0", :path => lib_path("foo/bar") - - install_gemfile <<-G - gem "foo", :path => "#{lib_path("foo")}" - G - end - - it "unlocks all gems when the top level gem is updated" do - build_lib "foo", "2.0", :path => lib_path("foo") do |s| - s.add_dependency "bar" - end - - bundle "install" - - expect(the_bundle).to include_gems "foo 2.0", "bar 1.0" - end - - it "unlocks all gems when a child dependency gem is updated" do - build_lib "bar", "2.0", :path => lib_path("foo/bar") - - bundle "install" - - expect(the_bundle).to include_gems "foo 1.0", "bar 2.0" - end - end - - describe "when dependencies in the path are updated" do - before :each do - build_lib "foo", "1.0", :path => lib_path("foo") - - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "foo", :path => "#{lib_path("foo")}" - G - end - - it "gets dependencies that are updated in the path" do - build_lib "foo", "1.0", :path => lib_path("foo") do |s| - s.add_dependency "rack" - end - - bundle "install" - - expect(the_bundle).to include_gems "rack 1.0.0" - end - end - - describe "switching sources" do - it "doesn't switch pinned git sources to rubygems when pinning the parent gem to a path source" do - build_gem "foo", "1.0", :to_system => true do |s| - s.write "lib/foo.rb", "raise 'fail'" - end - build_lib "foo", "1.0", :path => lib_path("bar/foo") - build_git "bar", "1.0", :path => lib_path("bar") do |s| - s.add_dependency "foo" - end - - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "bar", :git => "#{lib_path("bar")}" - G - - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "bar", :path => "#{lib_path("bar")}" - G - - expect(the_bundle).to include_gems "foo 1.0", "bar 1.0" - end - - it "switches the source when the gem existed in rubygems and the path was already being used for another gem" do - build_lib "foo", "1.0", :path => lib_path("foo") - build_gem "bar", "1.0", :to_system => true do |s| - s.write "lib/bar.rb", "raise 'fail'" - end - - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "bar" - path "#{lib_path("foo")}" do - gem "foo" - end - G - - build_lib "bar", "1.0", :path => lib_path("foo/bar") - - install_gemfile <<-G - source "file://#{gem_repo1}" - path "#{lib_path("foo")}" do - gem "foo" - gem "bar" - end - G - - expect(the_bundle).to include_gems "bar 1.0" - end - end - - describe "when there are both a gemspec and remote gems" do - it "doesn't query rubygems for local gemspec name" do - build_lib "private_lib", "2.2", :path => lib_path("private_lib") - gemfile = <<-G - source "http://localgemserver.test" - gemspec - gem 'rack' - G - File.open(lib_path("private_lib/Gemfile"), "w") {|f| f.puts gemfile } - - Dir.chdir(lib_path("private_lib")) do - bundle :install, :env => { "DEBUG" => 1 }, :artifice => "endpoint" - expect(out).to match(%r{^HTTP GET http://localgemserver\.test/api/v1/dependencies\?gems=rack$}) - expect(out).not_to match(/^HTTP GET.*private_lib/) - expect(the_bundle).to include_gems "private_lib 2.2" - expect(the_bundle).to include_gems "rack 1.0" - end - end - end - - describe "gem install hooks" do - it "runs pre-install hooks" do - build_git "foo" - gemfile <<-G - gem "foo", :git => "#{lib_path("foo-1.0")}" - G - - File.open(lib_path("install_hooks.rb"), "w") do |h| - h.write <<-H - require 'rubygems' - Gem.pre_install_hooks << lambda do |inst| - STDERR.puts "Ran pre-install hook: \#{inst.spec.full_name}" - end - H - end - - bundle :install, - :requires => [lib_path("install_hooks.rb")] - expect(err).to eq_err("Ran pre-install hook: foo-1.0") - end - - it "runs post-install hooks" do - build_git "foo" - gemfile <<-G - gem "foo", :git => "#{lib_path("foo-1.0")}" - G - - File.open(lib_path("install_hooks.rb"), "w") do |h| - h.write <<-H - require 'rubygems' - Gem.post_install_hooks << lambda do |inst| - STDERR.puts "Ran post-install hook: \#{inst.spec.full_name}" - end - H - end - - bundle :install, - :requires => [lib_path("install_hooks.rb")] - expect(err).to eq_err("Ran post-install hook: foo-1.0") - end - - it "complains if the install hook fails" do - build_git "foo" - gemfile <<-G - gem "foo", :git => "#{lib_path("foo-1.0")}" - G - - File.open(lib_path("install_hooks.rb"), "w") do |h| - h.write <<-H - require 'rubygems' - Gem.pre_install_hooks << lambda do |inst| - false - end - H - end - - bundle :install, - :requires => [lib_path("install_hooks.rb")] - expect(out).to include("failed for foo-1.0") - end - - it "loads plugins from the path gem" do - foo_file = home("foo_plugin_loaded") - bar_file = home("bar_plugin_loaded") - expect(foo_file).not_to be_file - expect(bar_file).not_to be_file - - build_lib "foo" do |s| - s.write("lib/rubygems_plugin.rb", "FileUtils.touch('#{foo_file}')") - end - - build_git "bar" do |s| - s.write("lib/rubygems_plugin.rb", "FileUtils.touch('#{bar_file}')") - end - - install_gemfile! <<-G - gem "foo", :path => "#{lib_path("foo-1.0")}" - gem "bar", :path => "#{lib_path("bar-1.0")}" - G - - expect(foo_file).to be_file - expect(bar_file).to be_file - end - end -end diff --git a/spec/bundler/install/gemfile/platform_spec.rb b/spec/bundler/install/gemfile/platform_spec.rb deleted file mode 100644 index d7d4e0a53c..0000000000 --- a/spec/bundler/install/gemfile/platform_spec.rb +++ /dev/null @@ -1,264 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe "bundle install across platforms" do - it "maintains the same lockfile if all gems are compatible across platforms" do - lockfile <<-G - GEM - remote: file:#{gem_repo1}/ - specs: - rack (0.9.1) - - PLATFORMS - #{not_local} - - DEPENDENCIES - rack - G - - install_gemfile <<-G - source "file://#{gem_repo1}" - - gem "rack" - G - - expect(the_bundle).to include_gems "rack 0.9.1" - end - - it "pulls in the correct platform specific gem" do - lockfile <<-G - GEM - remote: file:#{gem_repo1} - specs: - platform_specific (1.0) - platform_specific (1.0-java) - platform_specific (1.0-x86-mswin32) - - PLATFORMS - ruby - - DEPENDENCIES - platform_specific - G - - simulate_platform "java" - install_gemfile <<-G - source "file://#{gem_repo1}" - - gem "platform_specific" - G - - expect(the_bundle).to include_gems "platform_specific 1.0 JAVA" - end - - it "works with gems that have different dependencies" do - simulate_platform "java" - install_gemfile <<-G - source "file://#{gem_repo1}" - - gem "nokogiri" - G - - expect(the_bundle).to include_gems "nokogiri 1.4.2 JAVA", "weakling 0.0.3" - - simulate_new_machine - - simulate_platform "ruby" - install_gemfile <<-G - source "file://#{gem_repo1}" - - gem "nokogiri" - G - - expect(the_bundle).to include_gems "nokogiri 1.4.2" - expect(the_bundle).not_to include_gems "weakling" - end - - it "works the other way with gems that have different dependencies" do - simulate_platform "ruby" - install_gemfile <<-G - source "file://#{gem_repo1}" - - gem "nokogiri" - G - - simulate_platform "java" - bundle "install" - - expect(the_bundle).to include_gems "nokogiri 1.4.2 JAVA", "weakling 0.0.3" - end - - it "works with gems that have extra platform-specific runtime dependencies", :bundler => "< 2" do - simulate_platform x64_mac - - update_repo2 do - build_gem "facter", "2.4.6" - build_gem "facter", "2.4.6" do |s| - s.platform = "universal-darwin" - s.add_runtime_dependency "CFPropertyList" - end - build_gem "CFPropertyList" - end - - install_gemfile! <<-G - source "file://#{gem_repo2}" - - gem "facter" - G - - expect(out).to include "Unable to use the platform-specific (universal-darwin) version of facter (2.4.6) " \ - "because it has different dependencies from the ruby version. " \ - "To use the platform-specific version of the gem, run `bundle config specific_platform true` and install again." - - expect(the_bundle).to include_gem "facter 2.4.6" - expect(the_bundle).not_to include_gem "CFPropertyList" - end - - it "fetches gems again after changing the version of Ruby" do - gemfile <<-G - source "file://#{gem_repo1}" - - gem "rack", "1.0.0" - G - - bundle! :install, forgotten_command_line_options(:path => "vendor/bundle") - - new_version = Gem::ConfigMap[:ruby_version] == "1.8" ? "1.9.1" : "1.8" - FileUtils.mv(vendored_gems, bundled_app("vendor/bundle", Gem.ruby_engine, new_version)) - - bundle! :install - expect(vendored_gems("gems/rack-1.0.0")).to exist - end -end - -RSpec.describe "bundle install with platform conditionals" do - it "installs gems tagged w/ the current platforms" do - install_gemfile <<-G - source "file://#{gem_repo1}" - - platforms :#{local_tag} do - gem "nokogiri" - end - G - - expect(the_bundle).to include_gems "nokogiri 1.4.2" - end - - it "does not install gems tagged w/ another platforms" do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - platforms :#{not_local_tag} do - gem "nokogiri" - end - G - - expect(the_bundle).to include_gems "rack 1.0" - expect(the_bundle).not_to include_gems "nokogiri 1.4.2" - end - - it "installs gems tagged w/ the current platforms inline" do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "nokogiri", :platforms => :#{local_tag} - G - expect(the_bundle).to include_gems "nokogiri 1.4.2" - end - - it "does not install gems tagged w/ another platforms inline" do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - gem "nokogiri", :platforms => :#{not_local_tag} - G - expect(the_bundle).to include_gems "rack 1.0" - expect(the_bundle).not_to include_gems "nokogiri 1.4.2" - end - - it "installs gems tagged w/ the current platform inline" do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "nokogiri", :platform => :#{local_tag} - G - expect(the_bundle).to include_gems "nokogiri 1.4.2" - end - - it "doesn't install gems tagged w/ another platform inline" do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "nokogiri", :platform => :#{not_local_tag} - G - expect(the_bundle).not_to include_gems "nokogiri 1.4.2" - end - - it "does not blow up on sources with all platform-excluded specs" do - build_git "foo" - - install_gemfile <<-G - platform :#{not_local_tag} do - gem "foo", :git => "#{lib_path("foo-1.0")}" - end - G - - bundle :list - expect(exitstatus).to eq(0) if exitstatus - end - - it "does not attempt to install gems from :rbx when using --local" do - simulate_platform "ruby" - simulate_ruby_engine "ruby" - - gemfile <<-G - source "file://#{gem_repo1}" - gem "some_gem", :platform => :rbx - G - - bundle "install --local" - expect(out).not_to match(/Could not find gem 'some_gem/) - end - - it "does not attempt to install gems from other rubies when using --local" do - simulate_platform "ruby" - simulate_ruby_engine "ruby" - other_ruby_version_tag = RUBY_VERSION =~ /^1\.8/ ? :ruby_19 : :ruby_18 - - gemfile <<-G - source "file://#{gem_repo1}" - gem "some_gem", platform: :#{other_ruby_version_tag} - G - - bundle "install --local" - expect(out).not_to match(/Could not find gem 'some_gem/) - end - - it "prints a helpful warning when a dependency is unused on any platform" do - simulate_platform "ruby" - simulate_ruby_engine "ruby" - - gemfile <<-G - source "file://#{gem_repo1}" - - gem "rack", :platform => [:mingw, :mswin, :x64_mingw, :jruby] - G - - bundle! "install" - - expect(out).to include <<-O.strip -The dependency #{Gem::Dependency.new("rack", ">= 0")} will be unused by any of the platforms Bundler is installing for. Bundler is installing for ruby but the dependency is only for x86-mingw32, x86-mswin32, x64-mingw32, java. To add those platforms to the bundle, run `bundle lock --add-platform x86-mingw32 x86-mswin32 x64-mingw32 java`. - O - end -end - -RSpec.describe "when a gem has no architecture" do - it "still installs correctly" do - simulate_platform mswin - - gemfile <<-G - # Try to install gem with nil arch - source "http://localgemserver.test/" - gem "rcov" - G - - bundle :install, :artifice => "windows" - expect(the_bundle).to include_gems "rcov 1.0.0" - end -end diff --git a/spec/bundler/install/gemfile/ruby_spec.rb b/spec/bundler/install/gemfile/ruby_spec.rb deleted file mode 100644 index 24fe021fa3..0000000000 --- a/spec/bundler/install/gemfile/ruby_spec.rb +++ /dev/null @@ -1,108 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe "ruby requirement" do - def locked_ruby_version - Bundler::RubyVersion.from_string(Bundler::LockfileParser.new(lockfile).ruby_version) - end - - # As discovered by https://github.com/bundler/bundler/issues/4147, there is - # no test coverage to ensure that adding a gem is possible with a ruby - # requirement. This test verifies the fix, committed in bfbad5c5. - it "allows adding gems" do - install_gemfile <<-G - source "file://#{gem_repo1}" - ruby "#{RUBY_VERSION}" - gem "rack" - G - - install_gemfile <<-G - source "file://#{gem_repo1}" - ruby "#{RUBY_VERSION}" - gem "rack" - gem "rack-obama" - G - - expect(exitstatus).to eq(0) if exitstatus - expect(the_bundle).to include_gems "rack-obama 1.0" - end - - it "allows removing the ruby version requirement" do - install_gemfile <<-G - source "file://#{gem_repo1}" - ruby "~> #{RUBY_VERSION}" - gem "rack" - G - - expect(lockfile).to include("RUBY VERSION") - - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - G - - expect(the_bundle).to include_gems "rack 1.0.0" - expect(lockfile).not_to include("RUBY VERSION") - end - - it "allows changing the ruby version requirement to something compatible" do - install_gemfile <<-G - source "file://#{gem_repo1}" - ruby ">= 1.0.0" - gem "rack" - G - - expect(locked_ruby_version).to eq(Bundler::RubyVersion.system) - - simulate_ruby_version "5100" - - install_gemfile <<-G - source "file://#{gem_repo1}" - ruby ">= 1.0.1" - gem "rack" - G - - expect(the_bundle).to include_gems "rack 1.0.0" - expect(locked_ruby_version).to eq(Bundler::RubyVersion.system) - end - - it "allows changing the ruby version requirement to something incompatible" do - install_gemfile <<-G - source "file://#{gem_repo1}" - ruby ">= 1.0.0" - gem "rack" - G - - expect(locked_ruby_version).to eq(Bundler::RubyVersion.system) - - simulate_ruby_version "5100" - - install_gemfile <<-G - source "file://#{gem_repo1}" - ruby ">= 5000.0" - gem "rack" - G - - expect(the_bundle).to include_gems "rack 1.0.0" - expect(locked_ruby_version.versions).to eq(["5100"]) - end - - it "allows requirements with trailing whitespace" do - install_gemfile! <<-G - source "file://#{gem_repo1}" - ruby "#{RUBY_VERSION}\\n \t\\n" - gem "rack" - G - - expect(the_bundle).to include_gems "rack 1.0.0" - end - - it "fails gracefully with malformed requirements" do - install_gemfile <<-G - source "file://#{gem_repo1}" - ruby ">= 0", "-.\\0" - gem "rack" - G - - expect(out).to include("There was an error parsing") # i.e. DSL error, not error template - end -end diff --git a/spec/bundler/install/gemfile/sources_spec.rb b/spec/bundler/install/gemfile/sources_spec.rb deleted file mode 100644 index 8ba3ec2d27..0000000000 --- a/spec/bundler/install/gemfile/sources_spec.rb +++ /dev/null @@ -1,619 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe "bundle install with gems on multiple sources" do - # repo1 is built automatically before all of the specs run - # it contains rack-obama 1.0.0 and rack 0.9.1 & 1.0.0 amongst other gems - - context "without source affinity" do - before do - # Oh no! Someone evil is trying to hijack rack :( - # need this to be broken to check for correct source ordering - build_repo gem_repo3 do - build_gem "rack", repo3_rack_version do |s| - s.write "lib/rack.rb", "RACK = 'FAIL'" - end - end - end - - context "with multiple toplevel sources" do - let(:repo3_rack_version) { "1.0.0" } - - before do - gemfile <<-G - source "file://localhost#{gem_repo3}" - source "file://localhost#{gem_repo1}" - gem "rack-obama" - gem "rack" - G - bundle "config major_deprecations true" - end - - it "warns about ambiguous gems, but installs anyway, prioritizing sources last to first", :bundler => "< 2" do - bundle :install - - expect(out).to have_major_deprecation a_string_including("Your Gemfile contains multiple primary sources.") - expect(out).to include("Warning: the gem 'rack' was found in multiple sources.") - expect(out).to include("Installed from: file://localhost#{gem_repo1}") - expect(the_bundle).to include_gems("rack-obama 1.0.0", "rack 1.0.0", :source => "remote1") - end - - it "errors when disable_multisource is set" do - bundle "config disable_multisource true" - bundle :install - expect(out).to include("Each source after the first must include a block") - expect(exitstatus).to eq(4) if exitstatus - end - end - - context "when different versions of the same gem are in multiple sources" do - let(:repo3_rack_version) { "1.2" } - - before do - gemfile <<-G - source "file://localhost#{gem_repo3}" - source "file://localhost#{gem_repo1}" - gem "rack-obama" - gem "rack", "1.0.0" # force it to install the working version in repo1 - G - bundle "config major_deprecations true" - end - - it "warns about ambiguous gems, but installs anyway", :bundler => "< 2" do - bundle :install - - expect(out).to have_major_deprecation a_string_including("Your Gemfile contains multiple primary sources.") - expect(out).to include("Warning: the gem 'rack' was found in multiple sources.") - expect(out).to include("Installed from: file://localhost#{gem_repo1}") - expect(the_bundle).to include_gems("rack-obama 1.0.0", "rack 1.0.0", :source => "remote1") - end - end - end - - context "with source affinity" do - context "with sources given by a block" do - before do - # Oh no! Someone evil is trying to hijack rack :( - # need this to be broken to check for correct source ordering - build_repo gem_repo3 do - build_gem "rack", "1.0.0" do |s| - s.write "lib/rack.rb", "RACK = 'FAIL'" - end - - build_gem "rack-obama" do |s| - s.add_dependency "rack" - end - end - - gemfile <<-G - source "file://#{gem_repo3}" - source "file://#{gem_repo1}" do - gem "thin" # comes first to test name sorting - gem "rack" - end - gem "rack-obama" # shoud come from repo3! - G - end - - it "installs the gems without any warning" do - bundle! :install - expect(out).not_to include("Warning") - expect(the_bundle).to include_gems("rack-obama 1.0.0") - expect(the_bundle).to include_gems("rack 1.0.0", :source => "remote1") - end - - it "can cache and deploy" do - bundle! :package - - expect(bundled_app("vendor/cache/rack-1.0.0.gem")).to exist - expect(bundled_app("vendor/cache/rack-obama-1.0.gem")).to exist - - bundle! :install, forgotten_command_line_options(:deployment => true) - - expect(the_bundle).to include_gems("rack-obama 1.0.0", "rack 1.0.0") - end - end - - context "with sources set by an option" do - before do - # Oh no! Someone evil is trying to hijack rack :( - # need this to be broken to check for correct source ordering - build_repo gem_repo3 do - build_gem "rack", "1.0.0" do |s| - s.write "lib/rack.rb", "RACK = 'FAIL'" - end - - build_gem "rack-obama" do |s| - s.add_dependency "rack" - end - end - - gemfile <<-G - source "file://#{gem_repo3}" - gem "rack-obama" # should come from repo3! - gem "rack", :source => "file://#{gem_repo1}" - G - end - - it "installs the gems without any warning" do - bundle :install - expect(out).not_to include("Warning") - expect(the_bundle).to include_gems("rack-obama 1.0.0", "rack 1.0.0") - end - end - - context "when a pinned gem has an indirect dependency" do - before do - build_repo gem_repo3 do - build_gem "depends_on_rack", "1.0.1" do |s| - s.add_dependency "rack" - end - end - end - - context "when the indirect dependency is in the pinned source" do - before do - # we need a working rack gem in repo3 - update_repo gem_repo3 do - build_gem "rack", "1.0.0" - end - - gemfile <<-G - source "file://#{gem_repo2}" - source "file://#{gem_repo3}" do - gem "depends_on_rack" - end - G - end - - context "and not in any other sources" do - before do - build_repo(gem_repo2) {} - end - - it "installs from the same source without any warning" do - bundle :install - expect(out).not_to include("Warning") - expect(the_bundle).to include_gems("depends_on_rack 1.0.1", "rack 1.0.0") - end - end - - context "and in another source" do - before do - # need this to be broken to check for correct source ordering - build_repo gem_repo2 do - build_gem "rack", "1.0.0" do |s| - s.write "lib/rack.rb", "RACK = 'FAIL'" - end - end - end - - context "when lockfile_uses_separate_rubygems_sources is set" do - before do - bundle! "config lockfile_uses_separate_rubygems_sources true" - bundle! "config disable_multisource true" - end - - it "installs from the same source without any warning" do - bundle! :install - - expect(out).not_to include("Warning: the gem 'rack' was found in multiple sources.") - expect(err).not_to include("Warning: the gem 'rack' was found in multiple sources.") - expect(the_bundle).to include_gems("depends_on_rack 1.0.1", "rack 1.0.0") - - # when there is already a lock file, and the gems are missing, so try again - system_gems [] - bundle! :install - - expect(out).not_to include("Warning: the gem 'rack' was found in multiple sources.") - expect(err).not_to include("Warning: the gem 'rack' was found in multiple sources.") - expect(the_bundle).to include_gems("depends_on_rack 1.0.1", "rack 1.0.0") - end - end - end - end - - context "when the indirect dependency is in a different source" do - before do - # In these tests, we need a working rack gem in repo2 and not repo3 - build_repo gem_repo2 do - build_gem "rack", "1.0.0" - end - end - - context "and not in any other sources" do - before do - gemfile <<-G - source "file://#{gem_repo2}" - source "file://#{gem_repo3}" do - gem "depends_on_rack" - end - G - end - - it "installs from the other source without any warning" do - bundle :install - expect(out).not_to include("Warning") - expect(the_bundle).to include_gems("depends_on_rack 1.0.1", "rack 1.0.0") - end - end - - context "and in yet another source" do - before do - gemfile <<-G - source "file://localhost#{gem_repo1}" - source "file://localhost#{gem_repo2}" - source "file://localhost#{gem_repo3}" do - gem "depends_on_rack" - end - G - end - - it "installs from the other source and warns about ambiguous gems", :bundler => "< 2" do - bundle "config major_deprecations true" - bundle :install - expect(out).to have_major_deprecation a_string_including("Your Gemfile contains multiple primary sources.") - expect(out).to include("Warning: the gem 'rack' was found in multiple sources.") - expect(out).to include("Installed from: file://localhost#{gem_repo2}") - expect(the_bundle).to include_gems("depends_on_rack 1.0.1", "rack 1.0.0") - end - end - - context "and only the dependency is pinned" do - before do - # need this to be broken to check for correct source ordering - build_repo gem_repo2 do - build_gem "rack", "1.0.0" do |s| - s.write "lib/rack.rb", "RACK = 'FAIL'" - end - end - - gemfile <<-G - source "file://#{gem_repo3}" # contains depends_on_rack - source "file://#{gem_repo2}" # contains broken rack - - gem "depends_on_rack" # installed from gem_repo3 - gem "rack", :source => "file://#{gem_repo1}" - G - end - - it "installs the dependency from the pinned source without warning", :bundler => "< 2" do - bundle :install - - expect(out).not_to include("Warning: the gem 'rack' was found in multiple sources.") - expect(the_bundle).to include_gems("depends_on_rack 1.0.1", "rack 1.0.0") - - # In https://github.com/bundler/bundler/issues/3585 this failed - # when there is already a lock file, and the gems are missing, so try again - system_gems [] - bundle :install - - expect(out).not_to include("Warning: the gem 'rack' was found in multiple sources.") - expect(the_bundle).to include_gems("depends_on_rack 1.0.1", "rack 1.0.0") - end - end - end - end - - context "when a top-level gem has an indirect dependency" do - context "when lockfile_uses_separate_rubygems_sources is set" do - before do - bundle! "config lockfile_uses_separate_rubygems_sources true" - bundle! "config disable_multisource true" - end - - before do - build_repo gem_repo2 do - build_gem "depends_on_rack", "1.0.1" do |s| - s.add_dependency "rack" - end - end - - build_repo gem_repo3 do - build_gem "unrelated_gem", "1.0.0" - end - - gemfile <<-G - source "file://#{gem_repo2}" - - gem "depends_on_rack" - - source "file://#{gem_repo3}" do - gem "unrelated_gem" - end - G - end - - context "and the dependency is only in the top-level source" do - before do - update_repo gem_repo2 do - build_gem "rack", "1.0.0" - end - end - - it "installs all gems without warning" do - bundle :install - expect(out).not_to include("Warning") - expect(the_bundle).to include_gems("depends_on_rack 1.0.1", "rack 1.0.0", "unrelated_gem 1.0.0") - end - end - - context "and the dependency is only in a pinned source" do - before do - update_repo gem_repo3 do - build_gem "rack", "1.0.0" do |s| - s.write "lib/rack.rb", "RACK = 'FAIL'" - end - end - end - - it "does not find the dependency" do - bundle :install - expect(out).to include("Could not find gem 'rack', which is required by gem 'depends_on_rack', in any of the relevant sources") - end - end - - context "and the dependency is in both the top-level and a pinned source" do - before do - update_repo gem_repo2 do - build_gem "rack", "1.0.0" - end - - update_repo gem_repo3 do - build_gem "rack", "1.0.0" do |s| - s.write "lib/rack.rb", "RACK = 'FAIL'" - end - end - end - - it "installs the dependency from the top-level source without warning" do - bundle :install - expect(out).not_to include("Warning") - expect(the_bundle).to include_gems("depends_on_rack 1.0.1", "rack 1.0.0", "unrelated_gem 1.0.0") - end - end - end - end - - context "with a gem that is only found in the wrong source" do - before do - build_repo gem_repo3 do - build_gem "not_in_repo1", "1.0.0" - end - - gemfile <<-G - source "file://#{gem_repo3}" - gem "not_in_repo1", :source => "file://#{gem_repo1}" - G - end - - it "does not install the gem" do - bundle :install - expect(out).to include("Could not find gem 'not_in_repo1'") - end - end - - context "with an existing lockfile" do - before do - system_gems "rack-0.9.1", "rack-1.0.0", :path => :bundle_path - - lockfile <<-L - GEM - remote: file:#{gem_repo1} - remote: file:#{gem_repo3} - specs: - rack (0.9.1) - - PLATFORMS - ruby - - DEPENDENCIES - rack! - L - - gemfile <<-G - source "file://#{gem_repo1}" - source "file://#{gem_repo3}" do - gem 'rack' - end - G - end - - # Reproduction of https://github.com/bundler/bundler/issues/3298 - it "does not unlock the installed gem on exec" do - expect(the_bundle).to include_gems("rack 0.9.1") - end - end - - context "with a path gem in the same Gemfile" do - before do - build_lib "foo" - - gemfile <<-G - gem "rack", :source => "file://#{gem_repo1}" - gem "foo", :path => "#{lib_path("foo-1.0")}" - G - end - - it "does not unlock the non-path gem after install" do - bundle! :install - - bundle! %(exec ruby -e 'puts "OK"'), :env => { :RUBYOPT => "-r#{spec_dir.join("support/hax")}" } - - expect(out).to include("OK") - end - end - end - - context "when an older version of the same gem also ships with Ruby" do - before do - system_gems "rack-0.9.1" - - gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" # shoud come from repo1! - G - end - - it "installs the gems without any warning" do - bundle :install - expect(out).not_to include("Warning") - expect(the_bundle).to include_gems("rack 1.0.0") - end - end - - context "when a single source contains multiple locked gems" do - before do - # 1. With these gems, - build_repo4 do - build_gem "foo", "0.1" - build_gem "bar", "0.1" - end - - # 2. Installing this gemfile will produce... - gemfile <<-G - source 'file://#{gem_repo1}' - gem 'rack' - gem 'foo', '~> 0.1', :source => 'file://#{gem_repo4}' - gem 'bar', '~> 0.1', :source => 'file://#{gem_repo4}' - G - - # 3. this lockfile. - lockfile <<-L - GEM - remote: file:/Users/andre/src/bundler/bundler/tmp/gems/remote1/ - remote: file:/Users/andre/src/bundler/bundler/tmp/gems/remote4/ - specs: - bar (0.1) - foo (0.1) - rack (1.0.0) - - PLATFORMS - ruby - - DEPENDENCIES - bar (~> 0.1)! - foo (~> 0.1)! - rack - L - - bundle! :install, forgotten_command_line_options(:path => "../gems/system") - - # 4. Then we add some new versions... - update_repo4 do - build_gem "foo", "0.2" - build_gem "bar", "0.3" - end - end - - it "allows them to be unlocked separately" do - # 5. and install this gemfile, updating only foo. - install_gemfile <<-G - source 'file://#{gem_repo1}' - gem 'rack' - gem 'foo', '~> 0.2', :source => 'file://#{gem_repo4}' - gem 'bar', '~> 0.1', :source => 'file://#{gem_repo4}' - G - - # 6. Which should update foo to 0.2, but not the (locked) bar 0.1 - expect(the_bundle).to include_gems("foo 0.2", "bar 0.1") - end - end - - context "re-resolving" do - context "when there is a mix of sources in the gemfile" do - before do - build_repo3 - build_lib "path1" - build_lib "path2" - build_git "git1" - build_git "git2" - - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "rails" - - source "file://#{gem_repo3}" do - gem "rack" - end - - gem "path1", :path => "#{lib_path("path1-1.0")}" - gem "path2", :path => "#{lib_path("path2-1.0")}" - gem "git1", :git => "#{lib_path("git1-1.0")}" - gem "git2", :git => "#{lib_path("git2-1.0")}" - G - end - - it "does not re-resolve" do - bundle :install, :verbose => true - expect(out).to include("using resolution from the lockfile") - expect(out).not_to include("re-resolving dependencies") - end - end - end - - context "when a gem is installed to system gems" do - before do - install_gemfile! <<-G - source "file://#{gem_repo1}" - gem "rack" - G - end - - context "and the gemfile changes" do - it "is still able to find that gem from remote sources" do - source_uri = "file://#{gem_repo1}" - second_uri = "file://#{gem_repo4}" - - build_repo4 do - build_gem "rack", "2.0.1.1.forked" - build_gem "thor", "0.19.1.1.forked" - end - - # When this gemfile is installed... - gemfile <<-G - source "#{source_uri}" - - source "#{second_uri}" do - gem "rack", "2.0.1.1.forked" - gem "thor" - end - gem "rack-obama" - G - - # It creates this lockfile. - lockfile <<-L - GEM - remote: #{source_uri}/ - remote: #{second_uri}/ - specs: - rack (2.0.1.1.forked) - rack-obama (1.0) - rack - thor (0.19.1.1.forked) - - PLATFORMS - ruby - - DEPENDENCIES - rack (= 2.0.1.1.forked)! - rack-obama - thor! - L - - # Then we change the Gemfile by adding a version to thor - gemfile <<-G - source "#{source_uri}" - - source "#{second_uri}" do - gem "rack", "2.0.1.1.forked" - gem "thor", "0.19.1.1.forked" - end - gem "rack-obama" - G - - # But we should still be able to find rack 2.0.1.1.forked and install it - bundle! :install - end - end - end -end diff --git a/spec/bundler/install/gemfile/specific_platform_spec.rb b/spec/bundler/install/gemfile/specific_platform_spec.rb deleted file mode 100644 index 9c725416d5..0000000000 --- a/spec/bundler/install/gemfile/specific_platform_spec.rb +++ /dev/null @@ -1,114 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe "bundle install with specific_platform enabled" do - before do - bundle "config specific_platform true" - - build_repo2 do - build_gem("google-protobuf", "3.0.0.alpha.5.0.5.1") - build_gem("google-protobuf", "3.0.0.alpha.5.0.5.1") {|s| s.platform = "x86_64-linux" } - build_gem("google-protobuf", "3.0.0.alpha.5.0.5.1") {|s| s.platform = "x86-mingw32" } - build_gem("google-protobuf", "3.0.0.alpha.5.0.5.1") {|s| s.platform = "x86-linux" } - build_gem("google-protobuf", "3.0.0.alpha.5.0.5.1") {|s| s.platform = "x64-mingw32" } - build_gem("google-protobuf", "3.0.0.alpha.5.0.5.1") {|s| s.platform = "universal-darwin" } - - build_gem("google-protobuf", "3.0.0.alpha.5.0.5") {|s| s.platform = "x86_64-linux" } - build_gem("google-protobuf", "3.0.0.alpha.5.0.5") {|s| s.platform = "x86-linux" } - build_gem("google-protobuf", "3.0.0.alpha.5.0.5") {|s| s.platform = "x64-mingw32" } - build_gem("google-protobuf", "3.0.0.alpha.5.0.5") {|s| s.platform = "x86-mingw32" } - build_gem("google-protobuf", "3.0.0.alpha.5.0.5") - - build_gem("google-protobuf", "3.0.0.alpha.5.0.4") {|s| s.platform = "universal-darwin" } - build_gem("google-protobuf", "3.0.0.alpha.5.0.4") {|s| s.platform = "x86_64-linux" } - build_gem("google-protobuf", "3.0.0.alpha.5.0.4") {|s| s.platform = "x86-mingw32" } - build_gem("google-protobuf", "3.0.0.alpha.5.0.4") {|s| s.platform = "x86-linux" } - build_gem("google-protobuf", "3.0.0.alpha.5.0.4") {|s| s.platform = "x64-mingw32" } - build_gem("google-protobuf", "3.0.0.alpha.5.0.4") - - build_gem("google-protobuf", "3.0.0.alpha.5.0.3") - build_gem("google-protobuf", "3.0.0.alpha.5.0.3") {|s| s.platform = "x86_64-linux" } - build_gem("google-protobuf", "3.0.0.alpha.5.0.3") {|s| s.platform = "x86-mingw32" } - build_gem("google-protobuf", "3.0.0.alpha.5.0.3") {|s| s.platform = "x86-linux" } - build_gem("google-protobuf", "3.0.0.alpha.5.0.3") {|s| s.platform = "x64-mingw32" } - build_gem("google-protobuf", "3.0.0.alpha.5.0.3") {|s| s.platform = "universal-darwin" } - - build_gem("google-protobuf", "3.0.0.alpha.4.0") - build_gem("google-protobuf", "3.0.0.alpha.3.1.pre") - build_gem("google-protobuf", "3.0.0.alpha.3") - build_gem("google-protobuf", "3.0.0.alpha.2.0") - build_gem("google-protobuf", "3.0.0.alpha.1.1") - build_gem("google-protobuf", "3.0.0.alpha.1.0") - - build_gem("facter", "2.4.6") - build_gem("facter", "2.4.6") do |s| - s.platform = "universal-darwin" - s.add_runtime_dependency "CFPropertyList" - end - build_gem("CFPropertyList") - end - end - - let(:google_protobuf) { <<-G } - source "file:#{gem_repo2}" - gem "google-protobuf" - G - - context "when on a darwin machine" do - before { simulate_platform "x86_64-darwin-15" } - - it "locks to both the specific darwin platform and ruby" do - install_gemfile!(google_protobuf) - expect(the_bundle.locked_gems.platforms).to eq([pl("ruby"), pl("x86_64-darwin-15")]) - expect(the_bundle).to include_gem("google-protobuf 3.0.0.alpha.5.0.5.1 universal-darwin") - expect(the_bundle.locked_gems.specs.map(&:full_name)).to eq(%w[ - google-protobuf-3.0.0.alpha.5.0.5.1 - google-protobuf-3.0.0.alpha.5.0.5.1-universal-darwin - ]) - end - - it "caches both the universal-darwin and ruby gems when --all-platforms is passed" do - gemfile(google_protobuf) - bundle! "package --all-platforms" - expect([cached_gem("google-protobuf-3.0.0.alpha.5.0.5.1"), cached_gem("google-protobuf-3.0.0.alpha.5.0.5.1-universal-darwin")]). - to all(exist) - end - - it "uses the platform-specific gem with extra dependencies" do - install_gemfile! <<-G - source "file:#{gem_repo2}" - gem "facter" - G - - expect(the_bundle.locked_gems.platforms).to eq([pl("ruby"), pl("x86_64-darwin-15")]) - expect(the_bundle).to include_gems("facter 2.4.6 universal-darwin", "CFPropertyList 1.0") - expect(the_bundle.locked_gems.specs.map(&:full_name)).to eq(["CFPropertyList-1.0", - "facter-2.4.6", - "facter-2.4.6-universal-darwin"]) - end - - context "when adding a platform via lock --add_platform" do - it "adds the foreign platform" do - install_gemfile!(google_protobuf) - bundle! "lock --add-platform=#{x64_mingw}" - - expect(the_bundle.locked_gems.platforms).to eq([rb, x64_mingw, pl("x86_64-darwin-15")]) - expect(the_bundle.locked_gems.specs.map(&:full_name)).to eq(%w[ - google-protobuf-3.0.0.alpha.5.0.5.1 - google-protobuf-3.0.0.alpha.5.0.5.1-universal-darwin - google-protobuf-3.0.0.alpha.5.0.5.1-x64-mingw32 - ]) - end - - it "falls back on plain ruby when that version doesnt have a platform-specific gem" do - install_gemfile!(google_protobuf) - bundle! "lock --add-platform=#{java}" - - expect(the_bundle.locked_gems.platforms).to eq([java, rb, pl("x86_64-darwin-15")]) - expect(the_bundle.locked_gems.specs.map(&:full_name)).to eq(%w[ - google-protobuf-3.0.0.alpha.5.0.5.1 - google-protobuf-3.0.0.alpha.5.0.5.1-universal-darwin - ]) - end - end - end -end diff --git a/spec/bundler/install/gemfile_spec.rb b/spec/bundler/install/gemfile_spec.rb deleted file mode 100644 index 945d9f485d..0000000000 --- a/spec/bundler/install/gemfile_spec.rb +++ /dev/null @@ -1,113 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe "bundle install" do - context "with duplicated gems" do - it "will display a warning" do - install_gemfile <<-G - gem 'rails', '~> 4.0.0' - gem 'rails', '~> 4.0.0' - G - expect(out).to include("more than once") - end - end - - context "with --gemfile" do - it "finds the gemfile" do - gemfile bundled_app("NotGemfile"), <<-G - source "file://#{gem_repo1}" - gem 'rack' - G - - bundle :install, :gemfile => bundled_app("NotGemfile") - - ENV["BUNDLE_GEMFILE"] = "NotGemfile" - expect(the_bundle).to include_gems "rack 1.0.0" - end - end - - context "with gemfile set via config" do - before do - gemfile bundled_app("NotGemfile"), <<-G - source "file://#{gem_repo1}" - gem 'rack' - G - - bundle "config --local gemfile #{bundled_app("NotGemfile")}" - end - it "uses the gemfile to install" do - bundle "install" - bundle "list" - - expect(out).to include("rack (1.0.0)") - end - it "uses the gemfile while in a subdirectory" do - bundled_app("subdir").mkpath - Dir.chdir(bundled_app("subdir")) do - bundle "install" - bundle "list" - - expect(out).to include("rack (1.0.0)") - end - end - end - - context "with deprecated features" do - before :each do - in_app_root - end - - it "reports that lib is an invalid option" do - gemfile <<-G - gem "rack", :lib => "rack" - G - - bundle :install - expect(out).to match(/You passed :lib as an option for gem 'rack', but it is invalid/) - end - end - - context "with prefer_gems_rb set" do - before { bundle! "config prefer_gems_rb true" } - - it "prefers gems.rb to Gemfile" do - create_file("gems.rb", "gem 'bundler'") - create_file("Gemfile", "raise 'wrong Gemfile!'") - - bundle! :install - - expect(bundled_app("gems.rb")).to be_file - expect(bundled_app("Gemfile.lock")).not_to be_file - - expect(the_bundle).to include_gem "bundler #{Bundler::VERSION}" - end - end - - context "with engine specified in symbol" do - it "does not raise any error parsing Gemfile" do - simulate_ruby_version "2.3.0" do - simulate_ruby_engine "jruby", "9.1.2.0" do - install_gemfile! <<-G - source "file://#{gem_repo1}" - ruby "2.3.0", :engine => :jruby, :engine_version => "9.1.2.0" - G - - expect(out).to match(/Bundle complete!/) - end - end - end - - it "installation succeeds" do - simulate_ruby_version "2.3.0" do - simulate_ruby_engine "jruby", "9.1.2.0" do - install_gemfile! <<-G - source "file://#{gem_repo1}" - ruby "2.3.0", :engine => :jruby, :engine_version => "9.1.2.0" - gem "rack" - G - - expect(the_bundle).to include_gems "rack 1.0.0" - end - end - end - end -end diff --git a/spec/bundler/install/gems/compact_index_spec.rb b/spec/bundler/install/gems/compact_index_spec.rb deleted file mode 100644 index 07700f5030..0000000000 --- a/spec/bundler/install/gems/compact_index_spec.rb +++ /dev/null @@ -1,909 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe "compact index api" do - let(:source_hostname) { "localgemserver.test" } - let(:source_uri) { "http://#{source_hostname}" } - - it "should use the API" do - gemfile <<-G - source "#{source_uri}" - gem "rack" - G - - bundle! :install, :artifice => "compact_index" - expect(out).to include("Fetching gem metadata from #{source_uri}") - expect(the_bundle).to include_gems "rack 1.0.0" - end - - it "should URI encode gem names" do - gemfile <<-G - source "#{source_uri}" - gem " sinatra" - G - - bundle :install, :artifice => "compact_index" - expect(out).to include("' sinatra' is not a valid gem name because it contains whitespace.") - end - - it "should handle nested dependencies" do - gemfile <<-G - source "#{source_uri}" - gem "rails" - G - - bundle! :install, :artifice => "compact_index" - expect(out).to include("Fetching gem metadata from #{source_uri}") - expect(the_bundle).to include_gems( - "rails 2.3.2", - "actionpack 2.3.2", - "activerecord 2.3.2", - "actionmailer 2.3.2", - "activeresource 2.3.2", - "activesupport 2.3.2" - ) - end - - it "should handle case sensitivity conflicts" do - build_repo4 do - build_gem "rack", "1.0" do |s| - s.add_runtime_dependency("Rack", "0.1") - end - build_gem "Rack", "0.1" - end - - install_gemfile! <<-G, :artifice => "compact_index", :env => { "BUNDLER_SPEC_GEM_REPO" => gem_repo4 } - source "#{source_uri}" - gem "rack", "1.0" - gem "Rack", "0.1" - G - - # can't use `include_gems` here since the `require` will conflict on a - # case-insensitive FS - run! "Bundler.require; puts Gem.loaded_specs.values_at('rack', 'Rack').map(&:full_name)" - expect(last_command.stdout).to eq("rack-1.0\nRack-0.1") - end - - it "should handle multiple gem dependencies on the same gem" do - gemfile <<-G - source "#{source_uri}" - gem "net-sftp" - G - - bundle! :install, :artifice => "compact_index" - expect(the_bundle).to include_gems "net-sftp 1.1.1" - end - - it "should use the endpoint when using --deployment" do - gemfile <<-G - source "#{source_uri}" - gem "rack" - G - bundle! :install, :artifice => "compact_index" - - bundle! :install, forgotten_command_line_options(:deployment => true, :path => "vendor/bundle").merge(:artifice => "compact_index") - expect(out).to include("Fetching gem metadata from #{source_uri}") - expect(the_bundle).to include_gems "rack 1.0.0" - end - - it "handles git dependencies that are in rubygems" do - build_git "foo" do |s| - s.executables = "foobar" - s.add_dependency "rails", "2.3.2" - end - - gemfile <<-G - source "#{source_uri}" - git "file:///#{lib_path("foo-1.0")}" do - gem 'foo' - end - G - - bundle! :install, :artifice => "compact_index" - - expect(the_bundle).to include_gems("rails 2.3.2") - end - - it "handles git dependencies that are in rubygems using --deployment" do - build_git "foo" do |s| - s.executables = "foobar" - s.add_dependency "rails", "2.3.2" - end - - gemfile <<-G - source "#{source_uri}" - gem 'foo', :git => "file:///#{lib_path("foo-1.0")}" - G - - bundle! :install, :artifice => "compact_index" - - bundle "install --deployment", :artifice => "compact_index" - - expect(the_bundle).to include_gems("rails 2.3.2") - end - - it "doesn't fail if you only have a git gem with no deps when using --deployment" do - build_git "foo" - gemfile <<-G - source "#{source_uri}" - gem 'foo', :git => "file:///#{lib_path("foo-1.0")}" - G - - bundle "install", :artifice => "compact_index" - bundle! :install, forgotten_command_line_options(:deployment => true).merge(:artifice => "compact_index") - - expect(the_bundle).to include_gems("foo 1.0") - end - - it "falls back when the API errors out" do - simulate_platform mswin - - gemfile <<-G - source "#{source_uri}" - gem "rcov" - G - - bundle! :install, :artifice => "windows" - expect(out).to include("Fetching source index from #{source_uri}") - expect(the_bundle).to include_gems "rcov 1.0.0" - end - - it "falls back when the API URL returns 403 Forbidden" do - gemfile <<-G - source "#{source_uri}" - gem "rack" - G - - bundle! :install, :verbose => true, :artifice => "compact_index_forbidden" - expect(out).to include("Fetching gem metadata from #{source_uri}") - expect(the_bundle).to include_gems "rack 1.0.0" - end - - it "falls back when the versions endpoint has a checksum mismatch" do - gemfile <<-G - source "#{source_uri}" - gem "rack" - G - - bundle! :install, :verbose => true, :artifice => "compact_index_checksum_mismatch" - expect(out).to include("Fetching gem metadata from #{source_uri}") - expect(out).to include <<-'WARN' -The checksum of /versions does not match the checksum provided by the server! Something is wrong (local checksum is "\"d41d8cd98f00b204e9800998ecf8427e\"", was expecting "\"123\""). - WARN - expect(the_bundle).to include_gems "rack 1.0.0" - end - - it "falls back when the user's home directory does not exist or is not writable" do - ENV["HOME"] = tmp("missing_home").to_s - - gemfile <<-G - source "#{source_uri}" - gem "rack" - G - - bundle! :install, :artifice => "compact_index" - expect(out).to include("Fetching gem metadata from #{source_uri}") - expect(the_bundle).to include_gems "rack 1.0.0" - end - - it "handles host redirects" do - gemfile <<-G - source "#{source_uri}" - gem "rack" - G - - bundle! :install, :artifice => "compact_index_host_redirect" - expect(the_bundle).to include_gems "rack 1.0.0" - end - - it "handles host redirects without Net::HTTP::Persistent" do - gemfile <<-G - source "#{source_uri}" - gem "rack" - G - - FileUtils.mkdir_p lib_path - File.open(lib_path("disable_net_http_persistent.rb"), "w") do |h| - h.write <<-H - module Kernel - alias require_without_disabled_net_http require - def require(*args) - raise LoadError, 'simulated' if args.first == 'openssl' && !caller.grep(/vendored_persistent/).empty? - require_without_disabled_net_http(*args) - end - end - H - end - - bundle! :install, :artifice => "compact_index_host_redirect", :requires => [lib_path("disable_net_http_persistent.rb")] - expect(out).to_not match(/Too many redirects/) - expect(the_bundle).to include_gems "rack 1.0.0" - end - - it "times out when Bundler::Fetcher redirects too much" do - gemfile <<-G - source "#{source_uri}" - gem "rack" - G - - bundle :install, :artifice => "compact_index_redirects" - expect(out).to match(/Too many redirects/) - end - - context "when --full-index is specified" do - it "should use the modern index for install" do - gemfile <<-G - source "#{source_uri}" - gem "rack" - G - - bundle "install --full-index", :artifice => "compact_index" - expect(out).to include("Fetching source index from #{source_uri}") - expect(the_bundle).to include_gems "rack 1.0.0" - end - - it "should use the modern index for update" do - gemfile <<-G - source "#{source_uri}" - gem "rack" - G - - bundle! "update --full-index", :artifice => "compact_index", :all => bundle_update_requires_all? - expect(out).to include("Fetching source index from #{source_uri}") - expect(the_bundle).to include_gems "rack 1.0.0" - end - end - - it "does not double check for gems that are only installed locally" do - system_gems %w[rack-1.0.0 thin-1.0 net_a-1.0] - bundle! "config --local path.system true" - ENV["BUNDLER_SPEC_ALL_REQUESTS"] = strip_whitespace(<<-EOS).strip - #{source_uri}/versions - #{source_uri}/info/rack - EOS - - install_gemfile! <<-G, :artifice => "compact_index", :verbose => true - source "#{source_uri}" - gem "rack" - G - - expect(last_command.stdboth).not_to include "Double checking" - end - - it "fetches again when more dependencies are found in subsequent sources", :bundler => "< 2" do - build_repo2 do - build_gem "back_deps" do |s| - s.add_dependency "foo" - end - FileUtils.rm_rf Dir[gem_repo2("gems/foo-*.gem")] - end - - gemfile <<-G - source "#{source_uri}" - source "#{source_uri}/extra" - gem "back_deps" - G - - bundle! :install, :artifice => "compact_index_extra" - expect(the_bundle).to include_gems "back_deps 1.0", "foo 1.0" - end - - it "fetches again when more dependencies are found in subsequent sources with source blocks" do - build_repo2 do - build_gem "back_deps" do |s| - s.add_dependency "foo" - end - FileUtils.rm_rf Dir[gem_repo2("gems/foo-*.gem")] - end - - install_gemfile! <<-G, :artifice => "compact_index_extra", :verbose => true - source "#{source_uri}" - source "#{source_uri}/extra" do - gem "back_deps" - end - G - - expect(the_bundle).to include_gems "back_deps 1.0", "foo 1.0" - end - - it "fetches gem versions even when those gems are already installed" do - gemfile <<-G - source "#{source_uri}" - gem "rack", "1.0.0" - G - bundle! :install, :artifice => "compact_index_extra_api" - expect(the_bundle).to include_gems "rack 1.0.0" - - build_repo4 do - build_gem "rack", "1.2" do |s| - s.executables = "rackup" - end - end - - gemfile <<-G - source "#{source_uri}" do; end - source "#{source_uri}/extra" - gem "rack", "1.2" - G - bundle! :install, :artifice => "compact_index_extra_api" - expect(the_bundle).to include_gems "rack 1.2" - end - - it "considers all possible versions of dependencies from all api gem sources", :bundler => "< 2" do - # In this scenario, the gem "somegem" only exists in repo4. It depends on specific version of activesupport that - # exists only in repo1. There happens also be a version of activesupport in repo4, but not the one that version 1.0.0 - # of somegem wants. This test makes sure that bundler actually finds version 1.2.3 of active support in the other - # repo and installs it. - build_repo4 do - build_gem "activesupport", "1.2.0" - build_gem "somegem", "1.0.0" do |s| - s.add_dependency "activesupport", "1.2.3" # This version exists only in repo1 - end - end - - gemfile <<-G - source "#{source_uri}" - source "#{source_uri}/extra" - gem 'somegem', '1.0.0' - G - - bundle! :install, :artifice => "compact_index_extra_api" - - expect(the_bundle).to include_gems "somegem 1.0.0" - expect(the_bundle).to include_gems "activesupport 1.2.3" - end - - it "considers all possible versions of dependencies from all api gem sources when using blocks", :bundler => "< 2" do - # In this scenario, the gem "somegem" only exists in repo4. It depends on specific version of activesupport that - # exists only in repo1. There happens also be a version of activesupport in repo4, but not the one that version 1.0.0 - # of somegem wants. This test makes sure that bundler actually finds version 1.2.3 of active support in the other - # repo and installs it. - build_repo4 do - build_gem "activesupport", "1.2.0" - build_gem "somegem", "1.0.0" do |s| - s.add_dependency "activesupport", "1.2.3" # This version exists only in repo1 - end - end - - gemfile <<-G - source "#{source_uri}" - source "#{source_uri}/extra" do - gem 'somegem', '1.0.0' - end - G - - bundle! :install, :artifice => "compact_index_extra_api" - - expect(the_bundle).to include_gems "somegem 1.0.0" - expect(the_bundle).to include_gems "activesupport 1.2.3" - end - - it "prints API output properly with back deps" do - build_repo2 do - build_gem "back_deps" do |s| - s.add_dependency "foo" - end - FileUtils.rm_rf Dir[gem_repo2("gems/foo-*.gem")] - end - - gemfile <<-G - source "#{source_uri}" - source "#{source_uri}/extra" do - gem "back_deps" - end - G - - bundle! :install, :artifice => "compact_index_extra" - - expect(out).to include("Fetching gem metadata from http://localgemserver.test/") - expect(out).to include("Fetching source index from http://localgemserver.test/extra") - end - - it "does not fetch every spec if the index of gems is large when doing back deps" do - build_repo2 do - build_gem "back_deps" do |s| - s.add_dependency "foo" - end - build_gem "missing" - # need to hit the limit - 1.upto(Bundler::Source::Rubygems::API_REQUEST_LIMIT) do |i| - build_gem "gem#{i}" - end - - FileUtils.rm_rf Dir[gem_repo2("gems/foo-*.gem")] - end - - gemfile <<-G - source "#{source_uri}" - source "#{source_uri}/extra" do - gem "back_deps" - end - G - - bundle! :install, :artifice => "compact_index_extra_missing" - expect(the_bundle).to include_gems "back_deps 1.0" - end - - it "does not fetch every spec if the index of gems is large when doing back deps & everything is the compact index" do - build_repo4 do - build_gem "back_deps" do |s| - s.add_dependency "foo" - end - build_gem "missing" - # need to hit the limit - 1.upto(Bundler::Source::Rubygems::API_REQUEST_LIMIT) do |i| - build_gem "gem#{i}" - end - - FileUtils.rm_rf Dir[gem_repo4("gems/foo-*.gem")] - end - - install_gemfile! <<-G, :artifice => "compact_index_extra_api_missing" - source "#{source_uri}" - source "#{source_uri}/extra" do - gem "back_deps" - end - G - - expect(the_bundle).to include_gem "back_deps 1.0" - end - - it "uses the endpoint if all sources support it" do - gemfile <<-G - source "#{source_uri}" - - gem 'foo' - G - - bundle! :install, :artifice => "compact_index_api_missing" - expect(the_bundle).to include_gems "foo 1.0" - end - - it "fetches again when more dependencies are found in subsequent sources using --deployment", :bundler => "< 2" do - build_repo2 do - build_gem "back_deps" do |s| - s.add_dependency "foo" - end - FileUtils.rm_rf Dir[gem_repo2("gems/foo-*.gem")] - end - - gemfile <<-G - source "#{source_uri}" - source "#{source_uri}/extra" - gem "back_deps" - G - - bundle! :install, :artifice => "compact_index_extra" - - bundle "install --deployment", :artifice => "compact_index_extra" - expect(the_bundle).to include_gems "back_deps 1.0" - end - - it "fetches again when more dependencies are found in subsequent sources using --deployment with blocks" do - build_repo2 do - build_gem "back_deps" do |s| - s.add_dependency "foo" - end - FileUtils.rm_rf Dir[gem_repo2("gems/foo-*.gem")] - end - - gemfile <<-G - source "#{source_uri}" - source "#{source_uri}/extra" do - gem "back_deps" - end - G - - bundle! :install, :artifice => "compact_index_extra" - - bundle "install --deployment", :artifice => "compact_index_extra" - expect(the_bundle).to include_gems "back_deps 1.0" - end - - it "does not refetch if the only unmet dependency is bundler" do - gemfile <<-G - source "#{source_uri}" - - gem "bundler_dep" - G - - bundle! :install, :artifice => "compact_index" - expect(out).to include("Fetching gem metadata from #{source_uri}") - end - - it "should install when EndpointSpecification has a bin dir owned by root", :sudo => true do - sudo "mkdir -p #{system_gem_path("bin")}" - sudo "chown -R root #{system_gem_path("bin")}" - - gemfile <<-G - source "#{source_uri}" - gem "rails" - G - bundle! :install, :artifice => "compact_index" - expect(the_bundle).to include_gems "rails 2.3.2" - end - - it "installs the binstubs", :bundler => "< 2" do - gemfile <<-G - source "#{source_uri}" - gem "rack" - G - - bundle "install --binstubs", :artifice => "compact_index" - - gembin "rackup" - expect(out).to eq("1.0.0") - end - - it "installs the bins when using --path and uses autoclean", :bundler => "< 2" do - gemfile <<-G - source "#{source_uri}" - gem "rack" - G - - bundle "install --path vendor/bundle", :artifice => "compact_index" - - expect(vendored_gems("bin/rackup")).to exist - end - - it "installs the bins when using --path and uses bundle clean", :bundler => "< 2" do - gemfile <<-G - source "#{source_uri}" - gem "rack" - G - - bundle "install --path vendor/bundle --no-clean", :artifice => "compact_index" - - expect(vendored_gems("bin/rackup")).to exist - end - - it "prints post_install_messages" do - gemfile <<-G - source "#{source_uri}" - gem 'rack-obama' - G - - bundle! :install, :artifice => "compact_index" - expect(out).to include("Post-install message from rack:") - end - - it "should display the post install message for a dependency" do - gemfile <<-G - source "#{source_uri}" - gem 'rack_middleware' - G - - bundle! :install, :artifice => "compact_index" - expect(out).to include("Post-install message from rack:") - expect(out).to include("Rack's post install message") - end - - context "when using basic authentication" do - let(:user) { "user" } - let(:password) { "pass" } - let(:basic_auth_source_uri) do - uri = URI.parse(source_uri) - uri.user = user - uri.password = password - - uri - end - - it "passes basic authentication details and strips out creds" do - gemfile <<-G - source "#{basic_auth_source_uri}" - gem "rack" - G - - bundle! :install, :artifice => "compact_index_basic_authentication" - expect(out).not_to include("#{user}:#{password}") - expect(the_bundle).to include_gems "rack 1.0.0" - end - - it "strips http basic authentication creds for modern index" do - gemfile <<-G - source "#{basic_auth_source_uri}" - gem "rack" - G - - bundle! :install, :artifice => "endopint_marshal_fail_basic_authentication" - expect(out).not_to include("#{user}:#{password}") - expect(the_bundle).to include_gems "rack 1.0.0" - end - - it "strips http basic auth creds when it can't reach the server" do - gemfile <<-G - source "#{basic_auth_source_uri}" - gem "rack" - G - - bundle :install, :artifice => "endpoint_500" - expect(out).not_to include("#{user}:#{password}") - end - - it "strips http basic auth creds when warning about ambiguous sources", :bundler => "< 2" do - gemfile <<-G - source "#{basic_auth_source_uri}" - source "file://#{gem_repo1}" - gem "rack" - G - - bundle! :install, :artifice => "compact_index_basic_authentication" - expect(out).to include("Warning: the gem 'rack' was found in multiple sources.") - expect(out).not_to include("#{user}:#{password}") - expect(the_bundle).to include_gems "rack 1.0.0" - end - - it "does not pass the user / password to different hosts on redirect" do - gemfile <<-G - source "#{basic_auth_source_uri}" - gem "rack" - G - - bundle! :install, :artifice => "compact_index_creds_diff_host" - expect(the_bundle).to include_gems "rack 1.0.0" - end - - describe "with authentication details in bundle config" do - before do - gemfile <<-G - source "#{source_uri}" - gem "rack" - G - end - - it "reads authentication details by host name from bundle config" do - bundle "config #{source_hostname} #{user}:#{password}" - - bundle! :install, :artifice => "compact_index_strict_basic_authentication" - - expect(out).to include("Fetching gem metadata from #{source_uri}") - expect(the_bundle).to include_gems "rack 1.0.0" - end - - it "reads authentication details by full url from bundle config" do - # The trailing slash is necessary here; Fetcher canonicalizes the URI. - bundle "config #{source_uri}/ #{user}:#{password}" - - bundle! :install, :artifice => "compact_index_strict_basic_authentication" - - expect(out).to include("Fetching gem metadata from #{source_uri}") - expect(the_bundle).to include_gems "rack 1.0.0" - end - - it "should use the API" do - bundle "config #{source_hostname} #{user}:#{password}" - bundle! :install, :artifice => "compact_index_strict_basic_authentication" - expect(out).to include("Fetching gem metadata from #{source_uri}") - expect(the_bundle).to include_gems "rack 1.0.0" - end - - it "prefers auth supplied in the source uri" do - gemfile <<-G - source "#{basic_auth_source_uri}" - gem "rack" - G - - bundle "config #{source_hostname} otheruser:wrong" - - bundle! :install, :artifice => "compact_index_strict_basic_authentication" - expect(the_bundle).to include_gems "rack 1.0.0" - end - - it "shows instructions if auth is not provided for the source" do - bundle :install, :artifice => "compact_index_strict_basic_authentication" - expect(out).to include("bundle config #{source_hostname} username:password") - end - - it "fails if authentication has already been provided, but failed" do - bundle "config #{source_hostname} #{user}:wrong" - - bundle :install, :artifice => "compact_index_strict_basic_authentication" - expect(out).to include("Bad username or password") - end - end - - describe "with no password" do - let(:password) { nil } - - it "passes basic authentication details" do - gemfile <<-G - source "#{basic_auth_source_uri}" - gem "rack" - G - - bundle! :install, :artifice => "compact_index_basic_authentication" - expect(the_bundle).to include_gems "rack 1.0.0" - end - end - end - - context "when ruby is compiled without openssl", :ruby_repo do - before do - # Install a monkeypatch that reproduces the effects of openssl being - # missing when the fetcher runs, as happens in real life. The reason - # we can't just overwrite openssl.rb is that Artifice uses it. - bundled_app("broken_ssl").mkpath - bundled_app("broken_ssl/openssl.rb").open("w") do |f| - f.write <<-RUBY - raise LoadError, "cannot load such file -- openssl" - RUBY - end - end - - it "explains what to do to get it" do - gemfile <<-G - source "#{source_uri.gsub(/http/, "https")}" - gem "rack" - G - - bundle :install, :env => { "RUBYOPT" => "-I#{bundled_app("broken_ssl")}" } - expect(out).to include("OpenSSL") - end - end - - context "when SSL certificate verification fails" do - it "explains what happened" do - # Install a monkeypatch that reproduces the effects of openssl raising - # a certificate validation error when RubyGems tries to connect. - gemfile <<-G - class Net::HTTP - def start - raise OpenSSL::SSL::SSLError, "certificate verify failed" - end - end - - source "#{source_uri.gsub(/http/, "https")}" - gem "rack" - G - - bundle :install - expect(out).to match(/could not verify the SSL certificate/i) - end - end - - context ".gemrc with sources is present" do - before do - File.open(home(".gemrc"), "w") do |file| - file.puts({ :sources => ["https://rubygems.org"] }.to_yaml) - end - end - - after do - home(".gemrc").rmtree - end - - it "uses other sources declared in the Gemfile" do - gemfile <<-G - source "#{source_uri}" - gem 'rack' - G - - bundle! :install, :artifice => "compact_index_forbidden" - end - end - - it "performs partial update with a non-empty range" do - gemfile <<-G - source "#{source_uri}" - gem 'rack', '0.9.1' - G - - # Initial install creates the cached versions file - bundle! :install, :artifice => "compact_index" - - # Update the Gemfile so we can check subsequent install was successful - gemfile <<-G - source "#{source_uri}" - gem 'rack', '1.0.0' - G - - # Second install should make only a partial request to /versions - bundle! :install, :artifice => "compact_index_partial_update" - - expect(the_bundle).to include_gems "rack 1.0.0" - end - - it "performs partial update while local cache is updated by another process" do - gemfile <<-G - source "#{source_uri}" - gem 'rack' - G - - # Create an empty file to trigger a partial download - versions = File.join(Bundler.rubygems.user_home, ".bundle", "cache", "compact_index", - "localgemserver.test.80.dd34752a738ee965a2a4298dc16db6c5", "versions") - FileUtils.mkdir_p(File.dirname(versions)) - FileUtils.touch(versions) - - bundle! :install, :artifice => "compact_index_concurrent_download" - - expect(File.read(versions)).to start_with("created_at") - expect(the_bundle).to include_gems "rack 1.0.0" - end - - it "fails gracefully when the source URI has an invalid scheme" do - install_gemfile <<-G - source "htps://rubygems.org" - gem "rack" - G - expect(exitstatus).to eq(15) if exitstatus - expect(out).to end_with(<<-E.strip) - The request uri `htps://index.rubygems.org/versions` has an invalid scheme (`htps`). Did you mean `http` or `https`? - E - end - - describe "checksum validation", :rubygems => ">= 2.3.0" do - it "raises when the checksum does not match" do - install_gemfile <<-G, :artifice => "compact_index_wrong_gem_checksum" - source "#{source_uri}" - gem "rack" - G - - expect(exitstatus).to eq(19) if exitstatus - expect(out). - to include("Bundler cannot continue installing rack (1.0.0)."). - and include("The checksum for the downloaded `rack-1.0.0.gem` does not match the checksum given by the server."). - and include("This means the contents of the downloaded gem is different from what was uploaded to the server, and could be a potential security issue."). - and include("To resolve this issue:"). - and include("1. delete the downloaded gem located at: `#{default_bundle_path}/gems/rack-1.0.0/rack-1.0.0.gem`"). - and include("2. run `bundle install`"). - and include("If you wish to continue installing the downloaded gem, and are certain it does not pose a security issue despite the mismatching checksum, do the following:"). - and include("1. run `bundle config disable_checksum_validation true` to turn off checksum verification"). - and include("2. run `bundle install`"). - and match(/\(More info: The expected SHA256 checksum was "#{"ab" * 22}", but the checksum for the downloaded gem was ".+?"\.\)/) - end - - it "raises when the checksum is the wrong length" do - install_gemfile <<-G, :artifice => "compact_index_wrong_gem_checksum", :env => { "BUNDLER_SPEC_RACK_CHECKSUM" => "checksum!" } - source "#{source_uri}" - gem "rack" - G - expect(exitstatus).to eq(5) if exitstatus - expect(out).to include("The given checksum for rack-1.0.0 (\"checksum!\") is not a valid SHA256 hexdigest nor base64digest") - end - - it "does not raise when disable_checksum_validation is set" do - bundle! "config disable_checksum_validation true" - install_gemfile! <<-G, :artifice => "compact_index_wrong_gem_checksum" - source "#{source_uri}" - gem "rack" - G - end - end - - it "works when cache dir is world-writable" do - install_gemfile! <<-G, :artifice => "compact_index" - File.umask(0000) - source "#{source_uri}" - gem "rack" - G - end - - it "doesn't explode when the API dependencies are wrong" do - install_gemfile <<-G, :artifice => "compact_index_wrong_dependencies", :env => { "DEBUG" => "true" } - source "#{source_uri}" - gem "rails" - G - deps = [Gem::Dependency.new("rake", "= 10.0.2"), - Gem::Dependency.new("actionpack", "= 2.3.2"), - Gem::Dependency.new("activerecord", "= 2.3.2"), - Gem::Dependency.new("actionmailer", "= 2.3.2"), - Gem::Dependency.new("activeresource", "= 2.3.2")] - expect(out).to include(<<-E.strip).and include("rails-2.3.2 from rubygems remote at #{source_uri}/ has either corrupted API or lockfile dependencies") -Bundler::APIResponseMismatchError: Downloading rails-2.3.2 revealed dependencies not in the API or the lockfile (#{deps.map(&:to_s).join(", ")}). -Either installing with `--full-index` or running `bundle update rails` should fix the problem. - E - end - - it "does not duplicate specs in the lockfile when updating and a dependency is not installed" do - install_gemfile! <<-G, :artifice => "compact_index" - source "#{source_uri}" do - gem "rails" - gem "activemerchant" - end - G - gem_command! :uninstall, "activemerchant" - bundle! "update rails", :artifice => "compact_index" - expect(lockfile.scan(/activemerchant \(/).size).to eq(1) - end -end diff --git a/spec/bundler/install/gems/dependency_api_spec.rb b/spec/bundler/install/gems/dependency_api_spec.rb deleted file mode 100644 index fe696f38c3..0000000000 --- a/spec/bundler/install/gems/dependency_api_spec.rb +++ /dev/null @@ -1,760 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe "gemcutter's dependency API" do - let(:source_hostname) { "localgemserver.test" } - let(:source_uri) { "http://#{source_hostname}" } - - it "should use the API" do - gemfile <<-G - source "#{source_uri}" - gem "rack" - G - - bundle :install, :artifice => "endpoint" - expect(out).to include("Fetching gem metadata from #{source_uri}") - expect(the_bundle).to include_gems "rack 1.0.0" - end - - it "should URI encode gem names" do - gemfile <<-G - source "#{source_uri}" - gem " sinatra" - G - - bundle :install, :artifice => "endpoint" - expect(out).to include("' sinatra' is not a valid gem name because it contains whitespace.") - end - - it "should handle nested dependencies" do - gemfile <<-G - source "#{source_uri}" - gem "rails" - G - - bundle :install, :artifice => "endpoint" - expect(out).to include("Fetching gem metadata from #{source_uri}/...") - expect(the_bundle).to include_gems( - "rails 2.3.2", - "actionpack 2.3.2", - "activerecord 2.3.2", - "actionmailer 2.3.2", - "activeresource 2.3.2", - "activesupport 2.3.2" - ) - end - - it "should handle multiple gem dependencies on the same gem" do - gemfile <<-G - source "#{source_uri}" - gem "net-sftp" - G - - bundle :install, :artifice => "endpoint" - expect(the_bundle).to include_gems "net-sftp 1.1.1" - end - - it "should use the endpoint when using --deployment" do - gemfile <<-G - source "#{source_uri}" - gem "rack" - G - bundle :install, :artifice => "endpoint" - - bundle! :install, forgotten_command_line_options(:deployment => true, :path => "vendor/bundle").merge(:artifice => "endpoint") - expect(out).to include("Fetching gem metadata from #{source_uri}") - expect(the_bundle).to include_gems "rack 1.0.0" - end - - it "handles git dependencies that are in rubygems" do - build_git "foo" do |s| - s.executables = "foobar" - s.add_dependency "rails", "2.3.2" - end - - gemfile <<-G - source "#{source_uri}" - git "file:///#{lib_path("foo-1.0")}" do - gem 'foo' - end - G - - bundle :install, :artifice => "endpoint" - - expect(the_bundle).to include_gems("rails 2.3.2") - end - - it "handles git dependencies that are in rubygems using --deployment" do - build_git "foo" do |s| - s.executables = "foobar" - s.add_dependency "rails", "2.3.2" - end - - gemfile <<-G - source "#{source_uri}" - gem 'foo', :git => "file:///#{lib_path("foo-1.0")}" - G - - bundle :install, :artifice => "endpoint" - - bundle "install --deployment", :artifice => "endpoint" - - expect(the_bundle).to include_gems("rails 2.3.2") - end - - it "doesn't fail if you only have a git gem with no deps when using --deployment" do - build_git "foo" - gemfile <<-G - source "#{source_uri}" - gem 'foo', :git => "file:///#{lib_path("foo-1.0")}" - G - - bundle "install", :artifice => "endpoint" - bundle! :install, forgotten_command_line_options(:deployment => true).merge(:artifice => "endpoint") - - expect(the_bundle).to include_gems("foo 1.0") - end - - it "falls back when the API errors out" do - simulate_platform mswin - - gemfile <<-G - source "#{source_uri}" - gem "rcov" - G - - bundle :install, :artifice => "windows" - expect(out).to include("Fetching source index from #{source_uri}") - expect(the_bundle).to include_gems "rcov 1.0.0" - end - - it "falls back when hitting the Gemcutter Dependency Limit" do - gemfile <<-G - source "#{source_uri}" - gem "activesupport" - gem "actionpack" - gem "actionmailer" - gem "activeresource" - gem "thin" - gem "rack" - gem "rails" - G - bundle :install, :artifice => "endpoint_fallback" - expect(out).to include("Fetching source index from #{source_uri}") - - expect(the_bundle).to include_gems( - "activesupport 2.3.2", - "actionpack 2.3.2", - "actionmailer 2.3.2", - "activeresource 2.3.2", - "activesupport 2.3.2", - "thin 1.0.0", - "rack 1.0.0", - "rails 2.3.2" - ) - end - - it "falls back when Gemcutter API doesn't return proper Marshal format" do - gemfile <<-G - source "#{source_uri}" - gem "rack" - G - - bundle :install, :verbose => true, :artifice => "endpoint_marshal_fail" - expect(out).to include("could not fetch from the dependency API, trying the full index") - expect(the_bundle).to include_gems "rack 1.0.0" - end - - it "falls back when the API URL returns 403 Forbidden" do - gemfile <<-G - source "#{source_uri}" - gem "rack" - G - - bundle :install, :verbose => true, :artifice => "endpoint_api_forbidden" - expect(out).to include("Fetching source index from #{source_uri}") - expect(the_bundle).to include_gems "rack 1.0.0" - end - - it "handles host redirects" do - gemfile <<-G - source "#{source_uri}" - gem "rack" - G - - bundle :install, :artifice => "endpoint_host_redirect" - expect(the_bundle).to include_gems "rack 1.0.0" - end - - it "handles host redirects without Net::HTTP::Persistent" do - gemfile <<-G - source "#{source_uri}" - gem "rack" - G - - FileUtils.mkdir_p lib_path - File.open(lib_path("disable_net_http_persistent.rb"), "w") do |h| - h.write <<-H - module Kernel - alias require_without_disabled_net_http require - def require(*args) - raise LoadError, 'simulated' if args.first == 'openssl' && !caller.grep(/vendored_persistent/).empty? - require_without_disabled_net_http(*args) - end - end - H - end - - bundle :install, :artifice => "endpoint_host_redirect", :requires => [lib_path("disable_net_http_persistent.rb")] - expect(out).to_not match(/Too many redirects/) - expect(the_bundle).to include_gems "rack 1.0.0" - end - - it "timeouts when Bundler::Fetcher redirects too much" do - gemfile <<-G - source "#{source_uri}" - gem "rack" - G - - bundle :install, :artifice => "endpoint_redirect" - expect(out).to match(/Too many redirects/) - end - - context "when --full-index is specified" do - it "should use the modern index for install" do - gemfile <<-G - source "#{source_uri}" - gem "rack" - G - - bundle "install --full-index", :artifice => "endpoint" - expect(out).to include("Fetching source index from #{source_uri}") - expect(the_bundle).to include_gems "rack 1.0.0" - end - - it "should use the modern index for update" do - gemfile <<-G - source "#{source_uri}" - gem "rack" - G - - bundle! "update --full-index", :artifice => "endpoint", :all => bundle_update_requires_all? - expect(out).to include("Fetching source index from #{source_uri}") - expect(the_bundle).to include_gems "rack 1.0.0" - end - end - - it "fetches again when more dependencies are found in subsequent sources", :bundler => "< 2" do - build_repo2 do - build_gem "back_deps" do |s| - s.add_dependency "foo" - end - FileUtils.rm_rf Dir[gem_repo2("gems/foo-*.gem")] - end - - gemfile <<-G - source "#{source_uri}" - source "#{source_uri}/extra" - gem "back_deps" - G - - bundle :install, :artifice => "endpoint_extra" - expect(the_bundle).to include_gems "back_deps 1.0", "foo 1.0" - end - - it "fetches again when more dependencies are found in subsequent sources using blocks" do - build_repo2 do - build_gem "back_deps" do |s| - s.add_dependency "foo" - end - FileUtils.rm_rf Dir[gem_repo2("gems/foo-*.gem")] - end - - gemfile <<-G - source "#{source_uri}" - source "#{source_uri}/extra" do - gem "back_deps" - end - G - - bundle :install, :artifice => "endpoint_extra" - expect(the_bundle).to include_gems "back_deps 1.0", "foo 1.0" - end - - it "fetches gem versions even when those gems are already installed" do - gemfile <<-G - source "#{source_uri}" - gem "rack", "1.0.0" - G - bundle :install, :artifice => "endpoint_extra_api" - - build_repo4 do - build_gem "rack", "1.2" do |s| - s.executables = "rackup" - end - end - - gemfile <<-G - source "#{source_uri}" do; end - source "#{source_uri}/extra" - gem "rack", "1.2" - G - bundle :install, :artifice => "endpoint_extra_api" - expect(the_bundle).to include_gems "rack 1.2" - end - - it "considers all possible versions of dependencies from all api gem sources", :bundler => "< 2" do - # In this scenario, the gem "somegem" only exists in repo4. It depends on specific version of activesupport that - # exists only in repo1. There happens also be a version of activesupport in repo4, but not the one that version 1.0.0 - # of somegem wants. This test makes sure that bundler actually finds version 1.2.3 of active support in the other - # repo and installs it. - build_repo4 do - build_gem "activesupport", "1.2.0" - build_gem "somegem", "1.0.0" do |s| - s.add_dependency "activesupport", "1.2.3" # This version exists only in repo1 - end - end - - gemfile <<-G - source "#{source_uri}" - source "#{source_uri}/extra" - gem 'somegem', '1.0.0' - G - - bundle! :install, :artifice => "endpoint_extra_api" - - expect(the_bundle).to include_gems "somegem 1.0.0" - expect(the_bundle).to include_gems "activesupport 1.2.3" - end - - it "considers all possible versions of dependencies from all api gem sources using blocks" do - # In this scenario, the gem "somegem" only exists in repo4. It depends on specific version of activesupport that - # exists only in repo1. There happens also be a version of activesupport in repo4, but not the one that version 1.0.0 - # of somegem wants. This test makes sure that bundler actually finds version 1.2.3 of active support in the other - # repo and installs it. - build_repo4 do - build_gem "activesupport", "1.2.0" - build_gem "somegem", "1.0.0" do |s| - s.add_dependency "activesupport", "1.2.3" # This version exists only in repo1 - end - end - - gemfile <<-G - source "#{source_uri}" - source "#{source_uri}/extra" do - gem 'somegem', '1.0.0' - end - G - - bundle :install, :artifice => "endpoint_extra_api" - - expect(the_bundle).to include_gems "somegem 1.0.0" - expect(the_bundle).to include_gems "activesupport 1.2.3" - end - - it "prints API output properly with back deps" do - build_repo2 do - build_gem "back_deps" do |s| - s.add_dependency "foo" - end - FileUtils.rm_rf Dir[gem_repo2("gems/foo-*.gem")] - end - - gemfile <<-G - source "#{source_uri}" - source "#{source_uri}/extra" do - gem "back_deps" - end - G - - bundle :install, :artifice => "endpoint_extra" - - expect(out).to include("Fetching gem metadata from http://localgemserver.test/.") - expect(out).to include("Fetching source index from http://localgemserver.test/extra") - end - - it "does not fetch every spec if the index of gems is large when doing back deps", :bundler => "< 2" do - build_repo2 do - build_gem "back_deps" do |s| - s.add_dependency "foo" - end - build_gem "missing" - # need to hit the limit - 1.upto(Bundler::Source::Rubygems::API_REQUEST_LIMIT) do |i| - build_gem "gem#{i}" - end - - FileUtils.rm_rf Dir[gem_repo2("gems/foo-*.gem")] - end - - gemfile <<-G - source "#{source_uri}" - source "#{source_uri}/extra" - gem "back_deps" - G - - bundle :install, :artifice => "endpoint_extra_missing" - expect(the_bundle).to include_gems "back_deps 1.0" - end - - it "does not fetch every spec if the index of gems is large when doing back deps using blocks" do - build_repo2 do - build_gem "back_deps" do |s| - s.add_dependency "foo" - end - build_gem "missing" - # need to hit the limit - 1.upto(Bundler::Source::Rubygems::API_REQUEST_LIMIT) do |i| - build_gem "gem#{i}" - end - - FileUtils.rm_rf Dir[gem_repo2("gems/foo-*.gem")] - end - - gemfile <<-G - source "#{source_uri}" - source "#{source_uri}/extra" do - gem "back_deps" - end - G - - bundle :install, :artifice => "endpoint_extra_missing" - expect(the_bundle).to include_gems "back_deps 1.0" - end - - it "uses the endpoint if all sources support it" do - gemfile <<-G - source "#{source_uri}" - - gem 'foo' - G - - bundle :install, :artifice => "endpoint_api_missing" - expect(the_bundle).to include_gems "foo 1.0" - end - - it "fetches again when more dependencies are found in subsequent sources using --deployment", :bundler => "< 2" do - build_repo2 do - build_gem "back_deps" do |s| - s.add_dependency "foo" - end - FileUtils.rm_rf Dir[gem_repo2("gems/foo-*.gem")] - end - - gemfile <<-G - source "#{source_uri}" - source "#{source_uri}/extra" - gem "back_deps" - G - - bundle :install, :artifice => "endpoint_extra" - - bundle "install --deployment", :artifice => "endpoint_extra" - expect(the_bundle).to include_gems "back_deps 1.0" - end - - it "fetches again when more dependencies are found in subsequent sources using --deployment with blocks" do - build_repo2 do - build_gem "back_deps" do |s| - s.add_dependency "foo" - end - FileUtils.rm_rf Dir[gem_repo2("gems/foo-*.gem")] - end - - gemfile <<-G - source "#{source_uri}" - source "#{source_uri}/extra" do - gem "back_deps" - end - G - - bundle :install, :artifice => "endpoint_extra" - - bundle "install --deployment", :artifice => "endpoint_extra" - expect(the_bundle).to include_gems "back_deps 1.0" - end - - it "does not refetch if the only unmet dependency is bundler" do - gemfile <<-G - source "#{source_uri}" - - gem "bundler_dep" - G - - bundle :install, :artifice => "endpoint" - expect(out).to include("Fetching gem metadata from #{source_uri}") - end - - it "should install when EndpointSpecification has a bin dir owned by root", :sudo => true do - sudo "mkdir -p #{system_gem_path("bin")}" - sudo "chown -R root #{system_gem_path("bin")}" - - gemfile <<-G - source "#{source_uri}" - gem "rails" - G - bundle :install, :artifice => "endpoint" - expect(the_bundle).to include_gems "rails 2.3.2" - end - - it "installs the binstubs", :bundler => "< 2" do - gemfile <<-G - source "#{source_uri}" - gem "rack" - G - - bundle "install --binstubs", :artifice => "endpoint" - - gembin "rackup" - expect(out).to eq("1.0.0") - end - - it "installs the bins when using --path and uses autoclean", :bundler => "< 2" do - gemfile <<-G - source "#{source_uri}" - gem "rack" - G - - bundle "install --path vendor/bundle", :artifice => "endpoint" - - expect(vendored_gems("bin/rackup")).to exist - end - - it "installs the bins when using --path and uses bundle clean", :bundler => "< 2" do - gemfile <<-G - source "#{source_uri}" - gem "rack" - G - - bundle "install --path vendor/bundle --no-clean", :artifice => "endpoint" - - expect(vendored_gems("bin/rackup")).to exist - end - - it "prints post_install_messages" do - gemfile <<-G - source "#{source_uri}" - gem 'rack-obama' - G - - bundle :install, :artifice => "endpoint" - expect(out).to include("Post-install message from rack:") - end - - it "should display the post install message for a dependency" do - gemfile <<-G - source "#{source_uri}" - gem 'rack_middleware' - G - - bundle :install, :artifice => "endpoint" - expect(out).to include("Post-install message from rack:") - expect(out).to include("Rack's post install message") - end - - context "when using basic authentication" do - let(:user) { "user" } - let(:password) { "pass" } - let(:basic_auth_source_uri) do - uri = URI.parse(source_uri) - uri.user = user - uri.password = password - - uri - end - - it "passes basic authentication details and strips out creds" do - gemfile <<-G - source "#{basic_auth_source_uri}" - gem "rack" - G - - bundle :install, :artifice => "endpoint_basic_authentication" - expect(out).not_to include("#{user}:#{password}") - expect(the_bundle).to include_gems "rack 1.0.0" - end - - it "strips http basic authentication creds for modern index" do - gemfile <<-G - source "#{basic_auth_source_uri}" - gem "rack" - G - - bundle :install, :artifice => "endopint_marshal_fail_basic_authentication" - expect(out).not_to include("#{user}:#{password}") - expect(the_bundle).to include_gems "rack 1.0.0" - end - - it "strips http basic auth creds when it can't reach the server" do - gemfile <<-G - source "#{basic_auth_source_uri}" - gem "rack" - G - - bundle :install, :artifice => "endpoint_500" - expect(out).not_to include("#{user}:#{password}") - end - - it "strips http basic auth creds when warning about ambiguous sources", :bundler => "< 2" do - gemfile <<-G - source "#{basic_auth_source_uri}" - source "file://#{gem_repo1}" - gem "rack" - G - - bundle :install, :artifice => "endpoint_basic_authentication" - expect(out).to include("Warning: the gem 'rack' was found in multiple sources.") - expect(out).not_to include("#{user}:#{password}") - expect(the_bundle).to include_gems "rack 1.0.0" - end - - it "does not pass the user / password to different hosts on redirect" do - gemfile <<-G - source "#{basic_auth_source_uri}" - gem "rack" - G - - bundle :install, :artifice => "endpoint_creds_diff_host" - expect(the_bundle).to include_gems "rack 1.0.0" - end - - describe "with authentication details in bundle config" do - before do - gemfile <<-G - source "#{source_uri}" - gem "rack" - G - end - - it "reads authentication details by host name from bundle config" do - bundle "config #{source_hostname} #{user}:#{password}" - - bundle :install, :artifice => "endpoint_strict_basic_authentication" - - expect(out).to include("Fetching gem metadata from #{source_uri}") - expect(the_bundle).to include_gems "rack 1.0.0" - end - - it "reads authentication details by full url from bundle config" do - # The trailing slash is necessary here; Fetcher canonicalizes the URI. - bundle "config #{source_uri}/ #{user}:#{password}" - - bundle :install, :artifice => "endpoint_strict_basic_authentication" - - expect(out).to include("Fetching gem metadata from #{source_uri}") - expect(the_bundle).to include_gems "rack 1.0.0" - end - - it "should use the API" do - bundle "config #{source_hostname} #{user}:#{password}" - bundle :install, :artifice => "endpoint_strict_basic_authentication" - expect(out).to include("Fetching gem metadata from #{source_uri}") - expect(the_bundle).to include_gems "rack 1.0.0" - end - - it "prefers auth supplied in the source uri" do - gemfile <<-G - source "#{basic_auth_source_uri}" - gem "rack" - G - - bundle "config #{source_hostname} otheruser:wrong" - - bundle :install, :artifice => "endpoint_strict_basic_authentication" - expect(the_bundle).to include_gems "rack 1.0.0" - end - - it "shows instructions if auth is not provided for the source" do - bundle :install, :artifice => "endpoint_strict_basic_authentication" - expect(out).to include("bundle config #{source_hostname} username:password") - end - - it "fails if authentication has already been provided, but failed" do - bundle "config #{source_hostname} #{user}:wrong" - - bundle :install, :artifice => "endpoint_strict_basic_authentication" - expect(out).to include("Bad username or password") - end - end - - describe "with no password" do - let(:password) { nil } - - it "passes basic authentication details" do - gemfile <<-G - source "#{basic_auth_source_uri}" - gem "rack" - G - - bundle :install, :artifice => "endpoint_basic_authentication" - expect(the_bundle).to include_gems "rack 1.0.0" - end - end - end - - context "when ruby is compiled without openssl", :ruby_repo do - before do - # Install a monkeypatch that reproduces the effects of openssl being - # missing when the fetcher runs, as happens in real life. The reason - # we can't just overwrite openssl.rb is that Artifice uses it. - bundled_app("broken_ssl").mkpath - bundled_app("broken_ssl/openssl.rb").open("w") do |f| - f.write <<-RUBY - raise LoadError, "cannot load such file -- openssl" - RUBY - end - end - - it "explains what to do to get it" do - gemfile <<-G - source "#{source_uri.gsub(/http/, "https")}" - gem "rack" - G - - bundle :install, :env => { "RUBYOPT" => "-I#{bundled_app("broken_ssl")}" } - expect(out).to include("OpenSSL") - end - end - - context "when SSL certificate verification fails" do - it "explains what happened" do - # Install a monkeypatch that reproduces the effects of openssl raising - # a certificate validation error when RubyGems tries to connect. - gemfile <<-G - class Net::HTTP - def start - raise OpenSSL::SSL::SSLError, "certificate verify failed" - end - end - - source "#{source_uri.gsub(/http/, "https")}" - gem "rack" - G - - bundle :install - expect(out).to match(/could not verify the SSL certificate/i) - end - end - - context ".gemrc with sources is present" do - before do - File.open(home(".gemrc"), "w") do |file| - file.puts({ :sources => ["https://rubygems.org"] }.to_yaml) - end - end - - after do - home(".gemrc").rmtree - end - - it "uses other sources declared in the Gemfile" do - gemfile <<-G - source "#{source_uri}" - gem 'rack' - G - - bundle "install", :artifice => "endpoint_marshal_fail" - - expect(exitstatus).to eq(0) if exitstatus - end - end -end diff --git a/spec/bundler/install/gems/env_spec.rb b/spec/bundler/install/gems/env_spec.rb deleted file mode 100644 index 0dccbbfd24..0000000000 --- a/spec/bundler/install/gems/env_spec.rb +++ /dev/null @@ -1,107 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe "bundle install with ENV conditionals" do - describe "when just setting an ENV key as a string" do - before :each do - gemfile <<-G - source "file://#{gem_repo1}" - - env "BUNDLER_TEST" do - gem "rack" - end - G - end - - it "excludes the gems when the ENV variable is not set" do - bundle :install - expect(the_bundle).not_to include_gems "rack" - end - - it "includes the gems when the ENV variable is set" do - ENV["BUNDLER_TEST"] = "1" - bundle :install - expect(the_bundle).to include_gems "rack 1.0" - end - end - - describe "when just setting an ENV key as a symbol" do - before :each do - gemfile <<-G - source "file://#{gem_repo1}" - - env :BUNDLER_TEST do - gem "rack" - end - G - end - - it "excludes the gems when the ENV variable is not set" do - bundle :install - expect(the_bundle).not_to include_gems "rack" - end - - it "includes the gems when the ENV variable is set" do - ENV["BUNDLER_TEST"] = "1" - bundle :install - expect(the_bundle).to include_gems "rack 1.0" - end - end - - describe "when setting a string to match the env" do - before :each do - gemfile <<-G - source "file://#{gem_repo1}" - - env "BUNDLER_TEST" => "foo" do - gem "rack" - end - G - end - - it "excludes the gems when the ENV variable is not set" do - bundle :install - expect(the_bundle).not_to include_gems "rack" - end - - it "excludes the gems when the ENV variable is set but does not match the condition" do - ENV["BUNDLER_TEST"] = "1" - bundle :install - expect(the_bundle).not_to include_gems "rack" - end - - it "includes the gems when the ENV variable is set and matches the condition" do - ENV["BUNDLER_TEST"] = "foo" - bundle :install - expect(the_bundle).to include_gems "rack 1.0" - end - end - - describe "when setting a regex to match the env" do - before :each do - gemfile <<-G - source "file://#{gem_repo1}" - - env "BUNDLER_TEST" => /foo/ do - gem "rack" - end - G - end - - it "excludes the gems when the ENV variable is not set" do - bundle :install - expect(the_bundle).not_to include_gems "rack" - end - - it "excludes the gems when the ENV variable is set but does not match the condition" do - ENV["BUNDLER_TEST"] = "fo" - bundle :install - expect(the_bundle).not_to include_gems "rack" - end - - it "includes the gems when the ENV variable is set and matches the condition" do - ENV["BUNDLER_TEST"] = "foobar" - bundle :install - expect(the_bundle).to include_gems "rack 1.0" - end - end -end diff --git a/spec/bundler/install/gems/flex_spec.rb b/spec/bundler/install/gems/flex_spec.rb deleted file mode 100644 index f8b40f8e4e..0000000000 --- a/spec/bundler/install/gems/flex_spec.rb +++ /dev/null @@ -1,351 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe "bundle flex_install" do - it "installs the gems as expected" do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem 'rack' - G - - expect(the_bundle).to include_gems "rack 1.0.0" - expect(the_bundle).to be_locked - end - - it "installs even when the lockfile is invalid" do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem 'rack' - G - - expect(the_bundle).to include_gems "rack 1.0.0" - expect(the_bundle).to be_locked - - gemfile <<-G - source "file://#{gem_repo1}" - gem 'rack', '1.0' - G - - bundle :install - expect(the_bundle).to include_gems "rack 1.0.0" - expect(the_bundle).to be_locked - end - - it "keeps child dependencies at the same version" do - build_repo2 - - install_gemfile <<-G - source "file://#{gem_repo2}" - gem "rack-obama" - G - - expect(the_bundle).to include_gems "rack 1.0.0", "rack-obama 1.0.0" - - update_repo2 - install_gemfile <<-G - source "file://#{gem_repo2}" - gem "rack-obama", "1.0" - G - - expect(the_bundle).to include_gems "rack 1.0.0", "rack-obama 1.0.0" - end - - describe "adding new gems" do - it "installs added gems without updating previously installed gems" do - build_repo2 - - install_gemfile <<-G - source "file://#{gem_repo2}" - gem 'rack' - G - - update_repo2 - - install_gemfile <<-G - source "file://#{gem_repo2}" - gem 'rack' - gem 'activesupport', '2.3.5' - G - - expect(the_bundle).to include_gems "rack 1.0.0", "activesupport 2.3.5" - end - - it "keeps child dependencies pinned" do - build_repo2 - - install_gemfile <<-G - source "file://#{gem_repo2}" - gem "rack-obama" - G - - update_repo2 - - install_gemfile <<-G - source "file://#{gem_repo2}" - gem "rack-obama" - gem "thin" - G - - expect(the_bundle).to include_gems "rack 1.0.0", "rack-obama 1.0", "thin 1.0" - end - end - - describe "removing gems" do - it "removes gems without changing the versions of remaining gems" do - build_repo2 - install_gemfile <<-G - source "file://#{gem_repo2}" - gem 'rack' - gem 'activesupport', '2.3.5' - G - - update_repo2 - - install_gemfile <<-G - source "file://#{gem_repo2}" - gem 'rack' - G - - expect(the_bundle).to include_gems "rack 1.0.0" - expect(the_bundle).not_to include_gems "activesupport 2.3.5" - - install_gemfile <<-G - source "file://#{gem_repo2}" - gem 'rack' - gem 'activesupport', '2.3.2' - G - - expect(the_bundle).to include_gems "rack 1.0.0", "activesupport 2.3.2" - end - - it "removes top level dependencies when removed from the Gemfile while leaving other dependencies intact" do - build_repo2 - install_gemfile <<-G - source "file://#{gem_repo2}" - gem 'rack' - gem 'activesupport', '2.3.5' - G - - update_repo2 - - install_gemfile <<-G - source "file://#{gem_repo2}" - gem 'rack' - G - - expect(the_bundle).not_to include_gems "activesupport 2.3.5" - end - - it "removes child dependencies" do - build_repo2 - install_gemfile <<-G - source "file://#{gem_repo2}" - gem 'rack-obama' - gem 'activesupport' - G - - expect(the_bundle).to include_gems "rack 1.0.0", "rack-obama 1.0.0", "activesupport 2.3.5" - - update_repo2 - install_gemfile <<-G - source "file://#{gem_repo2}" - gem 'activesupport' - G - - expect(the_bundle).to include_gems "activesupport 2.3.5" - expect(the_bundle).not_to include_gems "rack-obama", "rack" - end - end - - describe "when Gemfile conflicts with lockfile" do - before(:each) do - build_repo2 - install_gemfile <<-G - source "file://#{gem_repo2}" - gem "rack_middleware" - G - - expect(the_bundle).to include_gems "rack_middleware 1.0", "rack 0.9.1" - - build_repo2 - update_repo2 do - build_gem "rack-obama", "2.0" do |s| - s.add_dependency "rack", "=1.2" - end - build_gem "rack_middleware", "2.0" do |s| - s.add_dependency "rack", ">=1.0" - end - end - - gemfile <<-G - source "file://#{gem_repo2}" - gem "rack-obama", "2.0" - gem "rack_middleware" - G - end - - it "does not install gems whose dependencies are not met" do - bundle :install - ruby <<-RUBY - require 'bundler/setup' - RUBY - expect(err).to match(/could not find gem 'rack-obama/i) - end - - it "suggests bundle update when the Gemfile requires different versions than the lock" do - nice_error = <<-E.strip.gsub(/^ {8}/, "") - Bundler could not find compatible versions for gem "rack": - In snapshot (Gemfile.lock): - rack (= 0.9.1) - - In Gemfile: - rack-obama (= 2.0) was resolved to 2.0, which depends on - rack (= 1.2) - - rack_middleware was resolved to 1.0, which depends on - rack (= 0.9.1) - - Running `bundle update` will rebuild your snapshot from scratch, using only - the gems in your Gemfile, which may resolve the conflict. - E - - bundle :install, :retry => 0 - expect(last_command.bundler_err).to end_with(nice_error) - end - end - - describe "subtler cases" do - before :each do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - gem "rack-obama" - G - - gemfile <<-G - source "file://#{gem_repo1}" - gem "rack", "0.9.1" - gem "rack-obama" - G - end - - it "does something" do - expect do - bundle "install" - end.not_to change { File.read(bundled_app("Gemfile.lock")) } - - expect(out).to include("rack = 0.9.1") - expect(out).to include("locked at 1.0.0") - expect(out).to include("bundle update rack") - end - - it "should work when you update" do - bundle "update rack" - end - end - - describe "when adding a new source" do - it "updates the lockfile", :bundler => "< 2" do - build_repo2 - install_gemfile! <<-G - source "file://localhost#{gem_repo1}" - gem "rack" - G - install_gemfile! <<-G - source "file://localhost#{gem_repo1}" - source "file://localhost#{gem_repo2}" - gem "rack" - G - - lockfile_should_be <<-L - GEM - remote: file://localhost#{gem_repo1}/ - remote: file://localhost#{gem_repo2}/ - specs: - rack (1.0.0) - - PLATFORMS - ruby - - DEPENDENCIES - rack - - BUNDLED WITH - #{Bundler::VERSION} - L - end - - it "updates the lockfile", :bundler => "2" do - build_repo2 - install_gemfile! <<-G - source "file://#{gem_repo1}" - gem "rack" - G - - install_gemfile! <<-G - source "file://#{gem_repo1}" - source "file://#{gem_repo2}" do - end - gem "rack" - G - - lockfile_should_be <<-L - GEM - remote: file:#{gem_repo1}/ - specs: - rack (1.0.0) - - GEM - remote: file:#{gem_repo2}/ - specs: - - PLATFORMS - #{lockfile_platforms} - - DEPENDENCIES - rack - - BUNDLED WITH - #{Bundler::VERSION} - L - end - end - - # This was written to test github issue #636 - describe "when a locked child dependency conflicts" do - before(:each) do - build_repo2 do - build_gem "capybara", "0.3.9" do |s| - s.add_dependency "rack", ">= 1.0.0" - end - - build_gem "rack", "1.1.0" - build_gem "rails", "3.0.0.rc4" do |s| - s.add_dependency "rack", "~> 1.1.0" - end - - build_gem "rack", "1.2.1" - build_gem "rails", "3.0.0" do |s| - s.add_dependency "rack", "~> 1.2.1" - end - end - end - - it "prints the correct error message" do - # install Rails 3.0.0.rc - install_gemfile <<-G - source "file://#{gem_repo2}" - gem "rails", "3.0.0.rc4" - gem "capybara", "0.3.9" - G - - # upgrade Rails to 3.0.0 and then install again - install_gemfile <<-G - source "file://#{gem_repo2}" - gem "rails", "3.0.0" - gem "capybara", "0.3.9" - G - - expect(out).to include("Gemfile.lock") - end - end -end diff --git a/spec/bundler/install/gems/mirror_spec.rb b/spec/bundler/install/gems/mirror_spec.rb deleted file mode 100644 index 89302615f1..0000000000 --- a/spec/bundler/install/gems/mirror_spec.rb +++ /dev/null @@ -1,39 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe "bundle install with a mirror configured" do - describe "when the mirror does not match the gem source" do - before :each do - gemfile <<-G - source "file://localhost#{gem_repo1}" - - gem "rack" - G - bundle "config --local mirror.http://gems.example.org http://gem-mirror.example.org" - end - - it "installs from the normal location" do - bundle :install - expect(out).to include("Fetching source index from file://localhost#{gem_repo1}") - expect(the_bundle).to include_gems "rack 1.0" - end - end - - describe "when the gem source matches a configured mirror" do - before :each do - gemfile <<-G - # This source is bogus and doesn't have the gem we're looking for - source "file://localhost#{gem_repo2}" - - gem "rack" - G - bundle "config --local mirror.file://localhost#{gem_repo2} file://localhost#{gem_repo1}" - end - - it "installs the gem from the mirror" do - bundle :install - expect(out).to include("Fetching source index from file://localhost#{gem_repo1}") - expect(out).not_to include("Fetching source index from file://localhost#{gem_repo2}") - expect(the_bundle).to include_gems "rack 1.0" - end - end -end diff --git a/spec/bundler/install/gems/native_extensions_spec.rb b/spec/bundler/install/gems/native_extensions_spec.rb deleted file mode 100644 index ea616f60d3..0000000000 --- a/spec/bundler/install/gems/native_extensions_spec.rb +++ /dev/null @@ -1,90 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe "installing a gem with native extensions", :ruby_repo do - it "installs" do - build_repo2 do - build_gem "c_extension" do |s| - s.extensions = ["ext/extconf.rb"] - s.write "ext/extconf.rb", <<-E - require "mkmf" - name = "c_extension_bundle" - dir_config(name) - raise "OMG" unless with_config("c_extension") == "hello" - create_makefile(name) - E - - s.write "ext/c_extension.c", <<-C - #include "ruby.h" - - VALUE c_extension_true(VALUE self) { - return Qtrue; - } - - void Init_c_extension_bundle() { - VALUE c_Extension = rb_define_class("CExtension", rb_cObject); - rb_define_method(c_Extension, "its_true", c_extension_true, 0); - } - C - - s.write "lib/c_extension.rb", <<-C - require "c_extension_bundle" - C - end - end - - gemfile <<-G - source "file://#{gem_repo2}" - gem "c_extension" - G - - bundle "config build.c_extension --with-c_extension=hello" - bundle "install" - - expect(out).not_to include("extconf.rb failed") - expect(out).to include("Installing c_extension 1.0 with native extensions") - - run "Bundler.require; puts CExtension.new.its_true" - expect(out).to eq("true") - end - - it "installs from git" do - build_git "c_extension" do |s| - s.extensions = ["ext/extconf.rb"] - s.write "ext/extconf.rb", <<-E - require "mkmf" - name = "c_extension_bundle" - dir_config(name) - raise "OMG" unless with_config("c_extension") == "hello" - create_makefile(name) - E - - s.write "ext/c_extension.c", <<-C - #include "ruby.h" - - VALUE c_extension_true(VALUE self) { - return Qtrue; - } - - void Init_c_extension_bundle() { - VALUE c_Extension = rb_define_class("CExtension", rb_cObject); - rb_define_method(c_Extension, "its_true", c_extension_true, 0); - } - C - - s.write "lib/c_extension.rb", <<-C - require "c_extension_bundle" - C - end - - bundle! "config build.c_extension --with-c_extension=hello" - - install_gemfile! <<-G - gem "c_extension", :git => #{lib_path("c_extension-1.0").to_s.dump} - G - - expect(out).not_to include("extconf.rb failed") - - run! "Bundler.require; puts CExtension.new.its_true" - expect(out).to eq("true") - end -end diff --git a/spec/bundler/install/gems/post_install_spec.rb b/spec/bundler/install/gems/post_install_spec.rb deleted file mode 100644 index c6e348fb65..0000000000 --- a/spec/bundler/install/gems/post_install_spec.rb +++ /dev/null @@ -1,150 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe "bundle install" do - context "with gem sources" do - context "when gems include post install messages" do - it "should display the post-install messages after installing" do - gemfile <<-G - source "file://#{gem_repo1}" - gem 'rack' - gem 'thin' - gem 'rack-obama' - G - - bundle :install - expect(out).to include("Post-install message from rack:") - expect(out).to include("Rack's post install message") - expect(out).to include("Post-install message from thin:") - expect(out).to include("Thin's post install message") - expect(out).to include("Post-install message from rack-obama:") - expect(out).to include("Rack-obama's post install message") - end - end - - context "when gems do not include post install messages" do - it "should not display any post-install messages" do - gemfile <<-G - source "file://#{gem_repo1}" - gem "activesupport" - G - - bundle :install - expect(out).not_to include("Post-install message") - end - end - - context "when a dependecy includes a post install message" do - it "should display the post install message" do - gemfile <<-G - source "file://#{gem_repo1}" - gem 'rack_middleware' - G - - bundle :install - expect(out).to include("Post-install message from rack:") - expect(out).to include("Rack's post install message") - end - end - end - - context "with git sources" do - context "when gems include post install messages" do - it "should display the post-install messages after installing" do - build_git "foo" do |s| - s.post_install_message = "Foo's post install message" - end - gemfile <<-G - source "file://#{gem_repo1}" - gem 'foo', :git => '#{lib_path("foo-1.0")}' - G - - bundle :install - expect(out).to include("Post-install message from foo:") - expect(out).to include("Foo's post install message") - end - - it "should display the post-install messages if repo is updated" do - build_git "foo" do |s| - s.post_install_message = "Foo's post install message" - end - gemfile <<-G - source "file://#{gem_repo1}" - gem 'foo', :git => '#{lib_path("foo-1.0")}' - G - bundle :install - - build_git "foo", "1.1" do |s| - s.post_install_message = "Foo's 1.1 post install message" - end - gemfile <<-G - source "file://#{gem_repo1}" - gem 'foo', :git => '#{lib_path("foo-1.1")}' - G - bundle :install - - expect(out).to include("Post-install message from foo:") - expect(out).to include("Foo's 1.1 post install message") - end - - it "should not display the post-install messages if repo is not updated" do - build_git "foo" do |s| - s.post_install_message = "Foo's post install message" - end - gemfile <<-G - source "file://#{gem_repo1}" - gem 'foo', :git => '#{lib_path("foo-1.0")}' - G - - bundle :install - expect(out).to include("Post-install message from foo:") - expect(out).to include("Foo's post install message") - - bundle :install - expect(out).not_to include("Post-install message") - end - end - - context "when gems do not include post install messages" do - it "should not display any post-install messages" do - build_git "foo" do |s| - s.post_install_message = nil - end - gemfile <<-G - source "file://#{gem_repo1}" - gem 'foo', :git => '#{lib_path("foo-1.0")}' - G - - bundle :install - expect(out).not_to include("Post-install message") - end - end - end - - context "when ignore post-install messages for gem is set" do - it "doesn't display any post-install messages" do - gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - G - - bundle "config ignore_messages.rack true" - - bundle :install - expect(out).not_to include("Post-install message") - end - end - - context "when ignore post-install messages for all gems" do - it "doesn't display any post-install messages" do - gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - G - - bundle "config ignore_messages true" - - bundle :install - expect(out).not_to include("Post-install message") - end - end -end diff --git a/spec/bundler/install/gems/resolving_spec.rb b/spec/bundler/install/gems/resolving_spec.rb deleted file mode 100644 index 23e3caaefc..0000000000 --- a/spec/bundler/install/gems/resolving_spec.rb +++ /dev/null @@ -1,194 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe "bundle install with install-time dependencies" do - it "installs gems with implicit rake dependencies", :ruby_repo do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "with_implicit_rake_dep" - gem "another_implicit_rake_dep" - gem "rake" - G - - run <<-R - require 'implicit_rake_dep' - require 'another_implicit_rake_dep' - puts IMPLICIT_RAKE_DEP - puts ANOTHER_IMPLICIT_RAKE_DEP - R - expect(out).to eq("YES\nYES") - end - - it "installs gems with a dependency with no type" do - build_repo2 - - path = "#{gem_repo2}/#{Gem::MARSHAL_SPEC_DIR}/actionpack-2.3.2.gemspec.rz" - spec = Marshal.load(Gem.inflate(File.read(path))) - spec.dependencies.each do |d| - d.instance_variable_set(:@type, :fail) - end - File.open(path, "w") do |f| - f.write Gem.deflate(Marshal.dump(spec)) - end - - install_gemfile <<-G - source "file://#{gem_repo2}" - gem "actionpack", "2.3.2" - G - - expect(the_bundle).to include_gems "actionpack 2.3.2", "activesupport 2.3.2" - end - - describe "with crazy rubygem plugin stuff" do - it "installs plugins" do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "net_b" - G - - expect(the_bundle).to include_gems "net_b 1.0" - end - - it "installs plugins depended on by other plugins", :ruby_repo do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "net_a" - G - - expect(the_bundle).to include_gems "net_a 1.0", "net_b 1.0" - end - - it "installs multiple levels of dependencies", :ruby_repo do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "net_c" - gem "net_e" - G - - expect(the_bundle).to include_gems "net_a 1.0", "net_b 1.0", "net_c 1.0", "net_d 1.0", "net_e 1.0" - end - - context "with ENV['DEBUG_RESOLVER'] set" do - it "produces debug output" do - gemfile <<-G - source "file://#{gem_repo1}" - gem "net_c" - gem "net_e" - G - - bundle :install, :env => { "DEBUG_RESOLVER" => "1" } - - expect(err).to include("Creating possibility state for net_c") - end - end - - context "with ENV['DEBUG_RESOLVER_TREE'] set" do - it "produces debug output" do - gemfile <<-G - source "file://#{gem_repo1}" - gem "net_c" - gem "net_e" - G - - bundle :install, :env => { "DEBUG_RESOLVER_TREE" => "1" } - - expect(err).to include(" net_b"). - and include("Starting resolution"). - and include("Finished resolution"). - and include("Attempting to activate") - end - end - end - - describe "when a required ruby version" do - context "allows only an older version" do - it "installs the older version" do - build_repo2 do - build_gem "rack", "9001.0.0" do |s| - s.required_ruby_version = "> 9000" - end - end - - install_gemfile <<-G, :artifice => "compact_index", :env => { "BUNDLER_SPEC_GEM_REPO" => gem_repo2 } - ruby "#{RUBY_VERSION}" - source "http://localgemserver.test/" - gem 'rack' - G - - expect(out).to_not include("rack-9001.0.0 requires ruby version > 9000") - expect(the_bundle).to include_gems("rack 1.2") - end - end - - context "allows no gems" do - before do - build_repo2 do - build_gem "require_ruby" do |s| - s.required_ruby_version = "> 9000" - end - end - end - - let(:ruby_requirement) { %("#{RUBY_VERSION}") } - let(:error_message_requirement) { "~> #{RUBY_VERSION}.0" } - - shared_examples_for "ruby version conflicts" do - it "raises an error during resolution" do - install_gemfile <<-G, :artifice => "compact_index", :env => { "BUNDLER_SPEC_GEM_REPO" => gem_repo2 } - source "http://localgemserver.test/" - ruby #{ruby_requirement} - gem 'require_ruby' - G - - expect(out).to_not include("Gem::InstallError: require_ruby requires Ruby version > 9000") - - nice_error = strip_whitespace(<<-E).strip - Bundler could not find compatible versions for gem "ruby\0": - In Gemfile: - ruby\0 (#{error_message_requirement}) - - require_ruby was resolved to 1.0, which depends on - ruby\0 (> 9000) - - Could not find gem 'ruby\0 (> 9000)', which is required by gem 'require_ruby', in any of the relevant sources: - the local ruby installation - E - expect(last_command.bundler_err).to end_with(nice_error) - end - end - - it_behaves_like "ruby version conflicts" - - describe "with a < requirement" do - let(:ruby_requirement) { %("< 5000") } - let(:error_message_requirement) { "< 5000" } - - it_behaves_like "ruby version conflicts" - end - - describe "with a compound requirement" do - let(:ruby_requirement) { %("< 5000", "> 0.1") } - let(:error_message_requirement) { "< 5000, > 0.1" } - - it_behaves_like "ruby version conflicts" - end - end - end - - describe "when a required rubygems version disallows a gem" do - it "does not try to install those gems" do - build_repo2 do - build_gem "require_rubygems" do |s| - s.required_rubygems_version = "> 9000" - end - end - - install_gemfile <<-G - source "file://#{gem_repo2}" - gem 'require_rubygems' - G - - expect(out).to_not include("Gem::InstallError: require_rubygems requires RubyGems version > 9000") - expect(out).to include("require_rubygems-1.0 requires rubygems version > 9000, which is incompatible with the current version, #{Gem::VERSION}") - end - end -end diff --git a/spec/bundler/install/gems/standalone_spec.rb b/spec/bundler/install/gems/standalone_spec.rb deleted file mode 100644 index 551f07848d..0000000000 --- a/spec/bundler/install/gems/standalone_spec.rb +++ /dev/null @@ -1,321 +0,0 @@ -# frozen_string_literal: true - -RSpec.shared_examples "bundle install --standalone" do - shared_examples "common functionality" do - it "still makes the gems available to normal bundler" do - args = expected_gems.map {|k, v| "#{k} #{v}" } - expect(the_bundle).to include_gems(*args) - end - - it "generates a bundle/bundler/setup.rb" do - expect(bundled_app("bundle/bundler/setup.rb")).to exist - end - - it "makes the gems available without bundler" do - testrb = String.new <<-RUBY - $:.unshift File.expand_path("bundle") - require "bundler/setup" - - RUBY - expected_gems.each do |k, _| - testrb << "\nrequire \"#{k}\"" - testrb << "\nputs #{k.upcase}" - end - Dir.chdir(bundled_app) do - ruby testrb, :no_lib => true - end - - expect(out).to eq(expected_gems.values.join("\n")) - end - - it "works on a different system" do - FileUtils.mv(bundled_app, "#{bundled_app}2") - - testrb = String.new <<-RUBY - $:.unshift File.expand_path("bundle") - require "bundler/setup" - - RUBY - expected_gems.each do |k, _| - testrb << "\nrequire \"#{k}\"" - testrb << "\nputs #{k.upcase}" - end - Dir.chdir("#{bundled_app}2") do - ruby testrb, :no_lib => true - end - - expect(out).to eq(expected_gems.values.join("\n")) - end - end - - describe "with simple gems" do - before do - gemfile <<-G - source "file://#{gem_repo1}" - gem "rails" - G - bundle! :install, forgotten_command_line_options(:path => "bundle").merge(:standalone => true) - end - - let(:expected_gems) do - { - "actionpack" => "2.3.2", - "rails" => "2.3.2", - } - end - - include_examples "common functionality" - end - - describe "with gems with native extension", :ruby_repo do - before do - install_gemfile <<-G, forgotten_command_line_options(:path => "bundle").merge(:standalone => true) - source "file://#{gem_repo1}" - gem "very_simple_binary" - G - end - - it "generates a bundle/bundler/setup.rb with the proper paths", :rubygems => "2.4" do - extension_line = File.read(bundled_app("bundle/bundler/setup.rb")).each_line.find {|line| line.include? "/extensions/" }.strip - expect(extension_line).to start_with '$:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/extensions/' - expect(extension_line).to end_with '/very_simple_binary-1.0"' - end - end - - describe "with gem that has an invalid gemspec" do - before do - build_git "bar", :gemspec => false do |s| - s.write "lib/bar/version.rb", %(BAR_VERSION = '1.0') - s.write "bar.gemspec", <<-G - lib = File.expand_path('../lib/', __FILE__) - $:.unshift lib unless $:.include?(lib) - require 'bar/version' - - Gem::Specification.new do |s| - s.name = 'bar' - s.version = BAR_VERSION - s.summary = 'Bar' - s.files = Dir["lib/**/*.rb"] - s.author = 'Anonymous' - s.require_path = [1,2] - end - G - end - install_gemfile <<-G, forgotten_command_line_options(:path => "bundle").merge(:standalone => true) - gem "bar", :git => "#{lib_path("bar-1.0")}" - G - end - - it "outputs a helpful error message" do - expect(out).to include("You have one or more invalid gemspecs that need to be fixed.") - expect(out).to include("bar 1.0 has an invalid gemspec") - end - end - - describe "with a combination of gems and git repos" do - before do - build_git "devise", "1.0" - - gemfile <<-G - source "file://#{gem_repo1}" - gem "rails" - gem "devise", :git => "#{lib_path("devise-1.0")}" - G - bundle! :install, forgotten_command_line_options(:path => "bundle").merge(:standalone => true) - end - - let(:expected_gems) do - { - "actionpack" => "2.3.2", - "devise" => "1.0", - "rails" => "2.3.2", - } - end - - include_examples "common functionality" - end - - describe "with groups" do - before do - build_git "devise", "1.0" - - gemfile <<-G - source "file://#{gem_repo1}" - gem "rails" - - group :test do - gem "rspec" - gem "rack-test" - end - G - bundle! :install, forgotten_command_line_options(:path => "bundle").merge(:standalone => true) - end - - let(:expected_gems) do - { - "actionpack" => "2.3.2", - "rails" => "2.3.2", - } - end - - include_examples "common functionality" - - it "allows creating a standalone file with limited groups" do - bundle! "install", forgotten_command_line_options(:path => "bundle").merge(:standalone => "default") - - Dir.chdir(bundled_app) do - load_error_ruby <<-RUBY, "spec", :no_lib => true - $:.unshift File.expand_path("bundle") - require "bundler/setup" - - require "actionpack" - puts ACTIONPACK - require "spec" - RUBY - end - - expect(last_command.stdout).to eq("2.3.2") - expect(last_command.stderr).to eq("ZOMG LOAD ERROR") - end - - it "allows --without to limit the groups used in a standalone" do - bundle! :install, forgotten_command_line_options(:path => "bundle", :without => "test").merge(:standalone => true) - - Dir.chdir(bundled_app) do - load_error_ruby <<-RUBY, "spec", :no_lib => true - $:.unshift File.expand_path("bundle") - require "bundler/setup" - - require "actionpack" - puts ACTIONPACK - require "spec" - RUBY - end - - expect(last_command.stdout).to eq("2.3.2") - expect(last_command.stderr).to eq("ZOMG LOAD ERROR") - end - - it "allows --path to change the location of the standalone bundle" do - bundle! "install", forgotten_command_line_options(:path => "path/to/bundle").merge(:standalone => true) - - Dir.chdir(bundled_app) do - ruby <<-RUBY, :no_lib => true - $:.unshift File.expand_path("path/to/bundle") - require "bundler/setup" - - require "actionpack" - puts ACTIONPACK - RUBY - end - - expect(last_command.stdout).to eq("2.3.2") - end - - it "allows remembered --without to limit the groups used in a standalone" do - bundle! :install, forgotten_command_line_options(:without => "test") - bundle! :install, forgotten_command_line_options(:path => "bundle").merge(:standalone => true) - - Dir.chdir(bundled_app) do - load_error_ruby <<-RUBY, "spec", :no_lib => true - $:.unshift File.expand_path("bundle") - require "bundler/setup" - - require "actionpack" - puts ACTIONPACK - require "spec" - RUBY - end - - expect(last_command.stdout).to eq("2.3.2") - expect(last_command.stderr).to eq("ZOMG LOAD ERROR") - end - end - - describe "with gemcutter's dependency API" do - let(:source_uri) { "http://localgemserver.test" } - - describe "simple gems" do - before do - gemfile <<-G - source "#{source_uri}" - gem "rails" - G - bundle! :install, forgotten_command_line_options(:path => "bundle").merge(:standalone => true, :artifice => "endpoint") - end - - let(:expected_gems) do - { - "actionpack" => "2.3.2", - "rails" => "2.3.2", - } - end - - include_examples "common functionality" - end - end - - describe "with --binstubs", :bundler => "< 2" do - before do - gemfile <<-G - source "file://#{gem_repo1}" - gem "rails" - G - bundle! :install, forgotten_command_line_options(:path => "bundle").merge(:standalone => true, :binstubs => true) - end - - let(:expected_gems) do - { - "actionpack" => "2.3.2", - "rails" => "2.3.2", - } - end - - include_examples "common functionality" - - it "creates stubs that use the standalone load path" do - Dir.chdir(bundled_app) do - expect(`bin/rails -v`.chomp).to eql "2.3.2" - end - end - - it "creates stubs that can be executed from anywhere" do - require "tmpdir" - Dir.chdir(Dir.tmpdir) do - sys_exec!(%(#{bundled_app("bin/rails")} -v)) - expect(out).to eq("2.3.2") - end - end - - it "creates stubs that can be symlinked" do - pending "File.symlink is unsupported on Windows" if Bundler::WINDOWS - - symlink_dir = tmp("symlink") - FileUtils.mkdir_p(symlink_dir) - symlink = File.join(symlink_dir, "rails") - - File.symlink(bundled_app("bin/rails"), symlink) - sys_exec!("#{symlink} -v") - expect(out).to eq("2.3.2") - end - - it "creates stubs with the correct load path" do - extension_line = File.read(bundled_app("bin/rails")).each_line.find {|line| line.include? "$:.unshift" }.strip - expect(extension_line).to eq %($:.unshift File.expand_path "../../bundle", path.realpath) - end - end -end - -RSpec.describe "bundle install --standalone" do - include_examples("bundle install --standalone") -end - -RSpec.describe "bundle install --standalone run in a subdirectory" do - before do - subdir = bundled_app("bob") - FileUtils.mkdir_p(subdir) - Dir.chdir(subdir) - end - - include_examples("bundle install --standalone") -end diff --git a/spec/bundler/install/gems/sudo_spec.rb b/spec/bundler/install/gems/sudo_spec.rb deleted file mode 100644 index ae94eee9c6..0000000000 --- a/spec/bundler/install/gems/sudo_spec.rb +++ /dev/null @@ -1,174 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe "when using sudo", :sudo => true do - describe "and BUNDLE_PATH is writable" do - context "but BUNDLE_PATH/build_info is not writable" do - before do - bundle! "config path.system true" - subdir = system_gem_path("cache") - subdir.mkpath - sudo "chmod u-w #{subdir}" - end - - it "installs" do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - G - - expect(out).to_not match(/an error occurred/i) - expect(system_gem_path("cache/rack-1.0.0.gem")).to exist - expect(the_bundle).to include_gems "rack 1.0" - end - end - end - - describe "and GEM_HOME is owned by root" do - before :each do - bundle! "config path.system true" - chown_system_gems_to_root - end - - it "installs" do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "rack", '1.0' - gem "thin" - G - - expect(system_gem_path("gems/rack-1.0.0")).to exist - expect(system_gem_path("gems/rack-1.0.0").stat.uid).to eq(0) - expect(the_bundle).to include_gems "rack 1.0" - end - - it "installs rake and a gem dependent on rake in the same session" do - gemfile <<-G - source "file://#{gem_repo1}" - gem "rake" - gem "another_implicit_rake_dep" - G - bundle "install" - expect(system_gem_path("gems/another_implicit_rake_dep-1.0")).to exist - end - - it "installs when BUNDLE_PATH is owned by root" do - bundle_path = tmp("owned_by_root") - FileUtils.mkdir_p bundle_path - sudo "chown -R root #{bundle_path}" - - ENV["BUNDLE_PATH"] = bundle_path.to_s - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "rack", '1.0' - G - - expect(bundle_path.join("gems/rack-1.0.0")).to exist - expect(bundle_path.join("gems/rack-1.0.0").stat.uid).to eq(0) - expect(the_bundle).to include_gems "rack 1.0" - end - - it "installs when BUNDLE_PATH does not exist" do - root_path = tmp("owned_by_root") - FileUtils.mkdir_p root_path - sudo "chown -R root #{root_path}" - bundle_path = root_path.join("does_not_exist") - - ENV["BUNDLE_PATH"] = bundle_path.to_s - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "rack", '1.0' - G - - expect(bundle_path.join("gems/rack-1.0.0")).to exist - expect(bundle_path.join("gems/rack-1.0.0").stat.uid).to eq(0) - expect(the_bundle).to include_gems "rack 1.0" - end - - it "installs extensions/ compiled by RubyGems 2.2", :rubygems => "2.2" do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "very_simple_binary" - G - - expect(system_gem_path("gems/very_simple_binary-1.0")).to exist - binary_glob = system_gem_path("extensions/*/*/very_simple_binary-1.0") - expect(Dir.glob(binary_glob).first).to be - end - end - - describe "and BUNDLE_PATH is not writable" do - before do - sudo "chmod ugo-w #{default_bundle_path}" - end - - it "installs" do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "rack", '1.0' - G - - expect(default_bundle_path("gems/rack-1.0.0")).to exist - expect(the_bundle).to include_gems "rack 1.0" - end - - it "cleans up the tmpdirs generated" do - require "tmpdir" - Dir.glob("#{Dir.tmpdir}/bundler*").each do |tmpdir| - FileUtils.remove_entry_secure(tmpdir) - end - - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - G - tmpdirs = Dir.glob("#{Dir.tmpdir}/bundler*") - - expect(tmpdirs).to be_empty - end - end - - describe "and GEM_HOME is not writable" do - it "installs" do - bundle! "config path.system true" - gem_home = tmp("sudo_gem_home") - sudo "mkdir -p #{gem_home}" - sudo "chmod ugo-w #{gem_home}" - - gemfile <<-G - source "file://#{gem_repo1}" - gem "rack", '1.0' - G - - bundle :install, :env => { "GEM_HOME" => gem_home.to_s, "GEM_PATH" => nil } - expect(gem_home.join("bin/rackup")).to exist - expect(the_bundle).to include_gems "rack 1.0", :env => { "GEM_HOME" => gem_home.to_s, "GEM_PATH" => nil } - end - end - - describe "and root runs install" do - let(:warning) { "Don't run Bundler as root." } - - before do - gemfile %(source "file://#{gem_repo1}") - end - - it "warns against that" do - bundle :install, :sudo => true - expect(out).to include(warning) - end - - context "when ENV['BUNDLE_SILENCE_ROOT_WARNING'] is set" do - it "skips the warning" do - bundle :install, :sudo => :preserve_env, :env => { "BUNDLE_SILENCE_ROOT_WARNING" => true } - expect(out).to_not include(warning) - end - end - - context "when silence_root_warning = false" do - it "warns against that" do - bundle :install, :sudo => true, :env => { "BUNDLE_SILENCE_ROOT_WARNING" => "false" } - expect(out).to include(warning) - end - end - end -end diff --git a/spec/bundler/install/gems/win32_spec.rb b/spec/bundler/install/gems/win32_spec.rb deleted file mode 100644 index ad758b94fa..0000000000 --- a/spec/bundler/install/gems/win32_spec.rb +++ /dev/null @@ -1,26 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe "bundle install with win32-generated lockfile" do - it "should read lockfile" do - File.open(bundled_app("Gemfile.lock"), "wb") do |f| - f << "GEM\r\n" - f << " remote: file:#{gem_repo1}/\r\n" - f << " specs:\r\n" - f << "\r\n" - f << " rack (1.0.0)\r\n" - f << "\r\n" - f << "PLATFORMS\r\n" - f << " ruby\r\n" - f << "\r\n" - f << "DEPENDENCIES\r\n" - f << " rack\r\n" - end - - install_gemfile <<-G - source "file://#{gem_repo1}" - - gem "rack" - G - expect(exitstatus).to eq(0) if exitstatus - end -end diff --git a/spec/bundler/install/gemspecs_spec.rb b/spec/bundler/install/gemspecs_spec.rb deleted file mode 100644 index 0c1ed99097..0000000000 --- a/spec/bundler/install/gemspecs_spec.rb +++ /dev/null @@ -1,109 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe "bundle install" do - describe "when a gem has a YAML gemspec" do - before :each do - build_repo2 do - build_gem "yaml_spec", :gemspec => :yaml - end - end - - it "still installs correctly" do - gemfile <<-G - source "file://#{gem_repo2}" - gem "yaml_spec" - G - bundle :install - expect(err).to lack_errors - end - - it "still installs correctly when using path" do - build_lib "yaml_spec", :gemspec => :yaml - - install_gemfile <<-G - gem 'yaml_spec', :path => "#{lib_path("yaml_spec-1.0")}" - G - expect(err).to lack_errors - end - end - - it "should use gemspecs in the system cache when available" do - gemfile <<-G - source "http://localtestserver.gem" - gem 'rack' - G - - FileUtils.mkdir_p "#{default_bundle_path}/specifications" - File.open("#{default_bundle_path}/specifications/rack-1.0.0.gemspec", "w+") do |f| - spec = Gem::Specification.new do |s| - s.name = "rack" - s.version = "1.0.0" - s.add_runtime_dependency "activesupport", "2.3.2" - end - f.write spec.to_ruby - end - bundle :install, :artifice => "endpoint_marshal_fail" # force gemspec load - expect(the_bundle).to include_gems "activesupport 2.3.2" - end - - context "when ruby version is specified in gemspec and gemfile" do - it "installs when patch level is not specified and the version matches" do - build_lib("foo", :path => bundled_app) do |s| - s.required_ruby_version = "~> #{RUBY_VERSION}.0" - end - - install_gemfile <<-G - ruby '#{RUBY_VERSION}', :engine_version => '#{RUBY_VERSION}', :engine => 'ruby' - gemspec - G - expect(the_bundle).to include_gems "foo 1.0" - end - - it "installs when patch level is specified and the version still matches the current version", - :if => RUBY_PATCHLEVEL >= 0 do - build_lib("foo", :path => bundled_app) do |s| - s.required_ruby_version = "#{RUBY_VERSION}.#{RUBY_PATCHLEVEL}" - end - - install_gemfile <<-G - ruby '#{RUBY_VERSION}', :engine_version => '#{RUBY_VERSION}', :engine => 'ruby', :patchlevel => '#{RUBY_PATCHLEVEL}' - gemspec - G - expect(the_bundle).to include_gems "foo 1.0" - end - - it "fails and complains about patchlevel on patchlevel mismatch", - :if => RUBY_PATCHLEVEL >= 0 do - patchlevel = RUBY_PATCHLEVEL.to_i + 1 - build_lib("foo", :path => bundled_app) do |s| - s.required_ruby_version = "#{RUBY_VERSION}.#{patchlevel}" - end - - install_gemfile <<-G - ruby '#{RUBY_VERSION}', :engine_version => '#{RUBY_VERSION}', :engine => 'ruby', :patchlevel => '#{patchlevel}' - gemspec - G - - expect(out).to include("Ruby patchlevel") - expect(out).to include("but your Gemfile specified") - expect(exitstatus).to eq(18) if exitstatus - end - - it "fails and complains about version on version mismatch" do - version = Gem::Requirement.create(RUBY_VERSION).requirements.first.last.bump.version - - build_lib("foo", :path => bundled_app) do |s| - s.required_ruby_version = version - end - - install_gemfile <<-G - ruby '#{version}', :engine_version => '#{version}', :engine => 'ruby' - gemspec - G - - expect(out).to include("Ruby version") - expect(out).to include("but your Gemfile specified") - expect(exitstatus).to eq(18) if exitstatus - end - end -end diff --git a/spec/bundler/install/git_spec.rb b/spec/bundler/install/git_spec.rb deleted file mode 100644 index 6ae718c2a4..0000000000 --- a/spec/bundler/install/git_spec.rb +++ /dev/null @@ -1,65 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe "bundle install" do - context "git sources" do - it "displays the revision hash of the gem repository", :bundler => "< 2" do - build_git "foo", "1.0", :path => lib_path("foo") - - install_gemfile <<-G - gem "foo", :git => "#{lib_path("foo")}" - G - - bundle! :install - expect(out).to include("Using foo 1.0 from #{lib_path("foo")} (at master@#{revision_for(lib_path("foo"))[0..6]})") - expect(the_bundle).to include_gems "foo 1.0", :source => "git@#{lib_path("foo")}" - end - - it "displays the ref of the gem repository when using branch~num as a ref", :bundler => "< 2" do - build_git "foo", "1.0", :path => lib_path("foo") - rev = revision_for(lib_path("foo"))[0..6] - update_git "foo", "2.0", :path => lib_path("foo"), :gemspec => true - rev2 = revision_for(lib_path("foo"))[0..6] - update_git "foo", "3.0", :path => lib_path("foo"), :gemspec => true - - install_gemfile! <<-G - gem "foo", :git => "#{lib_path("foo")}", :ref => "master~2" - G - - bundle! :install - expect(out).to include("Using foo 1.0 from #{lib_path("foo")} (at master~2@#{rev})") - expect(the_bundle).to include_gems "foo 1.0", :source => "git@#{lib_path("foo")}" - - update_git "foo", "4.0", :path => lib_path("foo"), :gemspec => true - - bundle! :update, :all => bundle_update_requires_all? - expect(out).to include("Using foo 2.0 (was 1.0) from #{lib_path("foo")} (at master~2@#{rev2})") - expect(the_bundle).to include_gems "foo 2.0", :source => "git@#{lib_path("foo")}" - end - - it "should allows git repos that are missing but not being installed" do - revision = build_git("foo").ref_for("HEAD") - - gemfile <<-G - gem "foo", :git => "file://#{lib_path("foo-1.0")}", :group => :development - G - - lockfile <<-L - GIT - remote: file://#{lib_path("foo-1.0")} - revision: #{revision} - specs: - foo (1.0) - - PLATFORMS - ruby - - DEPENDENCIES - foo! - L - - bundle! :install, forgotten_command_line_options(:path => "vendor/bundle", :without => "development") - - expect(out).to include("Bundle complete!") - end - end -end diff --git a/spec/bundler/install/global_cache_spec.rb b/spec/bundler/install/global_cache_spec.rb deleted file mode 100644 index e41e7e0157..0000000000 --- a/spec/bundler/install/global_cache_spec.rb +++ /dev/null @@ -1,235 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe "global gem caching" do - before { bundle! "config global_gem_cache true" } - - describe "using the cross-application user cache" do - let(:source) { "http://localgemserver.test" } - let(:source2) { "http://gemserver.example.org" } - - def source_global_cache(*segments) - home(".bundle", "cache", "gems", "localgemserver.test.80.dd34752a738ee965a2a4298dc16db6c5", *segments) - end - - def source2_global_cache(*segments) - home(".bundle", "cache", "gems", "gemserver.example.org.80.1ae1663619ffe0a3c9d97712f44c705b", *segments) - end - - it "caches gems into the global cache on download" do - install_gemfile! <<-G, :artifice => "compact_index" - source "#{source}" - gem "rack" - G - - expect(the_bundle).to include_gems "rack 1.0.0" - expect(source_global_cache("rack-1.0.0.gem")).to exist - end - - it "uses globally cached gems if they exist" do - source_global_cache.mkpath - FileUtils.cp(gem_repo1("gems/rack-1.0.0.gem"), source_global_cache("rack-1.0.0.gem")) - - install_gemfile! <<-G, :artifice => "compact_index_no_gem" - source "#{source}" - gem "rack" - G - - expect(the_bundle).to include_gems "rack 1.0.0" - end - - describe "when the same gem from different sources is installed" do - it "should use the appropriate one from the global cache" do - install_gemfile! <<-G, :artifice => "compact_index" - source "#{source}" - gem "rack" - G - - FileUtils.rm_r(default_bundle_path) - expect(the_bundle).not_to include_gems "rack 1.0.0" - expect(source_global_cache("rack-1.0.0.gem")).to exist - # rack 1.0.0 is not installed and it is in the global cache - - install_gemfile! <<-G, :artifice => "compact_index" - source "#{source2}" - gem "rack", "0.9.1" - G - - FileUtils.rm_r(default_bundle_path) - expect(the_bundle).not_to include_gems "rack 0.9.1" - expect(source2_global_cache("rack-0.9.1.gem")).to exist - # rack 0.9.1 is not installed and it is in the global cache - - gemfile <<-G - source "#{source}" - gem "rack", "1.0.0" - G - - bundle! :install, :artifice => "compact_index_no_gem" - # rack 1.0.0 is installed and rack 0.9.1 is not - expect(the_bundle).to include_gems "rack 1.0.0" - expect(the_bundle).not_to include_gems "rack 0.9.1" - FileUtils.rm_r(default_bundle_path) - - gemfile <<-G - source "#{source2}" - gem "rack", "0.9.1" - G - - bundle! :install, :artifice => "compact_index_no_gem" - # rack 0.9.1 is installed and rack 1.0.0 is not - expect(the_bundle).to include_gems "rack 0.9.1" - expect(the_bundle).not_to include_gems "rack 1.0.0" - end - - it "should not install if the wrong source is provided" do - gemfile <<-G - source "#{source}" - gem "rack" - G - - bundle! :install, :artifice => "compact_index" - FileUtils.rm_r(default_bundle_path) - expect(the_bundle).not_to include_gems "rack 1.0.0" - expect(source_global_cache("rack-1.0.0.gem")).to exist - # rack 1.0.0 is not installed and it is in the global cache - - gemfile <<-G - source "#{source2}" - gem "rack", "0.9.1" - G - - bundle! :install, :artifice => "compact_index" - FileUtils.rm_r(default_bundle_path) - expect(the_bundle).not_to include_gems "rack 0.9.1" - expect(source2_global_cache("rack-0.9.1.gem")).to exist - # rack 0.9.1 is not installed and it is in the global cache - - gemfile <<-G - source "#{source2}" - gem "rack", "1.0.0" - G - - expect(source_global_cache("rack-1.0.0.gem")).to exist - expect(source2_global_cache("rack-0.9.1.gem")).to exist - bundle :install, :artifice => "compact_index_no_gem" - expect(out).to include("Internal Server Error 500") - # rack 1.0.0 is not installed and rack 0.9.1 is not - expect(the_bundle).not_to include_gems "rack 1.0.0" - expect(the_bundle).not_to include_gems "rack 0.9.1" - - gemfile <<-G - source "#{source}" - gem "rack", "0.9.1" - G - - expect(source_global_cache("rack-1.0.0.gem")).to exist - expect(source2_global_cache("rack-0.9.1.gem")).to exist - bundle :install, :artifice => "compact_index_no_gem" - expect(out).to include("Internal Server Error 500") - # rack 0.9.1 is not installed and rack 1.0.0 is not - expect(the_bundle).not_to include_gems "rack 0.9.1" - expect(the_bundle).not_to include_gems "rack 1.0.0" - end - end - - describe "when installing gems from a different directory" do - it "uses the global cache as a source" do - install_gemfile! <<-G, :artifice => "compact_index" - source "#{source}" - gem "rack" - gem "activesupport" - G - - # Both gems are installed and in the global cache - expect(the_bundle).to include_gems "rack 1.0.0" - expect(the_bundle).to include_gems "activesupport 2.3.5" - expect(source_global_cache("rack-1.0.0.gem")).to exist - expect(source_global_cache("activesupport-2.3.5.gem")).to exist - FileUtils.rm_r(default_bundle_path) - # Both gems are now only in the global cache - expect(the_bundle).not_to include_gems "rack 1.0.0" - expect(the_bundle).not_to include_gems "activesupport 2.3.5" - - install_gemfile! <<-G, :artifice => "compact_index_no_gem" - source "#{source}" - gem "rack" - G - - # rack is installed and both are in the global cache - expect(the_bundle).to include_gems "rack 1.0.0" - expect(the_bundle).not_to include_gems "activesupport 2.3.5" - expect(source_global_cache("rack-1.0.0.gem")).to exist - expect(source_global_cache("activesupport-2.3.5.gem")).to exist - - Dir.chdir bundled_app2 do - create_file bundled_app2("gems.rb"), <<-G - source "#{source}" - gem "activesupport" - G - - # Neither gem is installed and both are in the global cache - expect(the_bundle).not_to include_gems "rack 1.0.0" - expect(the_bundle).not_to include_gems "activesupport 2.3.5" - expect(source_global_cache("rack-1.0.0.gem")).to exist - expect(source_global_cache("activesupport-2.3.5.gem")).to exist - - # Install using the global cache instead of by downloading the .gem - # from the server - bundle! :install, :artifice => "compact_index_no_gem" - - # activesupport is installed and both are in the global cache - expect(the_bundle).not_to include_gems "rack 1.0.0" - expect(the_bundle).to include_gems "activesupport 2.3.5" - expect(source_global_cache("rack-1.0.0.gem")).to exist - expect(source_global_cache("activesupport-2.3.5.gem")).to exist - end - end - end - end - - describe "extension caching", :ruby_repo, :rubygems => "2.2" do - it "works" do - build_git "very_simple_git_binary", &:add_c_extension - build_lib "very_simple_path_binary", &:add_c_extension - revision = revision_for(lib_path("very_simple_git_binary-1.0"))[0, 12] - - install_gemfile! <<-G - source "file:#{gem_repo1}" - - gem "very_simple_binary" - gem "very_simple_git_binary", :git => "#{lib_path("very_simple_git_binary-1.0")}" - gem "very_simple_path_binary", :path => "#{lib_path("very_simple_path_binary-1.0")}" - G - - gem_binary_cache = home(".bundle", "cache", "extensions", specific_local_platform.to_s, Bundler.ruby_scope, - Digest(:MD5).hexdigest("#{gem_repo1}/"), "very_simple_binary-1.0") - git_binary_cache = home(".bundle", "cache", "extensions", specific_local_platform.to_s, Bundler.ruby_scope, - "very_simple_git_binary-1.0-#{revision}", "very_simple_git_binary-1.0") - - cached_extensions = Pathname.glob(home(".bundle", "cache", "extensions", "*", "*", "*", "*", "*")).sort - expect(cached_extensions).to eq [gem_binary_cache, git_binary_cache].sort - - run! <<-R - require 'very_simple_binary_c'; puts ::VERY_SIMPLE_BINARY_IN_C - require 'very_simple_git_binary_c'; puts ::VERY_SIMPLE_GIT_BINARY_IN_C - R - expect(out).to eq "VERY_SIMPLE_BINARY_IN_C\nVERY_SIMPLE_GIT_BINARY_IN_C" - - FileUtils.rm Dir[home(".bundle", "cache", "extensions", "**", "*binary_c*")] - - gem_binary_cache.join("very_simple_binary_c.rb").open("w") {|f| f << "puts File.basename(__FILE__)" } - git_binary_cache.join("very_simple_git_binary_c.rb").open("w") {|f| f << "puts File.basename(__FILE__)" } - - bundle! "config --local path different_path" - bundle! :install - - expect(Dir[home(".bundle", "cache", "extensions", "**", "*binary_c*")]).to all(end_with(".rb")) - - run! <<-R - require 'very_simple_binary_c' - require 'very_simple_git_binary_c' - R - expect(out).to eq "very_simple_binary_c.rb\nvery_simple_git_binary_c.rb" - end - end -end diff --git a/spec/bundler/install/path_spec.rb b/spec/bundler/install/path_spec.rb deleted file mode 100644 index fc39068f6a..0000000000 --- a/spec/bundler/install/path_spec.rb +++ /dev/null @@ -1,177 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe "bundle install" do - describe "with --path" do - before :each do - build_gem "rack", "1.0.0", :to_system => true do |s| - s.write "lib/rack.rb", "puts 'FAIL'" - end - - gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - G - end - - it "does not use available system gems with bundle --path vendor/bundle", :bundler => "< 2" do - bundle! :install, forgotten_command_line_options(:path => "vendor/bundle") - expect(the_bundle).to include_gems "rack 1.0.0" - end - - it "handles paths with regex characters in them" do - dir = bundled_app("bun++dle") - dir.mkpath - - Dir.chdir(dir) do - bundle! :install, forgotten_command_line_options(:path => "vendor/bundle") - expect(out).to include("installed into `./vendor/bundle`") - end - - dir.rmtree - end - - it "prints a warning to let the user know what has happened with bundle --path vendor/bundle" do - bundle! :install, forgotten_command_line_options(:path => "vendor/bundle") - expect(out).to include("gems are installed into `./vendor/bundle`") - end - - it "disallows --path vendor/bundle --system", :bundler => "< 2" do - bundle "install --path vendor/bundle --system" - expect(out).to include("Please choose only one option.") - expect(exitstatus).to eq(15) if exitstatus - end - - it "remembers to disable system gems after the first time with bundle --path vendor/bundle", :bundler => "< 2" do - bundle "install --path vendor/bundle" - FileUtils.rm_rf bundled_app("vendor") - bundle "install" - - expect(vendored_gems("gems/rack-1.0.0")).to be_directory - expect(the_bundle).to include_gems "rack 1.0.0" - end - end - - describe "when BUNDLE_PATH or the global path config is set" do - before :each do - build_lib "rack", "1.0.0", :to_system => true do |s| - s.write "lib/rack.rb", "raise 'FAIL'" - end - - gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - G - end - - def set_bundle_path(type, location) - if type == :env - ENV["BUNDLE_PATH"] = location - elsif type == :global - bundle "config path #{location}", "no-color" => nil - end - end - - [:env, :global].each do |type| - it "installs gems to a path if one is specified" do - set_bundle_path(type, bundled_app("vendor2").to_s) - bundle! :install, forgotten_command_line_options(:path => "vendor/bundle") - - expect(vendored_gems("gems/rack-1.0.0")).to be_directory - expect(bundled_app("vendor2")).not_to be_directory - expect(the_bundle).to include_gems "rack 1.0.0" - end - - it "installs gems to BUNDLE_PATH with #{type}" do - set_bundle_path(type, bundled_app("vendor").to_s) - - bundle :install - - expect(bundled_app("vendor/gems/rack-1.0.0")).to be_directory - expect(the_bundle).to include_gems "rack 1.0.0" - end - - it "installs gems to BUNDLE_PATH relative to root when relative" do - set_bundle_path(type, "vendor") - - FileUtils.mkdir_p bundled_app("lol") - Dir.chdir(bundled_app("lol")) do - bundle :install - end - - expect(bundled_app("vendor/gems/rack-1.0.0")).to be_directory - expect(the_bundle).to include_gems "rack 1.0.0" - end - end - - it "installs gems to BUNDLE_PATH from .bundle/config" do - config "BUNDLE_PATH" => bundled_app("vendor/bundle").to_s - - bundle :install - - expect(vendored_gems("gems/rack-1.0.0")).to be_directory - expect(the_bundle).to include_gems "rack 1.0.0" - end - - it "sets BUNDLE_PATH as the first argument to bundle install" do - bundle! :install, forgotten_command_line_options(:path => "./vendor/bundle") - - expect(vendored_gems("gems/rack-1.0.0")).to be_directory - expect(the_bundle).to include_gems "rack 1.0.0" - end - - it "disables system gems when passing a path to install" do - # This is so that vendored gems can be distributed to others - build_gem "rack", "1.1.0", :to_system => true - bundle! :install, forgotten_command_line_options(:path => "./vendor/bundle") - - expect(vendored_gems("gems/rack-1.0.0")).to be_directory - expect(the_bundle).to include_gems "rack 1.0.0" - end - - it "re-installs gems whose extensions have been deleted", :ruby_repo, :rubygems => ">= 2.3" do - build_lib "very_simple_binary", "1.0.0", :to_system => true do |s| - s.write "lib/very_simple_binary.rb", "raise 'FAIL'" - end - - gemfile <<-G - source "file://#{gem_repo1}" - gem "very_simple_binary" - G - - bundle! :install, forgotten_command_line_options(:path => "./vendor/bundle") - - expect(vendored_gems("gems/very_simple_binary-1.0")).to be_directory - expect(vendored_gems("extensions")).to be_directory - expect(the_bundle).to include_gems "very_simple_binary 1.0", :source => "remote1" - - vendored_gems("extensions").rmtree - - run "require 'very_simple_binary_c'" - expect(err).to include("Bundler::GemNotFound") - - bundle :install, forgotten_command_line_options(:path => "./vendor/bundle") - - expect(vendored_gems("gems/very_simple_binary-1.0")).to be_directory - expect(vendored_gems("extensions")).to be_directory - expect(the_bundle).to include_gems "very_simple_binary 1.0", :source => "remote1" - end - end - - describe "to a file" do - before do - in_app_root do - `touch /tmp/idontexist bundle` - end - end - - it "reports the file exists" do - gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - G - - bundle :install, forgotten_command_line_options(:path => "bundle") - expect(out).to match(/file already exists/) - end - end -end diff --git a/spec/bundler/install/post_bundle_message_spec.rb b/spec/bundler/install/post_bundle_message_spec.rb deleted file mode 100644 index a953847bac..0000000000 --- a/spec/bundler/install/post_bundle_message_spec.rb +++ /dev/null @@ -1,206 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe "post bundle message" do - before :each do - gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - gem "activesupport", "2.3.5", :group => [:emo, :test] - group :test do - gem "rspec" - end - gem "rack-obama", :group => :obama - G - end - - let(:bundle_path) { "./.bundle" } - let(:bundle_show_system_message) { "Use `bundle info [gemname]` to see where a bundled gem is installed." } - let(:bundle_show_path_message) { "Bundled gems are installed into `#{bundle_path}`" } - let(:bundle_complete_message) { "Bundle complete!" } - let(:bundle_updated_message) { "Bundle updated!" } - let(:installed_gems_stats) { "4 Gemfile dependencies, 5 gems now installed." } - let(:bundle_show_message) { Bundler::VERSION.split(".").first.to_i < 2 ? bundle_show_system_message : bundle_show_path_message } - - describe "for fresh bundle install" do - it "without any options" do - bundle :install - expect(out).to include(bundle_show_message) - expect(out).not_to include("Gems in the group") - expect(out).to include(bundle_complete_message) - expect(out).to include(installed_gems_stats) - end - - it "with --without one group" do - bundle! :install, forgotten_command_line_options(:without => "emo") - expect(out).to include(bundle_show_message) - expect(out).to include("Gems in the group emo were not installed") - expect(out).to include(bundle_complete_message) - expect(out).to include(installed_gems_stats) - end - - it "with --without two groups" do - bundle! :install, forgotten_command_line_options(:without => "emo test") - expect(out).to include(bundle_show_message) - expect(out).to include("Gems in the groups emo and test were not installed") - expect(out).to include(bundle_complete_message) - expect(out).to include("4 Gemfile dependencies, 3 gems now installed.") - end - - it "with --without more groups" do - bundle! :install, forgotten_command_line_options(:without => "emo obama test") - expect(out).to include(bundle_show_message) - expect(out).to include("Gems in the groups emo, obama and test were not installed") - expect(out).to include(bundle_complete_message) - expect(out).to include("4 Gemfile dependencies, 2 gems now installed.") - end - - describe "with --path and" do - let(:bundle_path) { "./vendor" } - - it "without any options" do - bundle! :install, forgotten_command_line_options(:path => "vendor") - expect(out).to include(bundle_show_path_message) - expect(out).to_not include("Gems in the group") - expect(out).to include(bundle_complete_message) - end - - it "with --without one group" do - bundle! :install, forgotten_command_line_options(:without => "emo", :path => "vendor") - expect(out).to include(bundle_show_path_message) - expect(out).to include("Gems in the group emo were not installed") - expect(out).to include(bundle_complete_message) - end - - it "with --without two groups" do - bundle! :install, forgotten_command_line_options(:without => "emo test", :path => "vendor") - expect(out).to include(bundle_show_path_message) - expect(out).to include("Gems in the groups emo and test were not installed") - expect(out).to include(bundle_complete_message) - end - - it "with --without more groups" do - bundle! :install, forgotten_command_line_options(:without => "emo obama test", :path => "vendor") - expect(out).to include(bundle_show_path_message) - expect(out).to include("Gems in the groups emo, obama and test were not installed") - expect(out).to include(bundle_complete_message) - end - - it "with an absolute --path inside the cwd" do - bundle! :install, forgotten_command_line_options(:path => bundled_app("cache")) - expect(out).to include("Bundled gems are installed into `./cache`") - expect(out).to_not include("Gems in the group") - expect(out).to include(bundle_complete_message) - end - - it "with an absolute --path outside the cwd" do - bundle! :install, forgotten_command_line_options(:path => tmp("not_bundled_app")) - expect(out).to include("Bundled gems are installed into `#{tmp("not_bundled_app")}`") - expect(out).to_not include("Gems in the group") - expect(out).to include(bundle_complete_message) - end - end - - describe "with misspelled or non-existent gem name" do - it "should report a helpful error message", :bundler => "< 2" do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - gem "not-a-gem", :group => :development - G - expect(out).to include("Could not find gem 'not-a-gem' in any of the gem sources listed in your Gemfile.") - end - - it "should report a helpful error message", :bundler => "2" do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - gem "not-a-gem", :group => :development - G - expect(out).to include <<-EOS.strip -Could not find gem 'not-a-gem' in rubygems repository file:#{gem_repo1}/ or installed locally. -The source does not contain any versions of 'not-a-gem' - EOS - end - - it "should report a helpful error message with reference to cache if available" do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - G - bundle :cache - expect(bundled_app("vendor/cache/rack-1.0.0.gem")).to exist - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - gem "not-a-gem", :group => :development - G - expect(out).to include("Could not find gem 'not-a-gem' in"). - and include("or in gems cached in vendor/cache.") - end - end - end - - describe "for second bundle install run" do - it "without any options" do - 2.times { bundle :install } - expect(out).to include(bundle_show_message) - expect(out).to_not include("Gems in the groups") - expect(out).to include(bundle_complete_message) - expect(out).to include(installed_gems_stats) - end - - it "with --without one group" do - bundle! :install, forgotten_command_line_options(:without => "emo") - bundle! :install - expect(out).to include(bundle_show_message) - expect(out).to include("Gems in the group emo were not installed") - expect(out).to include(bundle_complete_message) - expect(out).to include(installed_gems_stats) - end - - it "with --without two groups" do - bundle! :install, forgotten_command_line_options(:without => "emo test") - bundle! :install - expect(out).to include(bundle_show_message) - expect(out).to include("Gems in the groups emo and test were not installed") - expect(out).to include(bundle_complete_message) - end - - it "with --without more groups" do - bundle! :install, forgotten_command_line_options(:without => "emo obama test") - bundle :install - expect(out).to include(bundle_show_message) - expect(out).to include("Gems in the groups emo, obama and test were not installed") - expect(out).to include(bundle_complete_message) - end - end - - describe "for bundle update" do - it "without any options" do - bundle! :update, :all => bundle_update_requires_all? - expect(out).not_to include("Gems in the groups") - expect(out).to include(bundle_updated_message) - end - - it "with --without one group" do - bundle! :install, forgotten_command_line_options(:without => "emo") - bundle! :update, :all => bundle_update_requires_all? - expect(out).to include("Gems in the group emo were not installed") - expect(out).to include(bundle_updated_message) - end - - it "with --without two groups" do - bundle! :install, forgotten_command_line_options(:without => "emo test") - bundle! :update, :all => bundle_update_requires_all? - expect(out).to include("Gems in the groups emo and test were not installed") - expect(out).to include(bundle_updated_message) - end - - it "with --without more groups" do - bundle! :install, forgotten_command_line_options(:without => "emo obama test") - bundle! :update, :all => bundle_update_requires_all? - expect(out).to include("Gems in the groups emo, obama and test were not installed") - expect(out).to include(bundle_updated_message) - end - end -end diff --git a/spec/bundler/install/prereleases_spec.rb b/spec/bundler/install/prereleases_spec.rb deleted file mode 100644 index 7af8c3b304..0000000000 --- a/spec/bundler/install/prereleases_spec.rb +++ /dev/null @@ -1,41 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe "bundle install" do - describe "when prerelease gems are available" do - it "finds prereleases" do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "not_released" - G - expect(the_bundle).to include_gems "not_released 1.0.pre" - end - - it "uses regular releases if available" do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "has_prerelease" - G - expect(the_bundle).to include_gems "has_prerelease 1.0" - end - - it "uses prereleases if requested" do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "has_prerelease", "1.1.pre" - G - expect(the_bundle).to include_gems "has_prerelease 1.1.pre" - end - end - - describe "when prerelease gems are not available" do - it "still works" do - build_repo3 - install_gemfile <<-G - source "file://#{gem_repo3}" - gem "rack" - G - - expect(the_bundle).to include_gems "rack 1.0" - end - end -end diff --git a/spec/bundler/install/process_lock_spec.rb b/spec/bundler/install/process_lock_spec.rb deleted file mode 100644 index 02217f493b..0000000000 --- a/spec/bundler/install/process_lock_spec.rb +++ /dev/null @@ -1,24 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe "process lock spec" do - describe "when an install operation is already holding a process lock" do - before { FileUtils.mkdir_p(default_bundle_path) } - - it "will not run a second concurrent bundle install until the lock is released" do - thread = Thread.new do - Bundler::ProcessLock.lock(default_bundle_path) do - sleep 1 # ignore quality_spec - expect(the_bundle).not_to include_gems "rack 1.0" - end - end - - install_gemfile! <<-G - source "file://#{gem_repo1}" - gem "rack" - G - - thread.join - expect(the_bundle).to include_gems "rack 1.0" - end - end -end diff --git a/spec/bundler/install/security_policy_spec.rb b/spec/bundler/install/security_policy_spec.rb deleted file mode 100644 index 7be09d6bd4..0000000000 --- a/spec/bundler/install/security_policy_spec.rb +++ /dev/null @@ -1,77 +0,0 @@ -# frozen_string_literal: true - -require "rubygems/security" - -# unfortunately, testing signed gems with a provided CA is extremely difficult -# as 'gem cert' is currently the only way to add CAs to the system. - -RSpec.describe "policies with unsigned gems" do - before do - build_security_repo - gemfile <<-G - source "file://#{security_repo}" - gem "rack" - gem "signed_gem" - G - end - - it "will work after you try to deploy without a lock" do - bundle "install --deployment" - bundle :install - expect(exitstatus).to eq(0) if exitstatus - expect(the_bundle).to include_gems "rack 1.0", "signed_gem 1.0" - end - - it "will fail when given invalid security policy" do - bundle "install --trust-policy=InvalidPolicyName" - expect(out).to include("RubyGems doesn't know about trust policy") - end - - it "will fail with High Security setting due to presence of unsigned gem" do - bundle "install --trust-policy=HighSecurity" - expect(out).to include("security policy didn't allow") - end - - # This spec will fail on RubyGems 2 rc1 due to a bug in policy.rb. the bug is fixed in rc3. - it "will fail with Medium Security setting due to presence of unsigned gem", :unless => ENV["RGV"] == "v2.0.0.rc.1" do - bundle "install --trust-policy=MediumSecurity" - expect(out).to include("security policy didn't allow") - end - - it "will succeed with no policy" do - bundle "install" - expect(exitstatus).to eq(0) if exitstatus - end -end - -RSpec.describe "policies with signed gems and no CA" do - before do - build_security_repo - gemfile <<-G - source "file://#{security_repo}" - gem "signed_gem" - G - end - - it "will fail with High Security setting, gem is self-signed" do - bundle "install --trust-policy=HighSecurity" - expect(out).to include("security policy didn't allow") - end - - it "will fail with Medium Security setting, gem is self-signed" do - bundle "install --trust-policy=MediumSecurity" - expect(out).to include("security policy didn't allow") - end - - it "will succeed with Low Security setting, low security accepts self signed gem" do - bundle "install --trust-policy=LowSecurity" - expect(exitstatus).to eq(0) if exitstatus - expect(the_bundle).to include_gems "signed_gem 1.0" - end - - it "will succeed with no policy" do - bundle "install" - expect(exitstatus).to eq(0) if exitstatus - expect(the_bundle).to include_gems "signed_gem 1.0" - end -end diff --git a/spec/bundler/install/yanked_spec.rb b/spec/bundler/install/yanked_spec.rb deleted file mode 100644 index 7c4b98bfdf..0000000000 --- a/spec/bundler/install/yanked_spec.rb +++ /dev/null @@ -1,71 +0,0 @@ -# frozen_string_literal: true - -RSpec.context "when installing a bundle that includes yanked gems" do - before(:each) do - build_repo4 do - build_gem "foo", "9.0.0" - end - end - - it "throws an error when the original gem version is yanked" do - lockfile <<-L - GEM - remote: file://#{gem_repo4} - specs: - foo (10.0.0) - - PLATFORMS - ruby - - DEPENDENCIES - foo (= 10.0.0) - - L - - install_gemfile <<-G - source "file://#{gem_repo4}" - gem "foo", "10.0.0" - G - - expect(out).to include("Your bundle is locked to foo (10.0.0)") - end - - it "throws the original error when only the Gemfile specifies a gem version that doesn't exist" do - install_gemfile <<-G - source "file://#{gem_repo4}" - gem "foo", "10.0.0" - G - - expect(out).not_to include("Your bundle is locked to foo (10.0.0)") - expect(out).to include("Could not find gem 'foo (= 10.0.0)' in") - end -end - -RSpec.context "when using gem before installing" do - it "does not suggest the author has yanked the gem" do - gemfile <<-G - source "file://#{gem_repo1}" - gem "rack", "0.9.1" - G - - lockfile <<-L - GEM - remote: file://#{gem_repo1} - specs: - rack (0.9.1) - - PLATFORMS - ruby - - DEPENDENCIES - rack (= 0.9.1) - L - - bundle :list - - expect(out).to include("Could not find rack-0.9.1 in any of the sources") - expect(out).to_not include("Your bundle is locked to rack (0.9.1), but that version could not be found in any of the sources listed in your Gemfile.") - expect(out).to_not include("If you haven't changed sources, that means the author of rack (0.9.1) has removed it.") - expect(out).to_not include("You'll need to update your bundle to a different version of rack (0.9.1) that hasn't been removed in order to install.") - end -end diff --git a/spec/bundler/lock/git_spec.rb b/spec/bundler/lock/git_spec.rb deleted file mode 100644 index 14b80483ee..0000000000 --- a/spec/bundler/lock/git_spec.rb +++ /dev/null @@ -1,34 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe "bundle lock with git gems" do - before :each do - build_git "foo" - - install_gemfile <<-G - gem 'foo', :git => "#{lib_path("foo-1.0")}" - G - end - - it "doesn't break right after running lock" do - expect(the_bundle).to include_gems "foo 1.0.0" - end - - it "locks a git source to the current ref" do - update_git "foo" - bundle :install - - run <<-RUBY - require 'foo' - puts "WIN" unless defined?(FOO_PREV_REF) - RUBY - - expect(out).to eq("WIN") - end - - it "provides correct #full_gem_path" do - run <<-RUBY - puts Bundler.rubygems.find_name('foo').first.full_gem_path - RUBY - expect(out).to eq(bundle("info foo --path")) - end -end diff --git a/spec/bundler/lock/lockfile_bundler_1_spec.rb b/spec/bundler/lock/lockfile_bundler_1_spec.rb deleted file mode 100644 index 233e3f63c4..0000000000 --- a/spec/bundler/lock/lockfile_bundler_1_spec.rb +++ /dev/null @@ -1,1386 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe "the lockfile format", :bundler => "< 2" do - include Bundler::GemHelpers - - before { ENV["BUNDLER_SPEC_IGNORE_COMPATIBILITY_GUARD"] = "TRUE" } - - it "generates a simple lockfile for a single source, gem" do - install_gemfile <<-G - source "file://localhost#{gem_repo1}" - - gem "rack" - G - - lockfile_should_be <<-G - GEM - remote: file://localhost#{gem_repo1}/ - specs: - rack (1.0.0) - - PLATFORMS - #{generic_local_platform} - - DEPENDENCIES - rack - - BUNDLED WITH - #{Bundler::VERSION} - G - end - - it "updates the lockfile's bundler version if current ver. is newer" do - lockfile <<-L - GIT - remote: git://github.com/nex3/haml.git - revision: 8a2271f - specs: - - GEM - remote: file://localhost#{gem_repo1}/ - specs: - rack (1.0.0) - - PLATFORMS - #{generic_local_platform} - - DEPENDENCIES - omg! - rack - - BUNDLED WITH - 1.8.2 - L - - install_gemfile <<-G - source "file://localhost#{gem_repo1}" - - gem "rack" - G - - lockfile_should_be <<-G - GEM - remote: file://localhost#{gem_repo1}/ - specs: - rack (1.0.0) - - PLATFORMS - #{generic_local_platform} - - DEPENDENCIES - rack - - BUNDLED WITH - #{Bundler::VERSION} - G - end - - it "does not update the lockfile's bundler version if nothing changed during bundle install" do - version = "#{Bundler::VERSION.split(".").first}.0.0.0.a" - - lockfile <<-L - GEM - remote: file://localhost#{gem_repo1}/ - specs: - rack (1.0.0) - - PLATFORMS - #{generic_local_platform} - - DEPENDENCIES - rack - - BUNDLED WITH - #{version} - L - - install_gemfile <<-G - source "file://localhost#{gem_repo1}" - - gem "rack" - G - - lockfile_should_be <<-G - GEM - remote: file://localhost#{gem_repo1}/ - specs: - rack (1.0.0) - - PLATFORMS - #{generic_local_platform} - - DEPENDENCIES - rack - - BUNDLED WITH - #{version} - G - end - - it "updates the lockfile's bundler version if not present" do - lockfile <<-L - GEM - remote: file://localhost#{gem_repo1}/ - specs: - rack (1.0.0) - - PLATFORMS - #{generic_local_platform} - - DEPENDENCIES - rack - L - - install_gemfile <<-G - source "file://localhost#{gem_repo1}" - - gem "rack", "> 0" - G - - lockfile_should_be <<-G - GEM - remote: file://localhost#{gem_repo1}/ - specs: - rack (1.0.0) - - PLATFORMS - #{generic_local_platform} - - DEPENDENCIES - rack (> 0) - - BUNDLED WITH - #{Bundler::VERSION} - G - end - - it "outputs a warning if the current is older than lockfile's bundler version" do - lockfile <<-L - GEM - remote: file://localhost#{gem_repo1}/ - specs: - rack (1.0.0) - - PLATFORMS - #{generic_local_platform} - - DEPENDENCIES - rack - - BUNDLED WITH - 9999999.1.0 - L - - simulate_bundler_version "9999999.0.0" do - install_gemfile <<-G - source "file://localhost#{gem_repo1}" - - gem "rack" - G - end - - warning_message = "the running version of Bundler (9999999.0.0) is older " \ - "than the version that created the lockfile (9999999.1.0)" - expect(out.scan(warning_message).size).to eq(1) - - lockfile_should_be <<-G - GEM - remote: file://localhost#{gem_repo1}/ - specs: - rack (1.0.0) - - PLATFORMS - #{generic_local_platform} - #{specific_local_platform} - - DEPENDENCIES - rack - - BUNDLED WITH - 9999999.1.0 - G - end - - it "errors if the current is a major version older than lockfile's bundler version" do - lockfile <<-L - GEM - remote: file://localhost#{gem_repo1}/ - specs: - rack (1.0.0) - - PLATFORMS - #{generic_local_platform} - - DEPENDENCIES - rack - - BUNDLED WITH - 9999999.0.0 - L - - install_gemfile <<-G - source "file://localhost#{gem_repo1}" - - gem "rack" - G - - expect(exitstatus > 0) if exitstatus - expect(out).to include("You must use Bundler 9999999 or greater with this lockfile.") - end - - it "shows a friendly error when running with a new bundler 2 lockfile" do - lockfile <<-L - GEM - remote: https://rails-assets.org/ - specs: - rails-assets-bootstrap (3.3.4) - rails-assets-jquery (>= 1.9.1) - rails-assets-jquery (2.1.4) - - GEM - remote: https://rubygems.org/ - specs: - rake (10.4.2) - - PLATFORMS - ruby - - DEPENDENCIES - rails-assets-bootstrap! - rake - - BUNDLED WITH - 9999999.0.0 - L - - install_gemfile <<-G - source 'https://rubygems.org' - gem 'rake' - - source 'https://rails-assets.org' do - gem 'rails-assets-bootstrap' - end - G - - expect(exitstatus > 0) if exitstatus - expect(out).to include("You must use Bundler 9999999 or greater with this lockfile.") - end - - it "warns when updating bundler major version" do - lockfile <<-L - GEM - remote: file://localhost#{gem_repo1}/ - specs: - rack (1.0.0) - - PLATFORMS - #{generic_local_platform} - - DEPENDENCIES - rack - - BUNDLED WITH - 1.10.0 - L - - simulate_bundler_version "9999999.0.0" do - install_gemfile <<-G - source "file://localhost#{gem_repo1}" - - gem "rack" - G - end - - expect(out).to include("Warning: the lockfile is being updated to Bundler " \ - "9999999, after which you will be unable to return to Bundler 1.") - - lockfile_should_be <<-G - GEM - remote: file://localhost#{gem_repo1}/ - specs: - rack (1.0.0) - - PLATFORMS - #{generic_local_platform} - #{specific_local_platform} - - DEPENDENCIES - rack - - BUNDLED WITH - 9999999.0.0 - G - end - - it "generates a simple lockfile for a single source, gem with dependencies" do - install_gemfile <<-G - source "file://localhost#{gem_repo1}" - - gem "rack-obama" - G - - lockfile_should_be <<-G - GEM - remote: file://localhost#{gem_repo1}/ - specs: - rack (1.0.0) - rack-obama (1.0) - rack - - PLATFORMS - #{generic_local_platform} - - DEPENDENCIES - rack-obama - - BUNDLED WITH - #{Bundler::VERSION} - G - end - - it "generates a simple lockfile for a single source, gem with a version requirement" do - install_gemfile <<-G - source "file://localhost#{gem_repo1}" - - gem "rack-obama", ">= 1.0" - G - - lockfile_should_be <<-G - GEM - remote: file://localhost#{gem_repo1}/ - specs: - rack (1.0.0) - rack-obama (1.0) - rack - - PLATFORMS - #{generic_local_platform} - - DEPENDENCIES - rack-obama (>= 1.0) - - BUNDLED WITH - #{Bundler::VERSION} - G - end - - it "generates a lockfile wihout credentials for a configured source" do - bundle "config http://localgemserver.test/ user:pass" - - install_gemfile(<<-G, :artifice => "endpoint_strict_basic_authentication", :quiet => true) - source "http://localgemserver.test/" - source "http://user:pass@othergemserver.test/" - - gem "rack-obama", ">= 1.0" - G - - lockfile_should_be <<-G - GEM - remote: http://localgemserver.test/ - remote: http://user:pass@othergemserver.test/ - specs: - rack (1.0.0) - rack-obama (1.0) - rack - - PLATFORMS - #{generic_local_platform} - - DEPENDENCIES - rack-obama (>= 1.0) - - BUNDLED WITH - #{Bundler::VERSION} - G - end - - it "generates lockfiles with multiple requirements" do - install_gemfile <<-G - source "file://localhost#{gem_repo1}" - gem "net-sftp" - G - - lockfile_should_be <<-G - GEM - remote: file://localhost#{gem_repo1}/ - specs: - net-sftp (1.1.1) - net-ssh (>= 1.0.0, < 1.99.0) - net-ssh (1.0) - - PLATFORMS - ruby - - DEPENDENCIES - net-sftp - - BUNDLED WITH - #{Bundler::VERSION} - G - - expect(the_bundle).to include_gems "net-sftp 1.1.1", "net-ssh 1.0.0" - end - - it "generates a simple lockfile for a single pinned source, gem with a version requirement" do - git = build_git "foo" - - install_gemfile <<-G - gem "foo", :git => "#{lib_path("foo-1.0")}" - G - - lockfile_should_be <<-G - GIT - remote: #{lib_path("foo-1.0")} - revision: #{git.ref_for("master")} - specs: - foo (1.0) - - GEM - specs: - - PLATFORMS - #{generic_local_platform} - - DEPENDENCIES - foo! - - BUNDLED WITH - #{Bundler::VERSION} - G - end - - it "does not asplode when a platform specific dependency is present and the Gemfile has not been resolved on that platform" do - build_lib "omg", :path => lib_path("omg") - - gemfile <<-G - source "file://localhost#{gem_repo1}" - - platforms :#{not_local_tag} do - gem "omg", :path => "#{lib_path("omg")}" - end - - gem "rack" - G - - lockfile <<-L - GIT - remote: git://github.com/nex3/haml.git - revision: 8a2271f - specs: - - GEM - remote: file://localhost#{gem_repo1}/ - specs: - rack (1.0.0) - - PLATFORMS - #{not_local} - - DEPENDENCIES - omg! - rack - - BUNDLED WITH - #{Bundler::VERSION} - L - - bundle "install" - expect(the_bundle).to include_gems "rack 1.0.0" - end - - it "serializes global git sources" do - git = build_git "foo" - - install_gemfile <<-G - git "#{lib_path("foo-1.0")}" do - gem "foo" - end - G - - lockfile_should_be <<-G - GIT - remote: #{lib_path("foo-1.0")} - revision: #{git.ref_for("master")} - specs: - foo (1.0) - - GEM - specs: - - PLATFORMS - #{generic_local_platform} - - DEPENDENCIES - foo! - - BUNDLED WITH - #{Bundler::VERSION} - G - end - - it "generates a lockfile with a ref for a single pinned source, git gem with a branch requirement" do - git = build_git "foo" - update_git "foo", :branch => "omg" - - install_gemfile <<-G - gem "foo", :git => "#{lib_path("foo-1.0")}", :branch => "omg" - G - - lockfile_should_be <<-G - GIT - remote: #{lib_path("foo-1.0")} - revision: #{git.ref_for("omg")} - branch: omg - specs: - foo (1.0) - - GEM - specs: - - PLATFORMS - #{generic_local_platform} - - DEPENDENCIES - foo! - - BUNDLED WITH - #{Bundler::VERSION} - G - end - - it "generates a lockfile with a ref for a single pinned source, git gem with a tag requirement" do - git = build_git "foo" - update_git "foo", :tag => "omg" - - install_gemfile <<-G - gem "foo", :git => "#{lib_path("foo-1.0")}", :tag => "omg" - G - - lockfile_should_be <<-G - GIT - remote: #{lib_path("foo-1.0")} - revision: #{git.ref_for("omg")} - tag: omg - specs: - foo (1.0) - - GEM - specs: - - PLATFORMS - #{generic_local_platform} - - DEPENDENCIES - foo! - - BUNDLED WITH - #{Bundler::VERSION} - G - end - - it "serializes pinned path sources to the lockfile" do - build_lib "foo" - - install_gemfile <<-G - gem "foo", :path => "#{lib_path("foo-1.0")}" - G - - lockfile_should_be <<-G - PATH - remote: #{lib_path("foo-1.0")} - specs: - foo (1.0) - - GEM - specs: - - PLATFORMS - #{generic_local_platform} - - DEPENDENCIES - foo! - - BUNDLED WITH - #{Bundler::VERSION} - G - end - - it "serializes pinned path sources to the lockfile even when packaging" do - build_lib "foo" - - install_gemfile! <<-G - gem "foo", :path => "#{lib_path("foo-1.0")}" - G - - bundle! :package, forgotten_command_line_options([:all, :cache_all] => true) - bundle! :install, :local => true - - lockfile_should_be <<-G - PATH - remote: #{lib_path("foo-1.0")} - specs: - foo (1.0) - - GEM - specs: - - PLATFORMS - #{generic_local_platform} - - DEPENDENCIES - foo! - - BUNDLED WITH - #{Bundler::VERSION} - G - end - - it "sorts serialized sources by type" do - build_lib "foo" - bar = build_git "bar" - - install_gemfile <<-G - source "file://localhost#{gem_repo1}" - - gem "rack" - gem "foo", :path => "#{lib_path("foo-1.0")}" - gem "bar", :git => "#{lib_path("bar-1.0")}" - G - - lockfile_should_be <<-G - GIT - remote: #{lib_path("bar-1.0")} - revision: #{bar.ref_for("master")} - specs: - bar (1.0) - - PATH - remote: #{lib_path("foo-1.0")} - specs: - foo (1.0) - - GEM - remote: file://localhost#{gem_repo1}/ - specs: - rack (1.0.0) - - PLATFORMS - #{generic_local_platform} - - DEPENDENCIES - bar! - foo! - rack - - BUNDLED WITH - #{Bundler::VERSION} - G - end - - it "lists gems alphabetically" do - install_gemfile <<-G - source "file://localhost#{gem_repo1}" - - gem "thin" - gem "actionpack" - gem "rack-obama" - G - - lockfile_should_be <<-G - GEM - remote: file://localhost#{gem_repo1}/ - specs: - actionpack (2.3.2) - activesupport (= 2.3.2) - activesupport (2.3.2) - rack (1.0.0) - rack-obama (1.0) - rack - thin (1.0) - rack - - PLATFORMS - #{generic_local_platform} - - DEPENDENCIES - actionpack - rack-obama - thin - - BUNDLED WITH - #{Bundler::VERSION} - G - end - - it "orders dependencies' dependencies in alphabetical order" do - install_gemfile <<-G - source "file://localhost#{gem_repo1}" - - gem "rails" - G - - lockfile_should_be <<-G - GEM - remote: file://localhost#{gem_repo1}/ - specs: - actionmailer (2.3.2) - activesupport (= 2.3.2) - actionpack (2.3.2) - activesupport (= 2.3.2) - activerecord (2.3.2) - activesupport (= 2.3.2) - activeresource (2.3.2) - activesupport (= 2.3.2) - activesupport (2.3.2) - rails (2.3.2) - actionmailer (= 2.3.2) - actionpack (= 2.3.2) - activerecord (= 2.3.2) - activeresource (= 2.3.2) - rake (= 10.0.2) - rake (10.0.2) - - PLATFORMS - #{generic_local_platform} - - DEPENDENCIES - rails - - BUNDLED WITH - #{Bundler::VERSION} - G - end - - it "orders dependencies by version" do - install_gemfile <<-G - source "file://localhost#{gem_repo1}" - gem 'double_deps' - G - - lockfile_should_be <<-G - GEM - remote: file://localhost#{gem_repo1}/ - specs: - double_deps (1.0) - net-ssh - net-ssh (>= 1.0.0) - net-ssh (1.0) - - PLATFORMS - #{generic_local_platform} - - DEPENDENCIES - double_deps - - BUNDLED WITH - #{Bundler::VERSION} - G - end - - it "does not add the :require option to the lockfile" do - install_gemfile <<-G - source "file://localhost#{gem_repo1}" - - gem "rack-obama", ">= 1.0", :require => "rack/obama" - G - - lockfile_should_be <<-G - GEM - remote: file://localhost#{gem_repo1}/ - specs: - rack (1.0.0) - rack-obama (1.0) - rack - - PLATFORMS - #{generic_local_platform} - - DEPENDENCIES - rack-obama (>= 1.0) - - BUNDLED WITH - #{Bundler::VERSION} - G - end - - it "does not add the :group option to the lockfile" do - install_gemfile <<-G - source "file://localhost#{gem_repo1}" - - gem "rack-obama", ">= 1.0", :group => :test - G - - lockfile_should_be <<-G - GEM - remote: file://localhost#{gem_repo1}/ - specs: - rack (1.0.0) - rack-obama (1.0) - rack - - PLATFORMS - #{generic_local_platform} - - DEPENDENCIES - rack-obama (>= 1.0) - - BUNDLED WITH - #{Bundler::VERSION} - G - end - - it "stores relative paths when the path is provided in a relative fashion and in Gemfile dir" do - build_lib "foo", :path => bundled_app("foo") - - install_gemfile <<-G - path "foo" - gem "foo" - G - - lockfile_should_be <<-G - PATH - remote: foo - specs: - foo (1.0) - - GEM - specs: - - PLATFORMS - #{generic_local_platform} - - DEPENDENCIES - foo - - BUNDLED WITH - #{Bundler::VERSION} - G - end - - it "stores relative paths when the path is provided in a relative fashion and is above Gemfile dir" do - build_lib "foo", :path => bundled_app(File.join("..", "foo")) - - install_gemfile <<-G - path "../foo" - gem "foo" - G - - lockfile_should_be <<-G - PATH - remote: ../foo - specs: - foo (1.0) - - GEM - specs: - - PLATFORMS - #{generic_local_platform} - - DEPENDENCIES - foo - - BUNDLED WITH - #{Bundler::VERSION} - G - end - - it "stores relative paths when the path is provided in an absolute fashion but is relative" do - build_lib "foo", :path => bundled_app("foo") - - install_gemfile <<-G - path File.expand_path("../foo", __FILE__) - gem "foo" - G - - lockfile_should_be <<-G - PATH - remote: foo - specs: - foo (1.0) - - GEM - specs: - - PLATFORMS - #{generic_local_platform} - - DEPENDENCIES - foo - - BUNDLED WITH - #{Bundler::VERSION} - G - end - - it "stores relative paths when the path is provided for gemspec" do - build_lib("foo", :path => tmp.join("foo")) - - install_gemfile <<-G - gemspec :path => "../foo" - G - - lockfile_should_be <<-G - PATH - remote: ../foo - specs: - foo (1.0) - - GEM - specs: - - PLATFORMS - #{generic_local_platform} - - DEPENDENCIES - foo! - - BUNDLED WITH - #{Bundler::VERSION} - G - end - - it "keeps existing platforms in the lockfile" do - lockfile <<-G - GEM - remote: file://localhost#{gem_repo1}/ - specs: - rack (1.0.0) - - PLATFORMS - java - - DEPENDENCIES - rack - - BUNDLED WITH - #{Bundler::VERSION} - G - - install_gemfile <<-G - source "file://localhost#{gem_repo1}" - - gem "rack" - G - - platforms = ["java", generic_local_platform.to_s].sort - - lockfile_should_be <<-G - GEM - remote: file://localhost#{gem_repo1}/ - specs: - rack (1.0.0) - - PLATFORMS - #{platforms[0]} - #{platforms[1]} - - DEPENDENCIES - rack - - BUNDLED WITH - #{Bundler::VERSION} - G - end - - it "persists the spec's platform to the lockfile" do - build_gem "platform_specific", "1.0.0", :to_system => true do |s| - s.platform = Gem::Platform.new("universal-java-16") - end - - simulate_platform "universal-java-16" - - install_gemfile <<-G - source "file://localhost#{gem_repo1}" - gem "platform_specific" - G - - lockfile_should_be <<-G - GEM - remote: file://localhost#{gem_repo1}/ - specs: - platform_specific (1.0-java) - - PLATFORMS - java - - DEPENDENCIES - platform_specific - - BUNDLED WITH - #{Bundler::VERSION} - G - end - - it "does not add duplicate gems" do - install_gemfile <<-G - source "file://localhost#{gem_repo1}" - gem "rack" - G - - install_gemfile <<-G - source "file://localhost#{gem_repo1}" - gem "rack" - gem "activesupport" - G - - lockfile_should_be <<-G - GEM - remote: file://localhost#{gem_repo1}/ - specs: - activesupport (2.3.5) - rack (1.0.0) - - PLATFORMS - ruby - - DEPENDENCIES - activesupport - rack - - BUNDLED WITH - #{Bundler::VERSION} - G - end - - it "does not add duplicate dependencies" do - install_gemfile <<-G - source "file://localhost#{gem_repo1}" - gem "rack" - gem "rack" - G - - lockfile_should_be <<-G - GEM - remote: file://localhost#{gem_repo1}/ - specs: - rack (1.0.0) - - PLATFORMS - ruby - - DEPENDENCIES - rack - - BUNDLED WITH - #{Bundler::VERSION} - G - end - - it "does not add duplicate dependencies with versions" do - install_gemfile <<-G - source "file://localhost#{gem_repo1}" - gem "rack", "1.0" - gem "rack", "1.0" - G - - lockfile_should_be <<-G - GEM - remote: file://localhost#{gem_repo1}/ - specs: - rack (1.0.0) - - PLATFORMS - ruby - - DEPENDENCIES - rack (= 1.0) - - BUNDLED WITH - #{Bundler::VERSION} - G - end - - it "does not add duplicate dependencies in different groups" do - install_gemfile <<-G - source "file://localhost#{gem_repo1}" - gem "rack", "1.0", :group => :one - gem "rack", "1.0", :group => :two - G - - lockfile_should_be <<-G - GEM - remote: file://localhost#{gem_repo1}/ - specs: - rack (1.0.0) - - PLATFORMS - ruby - - DEPENDENCIES - rack (= 1.0) - - BUNDLED WITH - #{Bundler::VERSION} - G - end - - it "raises if two different versions are used" do - install_gemfile <<-G - source "file://localhost#{gem_repo1}" - gem "rack", "1.0" - gem "rack", "1.1" - G - - expect(bundled_app("Gemfile.lock")).not_to exist - expect(out).to include "rack (= 1.0) and rack (= 1.1)" - end - - it "raises if two different sources are used" do - install_gemfile <<-G - source "file://localhost#{gem_repo1}" - gem "rack" - gem "rack", :git => "git://hubz.com" - G - - expect(bundled_app("Gemfile.lock")).not_to exist - expect(out).to include "rack (>= 0) should come from an unspecified source and git://hubz.com (at master)" - end - - it "works correctly with multiple version dependencies" do - install_gemfile <<-G - source "file://localhost#{gem_repo1}" - gem "rack", "> 0.9", "< 1.0" - G - - lockfile_should_be <<-G - GEM - remote: file://localhost#{gem_repo1}/ - specs: - rack (0.9.1) - - PLATFORMS - ruby - - DEPENDENCIES - rack (> 0.9, < 1.0) - - BUNDLED WITH - #{Bundler::VERSION} - G - end - - it "captures the Ruby version in the lockfile" do - install_gemfile <<-G - source "file://localhost#{gem_repo1}" - ruby '#{RUBY_VERSION}' - gem "rack", "> 0.9", "< 1.0" - G - - lockfile_should_be <<-G - GEM - remote: file://localhost#{gem_repo1}/ - specs: - rack (0.9.1) - - PLATFORMS - ruby - - DEPENDENCIES - rack (> 0.9, < 1.0) - - RUBY VERSION - ruby #{RUBY_VERSION}p#{RUBY_PATCHLEVEL} - - BUNDLED WITH - #{Bundler::VERSION} - G - end - - # Some versions of the Bundler 1.1 RC series introduced corrupted - # lockfiles. There were two major problems: - # - # * multiple copies of the same GIT section appeared in the lockfile - # * when this happened, those sections got multiple copies of gems - # in those sections. - it "fixes corrupted lockfiles" do - build_git "omg", :path => lib_path("omg") - revision = revision_for(lib_path("omg")) - - gemfile <<-G - source "file://localhost#{gem_repo1}" - gem "omg", :git => "#{lib_path("omg")}", :branch => 'master' - G - - bundle "install --path vendor" - expect(the_bundle).to include_gems "omg 1.0" - - # Create a Gemfile.lock that has duplicate GIT sections - lockfile <<-L - GIT - remote: #{lib_path("omg")} - revision: #{revision} - branch: master - specs: - omg (1.0) - - GIT - remote: #{lib_path("omg")} - revision: #{revision} - branch: master - specs: - omg (1.0) - - GEM - remote: file://localhost#{gem_repo1}/ - specs: - - PLATFORMS - #{local} - - DEPENDENCIES - omg! - - BUNDLED WITH - #{Bundler::VERSION} - L - - FileUtils.rm_rf(bundled_app("vendor")) - bundle "install" - expect(the_bundle).to include_gems "omg 1.0" - - # Confirm that duplicate specs do not appear - expect(File.read(bundled_app("Gemfile.lock"))).to eq(strip_whitespace(<<-L)) - GIT - remote: #{lib_path("omg")} - revision: #{revision} - branch: master - specs: - omg (1.0) - - GEM - remote: file://localhost#{gem_repo1}/ - specs: - - PLATFORMS - #{local} - - DEPENDENCIES - omg! - - BUNDLED WITH - #{Bundler::VERSION} - L - end - - it "raises a helpful error message when the lockfile is missing deps" do - lockfile <<-L - GEM - remote: file://localhost#{gem_repo1}/ - specs: - rack_middleware (1.0) - - PLATFORMS - #{local} - - DEPENDENCIES - rack_middleware - L - - install_gemfile <<-G - source "file:#{gem_repo1}" - gem "rack_middleware" - G - - expect(out).to include("Downloading rack_middleware-1.0 revealed dependencies not in the API or the lockfile (#{Gem::Dependency.new("rack", "= 0.9.1")})."). - and include("Either installing with `--full-index` or running `bundle update rack_middleware` should fix the problem.") - end - - describe "a line ending" do - def set_lockfile_mtime_to_known_value - time = Time.local(2000, 1, 1, 0, 0, 0) - File.utime(time, time, bundled_app("Gemfile.lock")) - end - before(:each) do - build_repo2 - - install_gemfile <<-G - source "file://localhost#{gem_repo2}" - gem "rack" - G - set_lockfile_mtime_to_known_value - end - - it "generates Gemfile.lock with \\n line endings" do - expect(File.read(bundled_app("Gemfile.lock"))).not_to match("\r\n") - expect(the_bundle).to include_gems "rack 1.0" - end - - context "during updates" do - it "preserves Gemfile.lock \\n line endings" do - update_repo2 - - expect { bundle "update", :all => true }.to change { File.mtime(bundled_app("Gemfile.lock")) } - expect(File.read(bundled_app("Gemfile.lock"))).not_to match("\r\n") - expect(the_bundle).to include_gems "rack 1.2" - end - - it "preserves Gemfile.lock \\n\\r line endings" do - update_repo2 - win_lock = File.read(bundled_app("Gemfile.lock")).gsub(/\n/, "\r\n") - File.open(bundled_app("Gemfile.lock"), "wb") {|f| f.puts(win_lock) } - set_lockfile_mtime_to_known_value - - expect { bundle "update", :all => true }.to change { File.mtime(bundled_app("Gemfile.lock")) } - expect(File.read(bundled_app("Gemfile.lock"))).to match("\r\n") - expect(the_bundle).to include_gems "rack 1.2" - end - end - - context "when nothing changes" do - it "preserves Gemfile.lock \\n line endings" do - expect do - ruby <<-RUBY - require 'rubygems' - require 'bundler' - Bundler.setup - RUBY - end.not_to change { File.mtime(bundled_app("Gemfile.lock")) } - end - - it "preserves Gemfile.lock \\n\\r line endings" do - win_lock = File.read(bundled_app("Gemfile.lock")).gsub(/\n/, "\r\n") - File.open(bundled_app("Gemfile.lock"), "wb") {|f| f.puts(win_lock) } - set_lockfile_mtime_to_known_value - - expect do - ruby <<-RUBY - require 'rubygems' - require 'bundler' - Bundler.setup - RUBY - end.not_to change { File.mtime(bundled_app("Gemfile.lock")) } - end - end - end - - it "refuses to install if Gemfile.lock contains conflict markers" do - lockfile <<-L - GEM - remote: file://localhost#{gem_repo1}/ - specs: - <<<<<<< - rack (1.0.0) - ======= - rack (1.0.1) - >>>>>>> - - PLATFORMS - ruby - - DEPENDENCIES - rack - - BUNDLED WITH - #{Bundler::VERSION} - L - - install_gemfile(<<-G) - source "file://localhost#{gem_repo1}" - gem "rack" - G - - expect(last_command.bundler_err).to match(/your Gemfile.lock contains merge conflicts/i) - expect(last_command.bundler_err).to match(/git checkout HEAD -- Gemfile.lock/i) - end -end diff --git a/spec/bundler/lock/lockfile_spec.rb b/spec/bundler/lock/lockfile_spec.rb deleted file mode 100644 index b4bf81ded2..0000000000 --- a/spec/bundler/lock/lockfile_spec.rb +++ /dev/null @@ -1,1425 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe "the lockfile format", :bundler => "2" do - include Bundler::GemHelpers - - before { ENV["BUNDLER_SPEC_IGNORE_COMPATIBILITY_GUARD"] = "TRUE" } - - it "generates a simple lockfile for a single source, gem" do - install_gemfile <<-G - source "file://#{gem_repo1}" - - gem "rack" - G - - lockfile_should_be <<-G - GEM - remote: file:#{gem_repo1}/ - specs: - rack (1.0.0) - - PLATFORMS - #{lockfile_platforms} - - DEPENDENCIES - rack - - BUNDLED WITH - #{Bundler::VERSION} - G - end - - it "updates the lockfile's bundler version if current ver. is newer" do - lockfile <<-L - GIT - remote: git://github.com/nex3/haml.git - revision: 8a2271f - specs: - - GEM - remote: file://#{gem_repo1}/ - specs: - rack (1.0.0) - - PLATFORMS - #{lockfile_platforms} - - DEPENDENCIES - omg! - rack - - BUNDLED WITH - 1.8.2 - L - - install_gemfile <<-G - source "file://#{gem_repo1}" - - gem "rack" - G - - lockfile_should_be <<-G - GEM - remote: file:#{gem_repo1}/ - specs: - rack (1.0.0) - - PLATFORMS - #{lockfile_platforms} - - DEPENDENCIES - rack - - BUNDLED WITH - #{Bundler::VERSION} - G - end - - it "does not update the lockfile's bundler version if nothing changed during bundle install" do - version = "#{Bundler::VERSION.split(".").first}.0.0.0.a" - - lockfile <<-L - GEM - remote: file:#{gem_repo1}/ - specs: - rack (1.0.0) - - PLATFORMS - #{lockfile_platforms} - - DEPENDENCIES - rack - - BUNDLED WITH - #{version} - L - - install_gemfile <<-G - source "file://#{gem_repo1}" - - gem "rack" - G - - lockfile_should_be <<-G - GEM - remote: file:#{gem_repo1}/ - specs: - rack (1.0.0) - - PLATFORMS - #{lockfile_platforms} - - DEPENDENCIES - rack - - BUNDLED WITH - #{version} - G - end - - it "updates the lockfile's bundler version if not present" do - lockfile <<-L - GEM - remote: file:#{gem_repo1}/ - specs: - rack (1.0.0) - - PLATFORMS - #{lockfile_platforms} - - DEPENDENCIES - rack - L - - install_gemfile <<-G - source "file://#{gem_repo1}" - - gem "rack", "> 0" - G - - lockfile_should_be <<-G - GEM - remote: file:#{gem_repo1}/ - specs: - rack (1.0.0) - - PLATFORMS - #{lockfile_platforms} - - DEPENDENCIES - rack (> 0) - - BUNDLED WITH - #{Bundler::VERSION} - G - end - - it "outputs a warning if the current is older than lockfile's bundler version" do - lockfile <<-L - GEM - remote: file:#{gem_repo1}/ - specs: - rack (1.0.0) - - PLATFORMS - #{generic_local_platform} - - DEPENDENCIES - rack - - BUNDLED WITH - 9999999.1.0 - L - - simulate_bundler_version "9999999.0.0" do - install_gemfile <<-G - source "file://#{gem_repo1}" - - gem "rack" - G - end - - warning_message = "the running version of Bundler (9999999.0.0) is older " \ - "than the version that created the lockfile (9999999.1.0)" - expect(last_command.bundler_err).to include warning_message - - lockfile_should_be <<-G - GEM - remote: file:#{gem_repo1}/ - specs: - rack (1.0.0) - - PLATFORMS - #{lockfile_platforms} - - DEPENDENCIES - rack - - BUNDLED WITH - 9999999.1.0 - G - end - - it "errors if the current is a major version older than lockfile's bundler version" do - lockfile <<-L - GEM - remote: file:#{gem_repo1}/ - specs: - rack (1.0.0) - - PLATFORMS - #{lockfile_platforms} - - DEPENDENCIES - rack - - BUNDLED WITH - 9999999.0.0 - L - - install_gemfile <<-G - source "file://#{gem_repo1}" - - gem "rack" - G - - expect(last_command).to be_failure - expect(last_command.bundler_err).to include("You must use Bundler 9999999 or greater with this lockfile.") - end - - it "shows a friendly error when running with a new bundler 2 lockfile" do - lockfile <<-L - GEM - remote: https://rails-assets.org/ - specs: - rails-assets-bootstrap (3.3.4) - rails-assets-jquery (>= 1.9.1) - rails-assets-jquery (2.1.4) - - GEM - remote: https://rubygems.org/ - specs: - rake (10.4.2) - - PLATFORMS - ruby - - DEPENDENCIES - rails-assets-bootstrap! - rake - - BUNDLED WITH - 9999999.0.0 - L - - install_gemfile <<-G - source 'https://rubygems.org' - gem 'rake' - - source 'https://rails-assets.org' do - gem 'rails-assets-bootstrap' - end - G - - expect(last_command).to be_failure - expect(out).to include("You must use Bundler 9999999 or greater with this lockfile.") - end - - it "warns when updating bundler major version" do - lockfile <<-L - GEM - remote: file:#{gem_repo1}/ - specs: - rack (1.0.0) - - PLATFORMS - #{generic_local_platform} - - DEPENDENCIES - rack - - BUNDLED WITH - 1.10.0 - L - - simulate_bundler_version "9999999.0.0" do - install_gemfile <<-G - source "file://#{gem_repo1}" - - gem "rack" - G - end - - expect(out).to include("Warning: the lockfile is being updated to Bundler " \ - "9999999, after which you will be unable to return to Bundler 1.") - - lockfile_should_be <<-G - GEM - remote: file:#{gem_repo1}/ - specs: - rack (1.0.0) - - PLATFORMS - #{lockfile_platforms} - - DEPENDENCIES - rack - - BUNDLED WITH - 9999999.0.0 - G - end - - it "generates a simple lockfile for a single source, gem with dependencies" do - install_gemfile <<-G - source "file://#{gem_repo1}" - - gem "rack-obama" - G - - lockfile_should_be <<-G - GEM - remote: file:#{gem_repo1}/ - specs: - rack (1.0.0) - rack-obama (1.0) - rack - - PLATFORMS - #{lockfile_platforms} - - DEPENDENCIES - rack-obama - - BUNDLED WITH - #{Bundler::VERSION} - G - end - - it "generates a simple lockfile for a single source, gem with a version requirement" do - install_gemfile <<-G - source "file://#{gem_repo1}" - - gem "rack-obama", ">= 1.0" - G - - lockfile_should_be <<-G - GEM - remote: file:#{gem_repo1}/ - specs: - rack (1.0.0) - rack-obama (1.0) - rack - - PLATFORMS - #{lockfile_platforms} - - DEPENDENCIES - rack-obama (>= 1.0) - - BUNDLED WITH - #{Bundler::VERSION} - G - end - - it "generates a lockfile without credentials for a configured source" do - bundle "config http://localgemserver.test/ user:pass" - - install_gemfile(<<-G, :artifice => "endpoint_strict_basic_authentication", :quiet => true) - source "http://localgemserver.test/" do - - end - - source "http://user:pass@othergemserver.test/" do - gem "rack-obama", ">= 1.0" - end - G - - lockfile_should_be <<-G - GEM - specs: - - GEM - remote: http://localgemserver.test/ - specs: - - GEM - remote: http://user:pass@othergemserver.test/ - specs: - rack (1.0.0) - rack-obama (1.0) - rack - - PLATFORMS - #{lockfile_platforms} - - DEPENDENCIES - rack-obama (>= 1.0)! - - BUNDLED WITH - #{Bundler::VERSION} - G - end - - it "generates lockfiles with multiple requirements" do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "net-sftp" - G - - lockfile_should_be <<-G - GEM - remote: file:#{gem_repo1}/ - specs: - net-sftp (1.1.1) - net-ssh (>= 1.0.0, < 1.99.0) - net-ssh (1.0) - - PLATFORMS - #{lockfile_platforms} - - DEPENDENCIES - net-sftp - - BUNDLED WITH - #{Bundler::VERSION} - G - - expect(the_bundle).to include_gems "net-sftp 1.1.1", "net-ssh 1.0.0" - end - - it "generates a simple lockfile for a single pinned source, gem with a version requirement", :bundler => "< 2" do - git = build_git "foo" - - install_gemfile <<-G - gem "foo", :git => "#{lib_path("foo-1.0")}" - G - - lockfile_should_be <<-G - GIT - remote: #{lib_path("foo-1.0")} - revision: #{git.ref_for("master")} - specs: - foo (1.0) - - GEM - specs: - - PLATFORMS - #{lockfile_platforms} - - DEPENDENCIES - foo! - - BUNDLED WITH - #{Bundler::VERSION} - G - end - - it "generates a simple lockfile for a single pinned source, gem with a version requirement" do - git = build_git "foo" - - install_gemfile <<-G - gem "foo", :git => "#{lib_path("foo-1.0")}" - G - - lockfile_should_be <<-G - GEM - specs: - - GIT - remote: #{lib_path("foo-1.0")} - revision: #{git.ref_for("master")} - specs: - foo (1.0) - - PLATFORMS - #{lockfile_platforms} - - DEPENDENCIES - foo! - - BUNDLED WITH - #{Bundler::VERSION} - G - end - - it "does not asplode when a platform specific dependency is present and the Gemfile has not been resolved on that platform" do - build_lib "omg", :path => lib_path("omg") - - gemfile <<-G - source "file://#{gem_repo1}" - - platforms :#{not_local_tag} do - gem "omg", :path => "#{lib_path("omg")}" - end - - gem "rack" - G - - lockfile <<-L - GIT - remote: git://github.com/nex3/haml.git - revision: 8a2271f - specs: - - GEM - remote: file://#{gem_repo1}/ - specs: - rack (1.0.0) - - PLATFORMS - #{not_local} - - DEPENDENCIES - omg! - rack - - BUNDLED WITH - #{Bundler::VERSION} - L - - bundle! "install" - expect(the_bundle).to include_gems "rack 1.0.0" - end - - it "serializes global git sources" do - git = build_git "foo" - - install_gemfile <<-G - git "#{lib_path("foo-1.0")}" do - gem "foo" - end - G - - lockfile_should_be <<-G - GEM - specs: - - GIT - remote: #{lib_path("foo-1.0")} - revision: #{git.ref_for("master")} - specs: - foo (1.0) - - PLATFORMS - #{lockfile_platforms} - - DEPENDENCIES - foo! - - BUNDLED WITH - #{Bundler::VERSION} - G - end - - it "generates a lockfile with a ref for a single pinned source, git gem with a branch requirement" do - git = build_git "foo" - update_git "foo", :branch => "omg" - - install_gemfile <<-G - gem "foo", :git => "#{lib_path("foo-1.0")}", :branch => "omg" - G - - lockfile_should_be <<-G - GEM - specs: - - GIT - remote: #{lib_path("foo-1.0")} - revision: #{git.ref_for("omg")} - branch: omg - specs: - foo (1.0) - - PLATFORMS - #{lockfile_platforms} - - DEPENDENCIES - foo! - - BUNDLED WITH - #{Bundler::VERSION} - G - end - - it "generates a lockfile with a ref for a single pinned source, git gem with a tag requirement" do - git = build_git "foo" - update_git "foo", :tag => "omg" - - install_gemfile <<-G - gem "foo", :git => "#{lib_path("foo-1.0")}", :tag => "omg" - G - - lockfile_should_be <<-G - GEM - specs: - - GIT - remote: #{lib_path("foo-1.0")} - revision: #{git.ref_for("omg")} - tag: omg - specs: - foo (1.0) - - PLATFORMS - #{lockfile_platforms} - - DEPENDENCIES - foo! - - BUNDLED WITH - #{Bundler::VERSION} - G - end - - it "serializes pinned path sources to the lockfile" do - build_lib "foo" - - install_gemfile <<-G - gem "foo", :path => "#{lib_path("foo-1.0")}" - G - - lockfile_should_be <<-G - GEM - specs: - - PATH - remote: #{lib_path("foo-1.0")} - specs: - foo (1.0) - - PLATFORMS - #{lockfile_platforms} - - DEPENDENCIES - foo! - - BUNDLED WITH - #{Bundler::VERSION} - G - end - - it "serializes pinned path sources to the lockfile even when packaging" do - build_lib "foo" - - install_gemfile! <<-G - gem "foo", :path => "#{lib_path("foo-1.0")}" - G - - bundle! :package, forgotten_command_line_options([:all, :cache_all] => true) - bundle! :install, :local => true - - lockfile_should_be <<-G - GEM - specs: - - PATH - remote: #{lib_path("foo-1.0")} - specs: - foo (1.0) - - PLATFORMS - #{lockfile_platforms} - - DEPENDENCIES - foo! - - BUNDLED WITH - #{Bundler::VERSION} - G - end - - it "sorts serialized sources by type" do - build_lib "foo" - bar = build_git "bar" - - install_gemfile <<-G - source "file://#{gem_repo1}" - - gem "rack" - gem "foo", :path => "#{lib_path("foo-1.0")}" - gem "bar", :git => "#{lib_path("bar-1.0")}" - G - - lockfile_should_be <<-G - GEM - remote: file:#{gem_repo1}/ - specs: - rack (1.0.0) - - GIT - remote: #{lib_path("bar-1.0")} - revision: #{bar.ref_for("master")} - specs: - bar (1.0) - - PATH - remote: #{lib_path("foo-1.0")} - specs: - foo (1.0) - - PLATFORMS - #{lockfile_platforms} - - DEPENDENCIES - bar! - foo! - rack - - BUNDLED WITH - #{Bundler::VERSION} - G - end - - it "lists gems alphabetically" do - install_gemfile <<-G - source "file://#{gem_repo1}" - - gem "thin" - gem "actionpack" - gem "rack-obama" - G - - lockfile_should_be <<-G - GEM - remote: file:#{gem_repo1}/ - specs: - actionpack (2.3.2) - activesupport (= 2.3.2) - activesupport (2.3.2) - rack (1.0.0) - rack-obama (1.0) - rack - thin (1.0) - rack - - PLATFORMS - #{lockfile_platforms} - - DEPENDENCIES - actionpack - rack-obama - thin - - BUNDLED WITH - #{Bundler::VERSION} - G - end - - it "orders dependencies' dependencies in alphabetical order" do - install_gemfile <<-G - source "file://#{gem_repo1}" - - gem "rails" - G - - lockfile_should_be <<-G - GEM - remote: file:#{gem_repo1}/ - specs: - actionmailer (2.3.2) - activesupport (= 2.3.2) - actionpack (2.3.2) - activesupport (= 2.3.2) - activerecord (2.3.2) - activesupport (= 2.3.2) - activeresource (2.3.2) - activesupport (= 2.3.2) - activesupport (2.3.2) - rails (2.3.2) - actionmailer (= 2.3.2) - actionpack (= 2.3.2) - activerecord (= 2.3.2) - activeresource (= 2.3.2) - rake (= 10.0.2) - rake (10.0.2) - - PLATFORMS - #{lockfile_platforms} - - DEPENDENCIES - rails - - BUNDLED WITH - #{Bundler::VERSION} - G - end - - it "orders dependencies by version" do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem 'double_deps' - G - - lockfile_should_be <<-G - GEM - remote: file:#{gem_repo1}/ - specs: - double_deps (1.0) - net-ssh - net-ssh (>= 1.0.0) - net-ssh (1.0) - - PLATFORMS - #{lockfile_platforms} - - DEPENDENCIES - double_deps - - BUNDLED WITH - #{Bundler::VERSION} - G - end - - it "does not add the :require option to the lockfile" do - install_gemfile <<-G - source "file://#{gem_repo1}" - - gem "rack-obama", ">= 1.0", :require => "rack/obama" - G - - lockfile_should_be <<-G - GEM - remote: file:#{gem_repo1}/ - specs: - rack (1.0.0) - rack-obama (1.0) - rack - - PLATFORMS - #{lockfile_platforms} - - DEPENDENCIES - rack-obama (>= 1.0) - - BUNDLED WITH - #{Bundler::VERSION} - G - end - - it "does not add the :group option to the lockfile" do - install_gemfile <<-G - source "file://#{gem_repo1}" - - gem "rack-obama", ">= 1.0", :group => :test - G - - lockfile_should_be <<-G - GEM - remote: file:#{gem_repo1}/ - specs: - rack (1.0.0) - rack-obama (1.0) - rack - - PLATFORMS - #{lockfile_platforms} - - DEPENDENCIES - rack-obama (>= 1.0) - - BUNDLED WITH - #{Bundler::VERSION} - G - end - - it "stores relative paths when the path is provided in a relative fashion and in Gemfile dir" do - build_lib "foo", :path => bundled_app("foo") - - install_gemfile <<-G - path "foo" do - gem "foo" - end - G - - lockfile_should_be <<-G - GEM - specs: - - PATH - remote: foo - specs: - foo (1.0) - - PLATFORMS - #{lockfile_platforms} - - DEPENDENCIES - foo! - - BUNDLED WITH - #{Bundler::VERSION} - G - end - - it "stores relative paths when the path is provided in a relative fashion and is above Gemfile dir" do - build_lib "foo", :path => bundled_app(File.join("..", "foo")) - - install_gemfile <<-G - path "../foo" do - gem "foo" - end - G - - lockfile_should_be <<-G - GEM - specs: - - PATH - remote: ../foo - specs: - foo (1.0) - - PLATFORMS - #{lockfile_platforms} - - DEPENDENCIES - foo! - - BUNDLED WITH - #{Bundler::VERSION} - G - end - - it "stores relative paths when the path is provided in an absolute fashion but is relative" do - build_lib "foo", :path => bundled_app("foo") - - install_gemfile <<-G - path File.expand_path("../foo", __FILE__) do - gem "foo" - end - G - - lockfile_should_be <<-G - GEM - specs: - - PATH - remote: foo - specs: - foo (1.0) - - PLATFORMS - #{lockfile_platforms} - - DEPENDENCIES - foo! - - BUNDLED WITH - #{Bundler::VERSION} - G - end - - it "stores relative paths when the path is provided for gemspec" do - build_lib("foo", :path => tmp.join("foo")) - - install_gemfile <<-G - gemspec :path => "../foo" - G - - lockfile_should_be <<-G - GEM - specs: - - PATH - remote: ../foo - specs: - foo (1.0) - - PLATFORMS - #{lockfile_platforms} - - DEPENDENCIES - foo! - - BUNDLED WITH - #{Bundler::VERSION} - G - end - - it "keeps existing platforms in the lockfile" do - lockfile <<-G - GEM - remote: file:#{gem_repo1}/ - specs: - rack (1.0.0) - - PLATFORMS - java - - DEPENDENCIES - rack - - BUNDLED WITH - #{Bundler::VERSION} - G - - install_gemfile <<-G - source "file://#{gem_repo1}" - - gem "rack" - G - - lockfile_should_be <<-G - GEM - remote: file:#{gem_repo1}/ - specs: - rack (1.0.0) - - PLATFORMS - #{lockfile_platforms "java", generic_local_platform, specific_local_platform} - - DEPENDENCIES - rack - - BUNDLED WITH - #{Bundler::VERSION} - G - end - - it "persists the spec's platform to the lockfile" do - build_repo2 do - build_gem "platform_specific", "1.0" do |s| - s.platform = Gem::Platform.new("universal-java-16") - end - end - - simulate_platform "universal-java-16" - - install_gemfile! <<-G - source "file://#{gem_repo2}" - gem "platform_specific" - G - - lockfile_should_be <<-G - GEM - remote: file:#{gem_repo2}/ - specs: - platform_specific (1.0-java) - platform_specific (1.0-universal-java-16) - - PLATFORMS - java - universal-java-16 - - DEPENDENCIES - platform_specific - - BUNDLED WITH - #{Bundler::VERSION} - G - end - - it "does not add duplicate gems" do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - G - - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - gem "activesupport" - G - - lockfile_should_be <<-G - GEM - remote: file:#{gem_repo1}/ - specs: - activesupport (2.3.5) - rack (1.0.0) - - PLATFORMS - #{lockfile_platforms} - - DEPENDENCIES - activesupport - rack - - BUNDLED WITH - #{Bundler::VERSION} - G - end - - it "does not add duplicate dependencies" do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - gem "rack" - G - - lockfile_should_be <<-G - GEM - remote: file:#{gem_repo1}/ - specs: - rack (1.0.0) - - PLATFORMS - #{lockfile_platforms} - - DEPENDENCIES - rack - - BUNDLED WITH - #{Bundler::VERSION} - G - end - - it "does not add duplicate dependencies with versions" do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "rack", "1.0" - gem "rack", "1.0" - G - - lockfile_should_be <<-G - GEM - remote: file:#{gem_repo1}/ - specs: - rack (1.0.0) - - PLATFORMS - #{lockfile_platforms} - - DEPENDENCIES - rack (= 1.0) - - BUNDLED WITH - #{Bundler::VERSION} - G - end - - it "does not add duplicate dependencies in different groups" do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "rack", "1.0", :group => :one - gem "rack", "1.0", :group => :two - G - - lockfile_should_be <<-G - GEM - remote: file:#{gem_repo1}/ - specs: - rack (1.0.0) - - PLATFORMS - #{lockfile_platforms} - - DEPENDENCIES - rack (= 1.0) - - BUNDLED WITH - #{Bundler::VERSION} - G - end - - it "raises if two different versions are used" do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "rack", "1.0" - gem "rack", "1.1" - G - - expect(bundled_app("Gemfile.lock")).not_to exist - expect(out).to include "rack (= 1.0) and rack (= 1.1)" - end - - it "raises if two different sources are used" do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - gem "rack", :git => "git://hubz.com" - G - - expect(bundled_app("Gemfile.lock")).not_to exist - expect(out).to include "rack (>= 0) should come from an unspecified source and git://hubz.com (at master)" - end - - it "works correctly with multiple version dependencies" do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "rack", "> 0.9", "< 1.0" - G - - lockfile_should_be <<-G - GEM - remote: file:#{gem_repo1}/ - specs: - rack (0.9.1) - - PLATFORMS - #{lockfile_platforms} - - DEPENDENCIES - rack (> 0.9, < 1.0) - - BUNDLED WITH - #{Bundler::VERSION} - G - end - - it "captures the Ruby version in the lockfile" do - install_gemfile <<-G - source "file://#{gem_repo1}" - ruby '#{RUBY_VERSION}' - gem "rack", "> 0.9", "< 1.0" - G - - lockfile_should_be <<-G - GEM - remote: file:#{gem_repo1}/ - specs: - rack (0.9.1) - - PLATFORMS - #{lockfile_platforms} - - DEPENDENCIES - rack (> 0.9, < 1.0) - - RUBY VERSION - ruby #{RUBY_VERSION}p#{RUBY_PATCHLEVEL} - - BUNDLED WITH - #{Bundler::VERSION} - G - end - - # Some versions of the Bundler 1.1 RC series introduced corrupted - # lockfiles. There were two major problems: - # - # * multiple copies of the same GIT section appeared in the lockfile - # * when this happened, those sections got multiple copies of gems - # in those sections. - it "fixes corrupted lockfiles" do - build_git "omg", :path => lib_path("omg") - revision = revision_for(lib_path("omg")) - - gemfile <<-G - source "file://#{gem_repo1}" - gem "omg", :git => "#{lib_path("omg")}", :branch => 'master' - G - - bundle! :install, forgotten_command_line_options(:path => "vendor") - expect(the_bundle).to include_gems "omg 1.0" - - # Create a Gemfile.lock that has duplicate GIT sections - lockfile <<-L - GEM - remote: file:#{gem_repo1}/ - specs: - - GIT - remote: #{lib_path("omg")} - revision: #{revision} - branch: master - specs: - omg (1.0) - - GIT - remote: #{lib_path("omg")} - revision: #{revision} - branch: master - specs: - omg (1.0) - - PLATFORMS - #{lockfile_platforms} - - DEPENDENCIES - omg! - - BUNDLED WITH - #{Bundler::VERSION} - L - - FileUtils.rm_rf(bundled_app("vendor")) - bundle "install" - expect(the_bundle).to include_gems "omg 1.0" - - # Confirm that duplicate specs do not appear - expect(File.read(bundled_app("Gemfile.lock"))).to eq(strip_whitespace(<<-L)) - GEM - remote: file:#{gem_repo1}/ - specs: - - GIT - remote: #{lib_path("omg")} - revision: #{revision} - branch: master - specs: - omg (1.0) - - PLATFORMS - #{lockfile_platforms} - - DEPENDENCIES - omg! - - BUNDLED WITH - #{Bundler::VERSION} - L - end - - it "raises a helpful error message when the lockfile is missing deps" do - lockfile <<-L - GEM - remote: file:#{gem_repo1}/ - specs: - rack_middleware (1.0) - - PLATFORMS - #{lockfile_platforms} - - DEPENDENCIES - rack_middleware - L - - install_gemfile <<-G - source "file:#{gem_repo1}" - gem "rack_middleware" - G - - expect(out).to include("Downloading rack_middleware-1.0 revealed dependencies not in the API or the lockfile (#{Gem::Dependency.new("rack", "= 0.9.1")})."). - and include("Either installing with `--full-index` or running `bundle update rack_middleware` should fix the problem.") - end - - describe "a line ending" do - def set_lockfile_mtime_to_known_value - time = Time.local(2000, 1, 1, 0, 0, 0) - File.utime(time, time, bundled_app("Gemfile.lock")) - end - before(:each) do - build_repo2 - - install_gemfile <<-G - source "file://#{gem_repo2}" - gem "rack" - G - set_lockfile_mtime_to_known_value - end - - it "generates Gemfile.lock with \\n line endings" do - expect(File.read(bundled_app("Gemfile.lock"))).not_to match("\r\n") - expect(the_bundle).to include_gems "rack 1.0" - end - - context "during updates" do - it "preserves Gemfile.lock \\n line endings" do - update_repo2 - - expect { bundle "update", :all => true }.to change { File.mtime(bundled_app("Gemfile.lock")) } - expect(File.read(bundled_app("Gemfile.lock"))).not_to match("\r\n") - expect(the_bundle).to include_gems "rack 1.2" - end - - it "preserves Gemfile.lock \\n\\r line endings" do - update_repo2 - win_lock = File.read(bundled_app("Gemfile.lock")).gsub(/\n/, "\r\n") - File.open(bundled_app("Gemfile.lock"), "wb") {|f| f.puts(win_lock) } - set_lockfile_mtime_to_known_value - - expect { bundle "update", :all => true }.to change { File.mtime(bundled_app("Gemfile.lock")) } - expect(File.read(bundled_app("Gemfile.lock"))).to match("\r\n") - expect(the_bundle).to include_gems "rack 1.2" - end - end - - context "when nothing changes" do - it "preserves Gemfile.lock \\n line endings" do - expect do - ruby <<-RUBY - require 'rubygems' - require 'bundler' - Bundler.setup - RUBY - end.not_to change { File.mtime(bundled_app("Gemfile.lock")) } - end - - it "preserves Gemfile.lock \\n\\r line endings" do - win_lock = File.read(bundled_app("Gemfile.lock")).gsub(/\n/, "\r\n") - File.open(bundled_app("Gemfile.lock"), "wb") {|f| f.puts(win_lock) } - set_lockfile_mtime_to_known_value - - expect do - ruby <<-RUBY - require 'rubygems' - require 'bundler' - Bundler.setup - RUBY - end.not_to change { File.mtime(bundled_app("Gemfile.lock")) } - end - end - end - - it "refuses to install if Gemfile.lock contains conflict markers" do - lockfile <<-L - GEM - remote: file://#{gem_repo1}/ - specs: - <<<<<<< - rack (1.0.0) - ======= - rack (1.0.1) - >>>>>>> - - PLATFORMS - #{lockfile_platforms} - - DEPENDENCIES - rack - - BUNDLED WITH - #{Bundler::VERSION} - L - - install_gemfile(<<-G) - source "file://#{gem_repo1}" - gem "rack" - G - - expect(last_command.bundler_err).to match(/your Gemfile.lock contains merge conflicts/i) - expect(last_command.bundler_err).to match(/git checkout HEAD -- Gemfile.lock/i) - end -end diff --git a/spec/bundler/other/bundle_ruby_spec.rb b/spec/bundler/other/bundle_ruby_spec.rb deleted file mode 100644 index 87e1b8b085..0000000000 --- a/spec/bundler/other/bundle_ruby_spec.rb +++ /dev/null @@ -1,142 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe "bundle_ruby", :ruby_repo, :bundler => "< 2" do - context "without patchlevel" do - it "returns the ruby version" do - gemfile <<-G - source "file://#{gem_repo1}" - ruby "1.9.3", :engine => 'ruby', :engine_version => '1.9.3' - - gem "foo" - G - - bundle_ruby - - expect(out).to include("ruby 1.9.3") - end - - it "engine defaults to MRI" do - gemfile <<-G - source "file://#{gem_repo1}" - ruby "1.9.3" - - gem "foo" - G - - bundle_ruby - - expect(out).to include("ruby 1.9.3") - end - - it "handles jruby" do - gemfile <<-G - source "file://#{gem_repo1}" - ruby "1.8.7", :engine => 'jruby', :engine_version => '1.6.5' - - gem "foo" - G - - bundle_ruby - - expect(out).to include("ruby 1.8.7 (jruby 1.6.5)") - end - - it "handles rbx" do - gemfile <<-G - source "file://#{gem_repo1}" - ruby "1.8.7", :engine => 'rbx', :engine_version => '1.2.4' - - gem "foo" - G - - bundle_ruby - - expect(out).to include("ruby 1.8.7 (rbx 1.2.4)") - end - - it "raises an error if engine is used but engine version is not" do - gemfile <<-G - source "file://#{gem_repo1}" - ruby "1.8.7", :engine => 'rbx' - - gem "foo" - G - - bundle_ruby - expect(exitstatus).not_to eq(0) if exitstatus - - bundle_ruby - expect(out).to include("Please define :engine_version") - end - - it "raises an error if engine_version is used but engine is not" do - gemfile <<-G - source "file://#{gem_repo1}" - ruby "1.8.7", :engine_version => '1.2.4' - - gem "foo" - G - - bundle_ruby - expect(exitstatus).not_to eq(0) if exitstatus - - bundle_ruby - expect(out).to include("Please define :engine") - end - - it "raises an error if engine version doesn't match ruby version for MRI" do - gemfile <<-G - source "file://#{gem_repo1}" - ruby "1.8.7", :engine => 'ruby', :engine_version => '1.2.4' - - gem "foo" - G - - bundle_ruby - expect(exitstatus).not_to eq(0) if exitstatus - - bundle_ruby - expect(out).to include("ruby_version must match the :engine_version for MRI") - end - - it "should print if no ruby version is specified" do - gemfile <<-G - source "file://#{gem_repo1}" - - gem "foo" - G - - bundle_ruby - - expect(out).to include("No ruby version specified") - end - end - - context "when using patchlevel" do - it "returns the ruby version" do - gemfile <<-G - source "file://#{gem_repo1}" - ruby "1.9.3", :patchlevel => '429', :engine => 'ruby', :engine_version => '1.9.3' - - gem "foo" - G - - bundle_ruby - - expect(out).to include("ruby 1.9.3p429") - end - - it "handles an engine" do - gemfile <<-G - source "file://#{gem_repo1}" - ruby "1.9.3", :patchlevel => '392', :engine => 'jruby', :engine_version => '1.7.4' - - gem "foo" - G - - bundle_ruby - - expect(out).to include("ruby 1.9.3p392 (jruby 1.7.4)") - end - end -end diff --git a/spec/bundler/other/cli_dispatch_spec.rb b/spec/bundler/other/cli_dispatch_spec.rb deleted file mode 100644 index a9d0bf7462..0000000000 --- a/spec/bundler/other/cli_dispatch_spec.rb +++ /dev/null @@ -1,29 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe "bundle command names" do - it "work when given fully" do - bundle "install" - expect(last_command.bundler_err).to eq("Could not locate Gemfile") - expect(last_command.stdboth).not_to include("Ambiguous command") - end - - it "work when not ambiguous" do - bundle "ins" - expect(last_command.bundler_err).to eq("Could not locate Gemfile") - expect(last_command.stdboth).not_to include("Ambiguous command") - end - - it "print a friendly error when ambiguous" do - bundle "in" - expect(last_command.bundler_err).to eq("Ambiguous command in matches [info, init, inject, install]") - end - - context "when cache_command_is_package is set" do - before { bundle! "config cache_command_is_package true" } - - it "dispatches `bundle cache` to the package command" do - bundle "cache --verbose" - expect(last_command.stdout).to start_with "Running `bundle package --no-color --verbose`" - end - end -end diff --git a/spec/bundler/other/compatibility_guard_spec.rb b/spec/bundler/other/compatibility_guard_spec.rb deleted file mode 100644 index ac05ebd918..0000000000 --- a/spec/bundler/other/compatibility_guard_spec.rb +++ /dev/null @@ -1,25 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe "bundler compatibility guard" do - context "when the bundler version is 2+" do - before { simulate_bundler_version "2.0.a" } - - context "when running on Ruby < 2.3", :ruby => "< 2.3" do - before { simulate_rubygems_version "2.6.11" } - - it "raises a friendly error" do - bundle :version - expect(err).to eq("Bundler 2 requires Ruby 2.3 or later. Either install bundler 1 or update to a supported Ruby version.") - end - end - - context "when running on RubyGems < 2.5", :ruby => ">= 2.5" do - before { simulate_rubygems_version "1.3.6" } - - it "raises a friendly error" do - bundle :version - expect(err).to eq("Bundler 2 requires RubyGems 2.5 or later. Either install bundler 1 or update to a supported RubyGems version.") - end - end - end -end diff --git a/spec/bundler/other/ext_spec.rb b/spec/bundler/other/ext_spec.rb deleted file mode 100644 index 3f6f8b4928..0000000000 --- a/spec/bundler/other/ext_spec.rb +++ /dev/null @@ -1,66 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe "Gem::Specification#match_platform" do - it "does not match platforms other than the gem platform" do - darwin = gem "lol", "1.0", "platform_specific-1.0-x86-darwin-10" - expect(darwin.match_platform(pl("java"))).to eq(false) - end - - context "when platform is a string" do - it "matches when platform is a string" do - lazy_spec = Bundler::LazySpecification.new("lol", "1.0", "universal-mingw32") - expect(lazy_spec.match_platform(pl("x86-mingw32"))).to eq(true) - expect(lazy_spec.match_platform(pl("x64-mingw32"))).to eq(true) - end - end -end - -RSpec.describe "Bundler::GemHelpers#generic" do - include Bundler::GemHelpers - - it "converts non-windows platforms into ruby" do - expect(generic(pl("x86-darwin-10"))).to eq(pl("ruby")) - expect(generic(pl("ruby"))).to eq(pl("ruby")) - end - - it "converts java platform variants into java" do - expect(generic(pl("universal-java-17"))).to eq(pl("java")) - expect(generic(pl("java"))).to eq(pl("java")) - end - - it "converts mswin platform variants into x86-mswin32" do - expect(generic(pl("mswin32"))).to eq(pl("x86-mswin32")) - expect(generic(pl("i386-mswin32"))).to eq(pl("x86-mswin32")) - expect(generic(pl("x86-mswin32"))).to eq(pl("x86-mswin32")) - end - - it "converts 32-bit mingw platform variants into x86-mingw32" do - expect(generic(pl("mingw32"))).to eq(pl("x86-mingw32")) - expect(generic(pl("i386-mingw32"))).to eq(pl("x86-mingw32")) - expect(generic(pl("x86-mingw32"))).to eq(pl("x86-mingw32")) - end - - it "converts 64-bit mingw platform variants into x64-mingw32" do - expect(generic(pl("x64-mingw32"))).to eq(pl("x64-mingw32")) - expect(generic(pl("x86_64-mingw32"))).to eq(pl("x64-mingw32")) - end -end - -RSpec.describe "Gem::SourceIndex#refresh!" do - before do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - G - end - - it "does not explode when called", :rubygems => "1.7" do - run "Gem.source_index.refresh!" - run "Gem::SourceIndex.new([]).refresh!" - end - - it "does not explode when called", :rubygems => "< 1.7" do - run "Gem.source_index.refresh!" - run "Gem::SourceIndex.from_gems_in([]).refresh!" - end -end diff --git a/spec/bundler/other/major_deprecation_spec.rb b/spec/bundler/other/major_deprecation_spec.rb deleted file mode 100644 index fba177b497..0000000000 --- a/spec/bundler/other/major_deprecation_spec.rb +++ /dev/null @@ -1,282 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe "major deprecations", :bundler => "< 2" do - let(:warnings) { last_command.bundler_err } # change to err in 2.0 - let(:warnings_without_version_messages) { warnings.gsub(/#{Spec::Matchers::MAJOR_DEPRECATION}Bundler will only support ruby(gems)? >= .*/, "") } - - context "in a .99 version" do - before do - simulate_bundler_version "1.99.1" - bundle "config --delete major_deprecations" - end - - it "prints major deprecations without being configured" do - ruby <<-R - require "bundler" - Bundler::SharedHelpers.major_deprecation(Bundler::VERSION) - R - - expect(warnings).to have_major_deprecation("1.99.1") - end - end - - before do - bundle "config major_deprecations true" - - create_file "gems.rb", <<-G - source "file:#{gem_repo1}" - ruby #{RUBY_VERSION.dump} - gem "rack" - G - bundle! "install" - end - - describe "bundle_ruby" do - it "prints a deprecation" do - bundle_ruby - warnings.gsub! "\nruby #{RUBY_VERSION}", "" - expect(warnings).to have_major_deprecation "the bundle_ruby executable has been removed in favor of `bundle platform --ruby`" - end - end - - describe "Bundler" do - describe ".clean_env" do - it "is deprecated in favor of .original_env" do - source = "Bundler.clean_env" - bundle "exec ruby -e #{source.dump}" - expect(warnings).to have_major_deprecation "`Bundler.clean_env` has weird edge cases, use `.original_env` instead" - end - end - - describe ".environment" do - it "is deprecated in favor of .load" do - source = "Bundler.environment" - bundle "exec ruby -e #{source.dump}" - expect(warnings).to have_major_deprecation "Bundler.environment has been removed in favor of Bundler.load" - end - end - - shared_examples_for "environmental deprecations" do |trigger| - describe "ruby version", :ruby => "< 2.0" do - it "requires a newer ruby version" do - instance_eval(&trigger) - expect(warnings).to have_major_deprecation "Bundler will only support ruby >= 2.0, you are running #{RUBY_VERSION}" - end - end - - describe "rubygems version", :rubygems => "< 2.0" do - it "requires a newer rubygems version" do - instance_eval(&trigger) - expect(warnings).to have_major_deprecation "Bundler will only support rubygems >= 2.0, you are running #{Gem::VERSION}" - end - end - end - - describe "-rbundler/setup" do - it_behaves_like "environmental deprecations", proc { ruby "require 'bundler/setup'" } - end - - describe "Bundler.setup" do - it_behaves_like "environmental deprecations", proc { ruby "require 'bundler'; Bundler.setup" } - end - - describe "bundle check" do - it_behaves_like "environmental deprecations", proc { bundle :check } - end - - describe "bundle update --quiet" do - it "does not print any deprecations" do - bundle :update, :quiet => true - expect(warnings_without_version_messages).not_to have_major_deprecation - end - end - - describe "bundle update" do - before do - create_file("gems.rb", "") - bundle! "install" - end - - it "warns when no options are given" do - bundle! "update" - expect(warnings).to have_major_deprecation a_string_including("Pass --all to `bundle update` to update everything") - end - - it "does not warn when --all is passed" do - bundle! "update --all" - expect(warnings_without_version_messages).not_to have_major_deprecation - end - end - - describe "bundle install --binstubs" do - it "should output a deprecation warning" do - gemfile <<-G - gem 'rack' - G - - bundle :install, :binstubs => true - expect(warnings).to have_major_deprecation a_string_including("The --binstubs option will be removed") - end - end - end - - context "when bundle is run" do - it "should not warn about gems.rb" do - create_file "gems.rb", <<-G - source "file://#{gem_repo1}" - gem "rack" - G - - bundle :install - expect(warnings_without_version_messages).not_to have_major_deprecation - end - - it "should print a Gemfile deprecation warning" do - create_file "gems.rb" - install_gemfile! <<-G - source "file://#{gem_repo1}" - gem "rack" - G - expect(the_bundle).to include_gem "rack 1.0" - - expect(warnings).to have_major_deprecation a_string_including("gems.rb and gems.locked will be preferred to Gemfile and Gemfile.lock.") - end - - context "with flags" do - it "should print a deprecation warning about autoremembering flags" do - install_gemfile <<-G, :path => "vendor/bundle" - source "file://#{gem_repo1}" - gem "rack" - G - - expect(warnings).to have_major_deprecation a_string_including( - "flags passed to commands will no longer be automatically remembered." - ) - end - end - end - - context "when Bundler.setup is run in a ruby script" do - it "should print a single deprecation warning" do - create_file "gems.rb" - install_gemfile! <<-G - source "file://#{gem_repo1}" - gem "rack", :group => :test - G - - ruby <<-RUBY - require 'rubygems' - require 'bundler' - require 'bundler/vendored_thor' - - Bundler.ui = Bundler::UI::Shell.new - Bundler.setup - Bundler.setup - RUBY - - expect(warnings_without_version_messages).to have_major_deprecation("gems.rb and gems.locked will be preferred to Gemfile and Gemfile.lock.") - end - end - - context "when `bundler/deployment` is required in a ruby script" do - it "should print a capistrano deprecation warning" do - ruby(<<-RUBY) - require 'bundler/deployment' - RUBY - - expect(warnings).to have_major_deprecation("Bundler no longer integrates " \ - "with Capistrano, but Capistrano provides " \ - "its own integration with Bundler via the " \ - "capistrano-bundler gem. Use it instead.") - end - end - - describe Bundler::Dsl do - before do - @rubygems = double("rubygems") - allow(Bundler::Source::Rubygems).to receive(:new) { @rubygems } - end - - context "with github gems" do - it "warns about the https change" do - msg = <<-EOS -The :github git source is deprecated, and will be removed in Bundler 2.0. Change any "reponame" :github sources to "username/reponame". Add this code to the top of your Gemfile to ensure it continues to work: - - git_source(:github) {|repo_name| "https://github.com/\#{repo_name}.git" } - - EOS - expect(Bundler::SharedHelpers).to receive(:major_deprecation).with(2, msg) - subject.gem("sparks", :github => "indirect/sparks") - end - - it "upgrades to https on request" do - Bundler.settings.temporary "github.https" => true - msg = <<-EOS -The :github git source is deprecated, and will be removed in Bundler 2.0. Change any "reponame" :github sources to "username/reponame". Add this code to the top of your Gemfile to ensure it continues to work: - - git_source(:github) {|repo_name| "https://github.com/\#{repo_name}.git" } - - EOS - expect(Bundler::SharedHelpers).to receive(:major_deprecation).with(2, msg) - expect(Bundler::SharedHelpers).to receive(:major_deprecation).with(2, "The `github.https` setting will be removed") - subject.gem("sparks", :github => "indirect/sparks") - github_uri = "https://github.com/indirect/sparks.git" - expect(subject.dependencies.first.source.uri).to eq(github_uri) - end - end - - context "with bitbucket gems" do - it "warns about removal" do - allow(Bundler.ui).to receive(:deprecate) - msg = <<-EOS -The :bitbucket git source is deprecated, and will be removed in Bundler 2.0. Add this code to the top of your Gemfile to ensure it continues to work: - - git_source(:bitbucket) do |repo_name| - user_name, repo_name = repo_name.split("/") - repo_name ||= user_name - "https://\#{user_name}@bitbucket.org/\#{user_name}/\#{repo_name}.git" - end - - EOS - expect(Bundler::SharedHelpers).to receive(:major_deprecation).with(2, msg) - subject.gem("not-really-a-gem", :bitbucket => "mcorp/flatlab-rails") - end - end - - context "with gist gems" do - it "warns about removal" do - allow(Bundler.ui).to receive(:deprecate) - msg = "The :gist git source is deprecated, and will be removed " \ - "in Bundler 2.0. Add this code to the top of your Gemfile to ensure it " \ - "continues to work:\n\n git_source(:gist) {|repo_name| " \ - "\"https://gist.github.com/\#{repo_name}.git\" }\n\n" - expect(Bundler::SharedHelpers).to receive(:major_deprecation).with(2, msg) - subject.gem("not-really-a-gem", :gist => "1234") - end - end - end - - context "bundle show" do - it "prints a deprecation warning" do - install_gemfile! <<-G - source "file://#{gem_repo1}" - gem "rack" - G - - bundle! :show - - warnings.gsub!(/gems included.*?\[DEPRECATED/im, "[DEPRECATED") - - expect(warnings).to have_major_deprecation a_string_including("use `bundle list` instead of `bundle show`") - end - end - - context "bundle console" do - it "prints a deprecation warning" do - bundle "console" - - expect(warnings).to have_major_deprecation \ - a_string_including("bundle console will be replaced by `bin/console` generated by `bundle gem `") - end - end -end diff --git a/spec/bundler/other/platform_spec.rb b/spec/bundler/other/platform_spec.rb deleted file mode 100644 index fea5daf5ac..0000000000 --- a/spec/bundler/other/platform_spec.rb +++ /dev/null @@ -1,1299 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe "bundle platform" do - context "without flags" do - let(:bundle_platform_platforms_string) do - platforms = [rb] - platforms.unshift(specific_local_platform) if Bundler.feature_flag.bundler_2_mode? - platforms.map {|pl| "* #{pl}" }.join("\n") - end - - it "returns all the output" do - gemfile <<-G - source "file://#{gem_repo1}" - - #{ruby_version_correct} - - gem "foo" - G - - bundle "platform" - expect(out).to eq(<<-G.chomp) -Your platform is: #{RUBY_PLATFORM} - -Your app has gems that work on these platforms: -#{bundle_platform_platforms_string} - -Your Gemfile specifies a Ruby version requirement: -* ruby #{RUBY_VERSION} - -Your current platform satisfies the Ruby version requirement. -G - end - - it "returns all the output including the patchlevel" do - gemfile <<-G - source "file://#{gem_repo1}" - - #{ruby_version_correct_patchlevel} - - gem "foo" - G - - bundle "platform" - expect(out).to eq(<<-G.chomp) -Your platform is: #{RUBY_PLATFORM} - -Your app has gems that work on these platforms: -#{bundle_platform_platforms_string} - -Your Gemfile specifies a Ruby version requirement: -* ruby #{RUBY_VERSION}p#{RUBY_PATCHLEVEL} - -Your current platform satisfies the Ruby version requirement. -G - end - - it "doesn't print ruby version requirement if it isn't specified" do - gemfile <<-G - source "file://#{gem_repo1}" - - gem "foo" - G - - bundle "platform" - expect(out).to eq(<<-G.chomp) -Your platform is: #{RUBY_PLATFORM} - -Your app has gems that work on these platforms: -#{bundle_platform_platforms_string} - -Your Gemfile does not specify a Ruby version requirement. -G - end - - it "doesn't match the ruby version requirement" do - gemfile <<-G - source "file://#{gem_repo1}" - - #{ruby_version_incorrect} - - gem "foo" - G - - bundle "platform" - expect(out).to eq(<<-G.chomp) -Your platform is: #{RUBY_PLATFORM} - -Your app has gems that work on these platforms: -#{bundle_platform_platforms_string} - -Your Gemfile specifies a Ruby version requirement: -* ruby #{not_local_ruby_version} - -Your Ruby version is #{RUBY_VERSION}, but your Gemfile specified #{not_local_ruby_version} -G - end - end - - context "--ruby" do - it "returns ruby version when explicit" do - gemfile <<-G - source "file://#{gem_repo1}" - ruby "1.9.3", :engine => 'ruby', :engine_version => '1.9.3' - - gem "foo" - G - - bundle "platform --ruby" - - expect(out).to eq("ruby 1.9.3") - end - - it "defaults to MRI" do - gemfile <<-G - source "file://#{gem_repo1}" - ruby "1.9.3" - - gem "foo" - G - - bundle "platform --ruby" - - expect(out).to eq("ruby 1.9.3") - end - - it "handles jruby" do - gemfile <<-G - source "file://#{gem_repo1}" - ruby "1.8.7", :engine => 'jruby', :engine_version => '1.6.5' - - gem "foo" - G - - bundle "platform --ruby" - - expect(out).to eq("ruby 1.8.7 (jruby 1.6.5)") - end - - it "handles rbx" do - gemfile <<-G - source "file://#{gem_repo1}" - ruby "1.8.7", :engine => 'rbx', :engine_version => '1.2.4' - - gem "foo" - G - - bundle "platform --ruby" - - expect(out).to eq("ruby 1.8.7 (rbx 1.2.4)") - end - - it "raises an error if engine is used but engine version is not" do - gemfile <<-G - source "file://#{gem_repo1}" - ruby "1.8.7", :engine => 'rbx' - - gem "foo" - G - - bundle "platform" - - expect(exitstatus).not_to eq(0) if exitstatus - end - - it "raises an error if engine_version is used but engine is not" do - gemfile <<-G - source "file://#{gem_repo1}" - ruby "1.8.7", :engine_version => '1.2.4' - - gem "foo" - G - - bundle "platform" - - expect(exitstatus).not_to eq(0) if exitstatus - end - - it "raises an error if engine version doesn't match ruby version for MRI" do - gemfile <<-G - source "file://#{gem_repo1}" - ruby "1.8.7", :engine => 'ruby', :engine_version => '1.2.4' - - gem "foo" - G - - bundle "platform" - - expect(exitstatus).not_to eq(0) if exitstatus - end - - it "should print if no ruby version is specified" do - gemfile <<-G - source "file://#{gem_repo1}" - - gem "foo" - G - - bundle "platform --ruby" - - expect(out).to eq("No ruby version specified") - end - - it "handles when there is a locked requirement" do - gemfile <<-G - ruby "< 1.8.7" - G - - lockfile <<-L - GEM - specs: - - PLATFORMS - ruby - - DEPENDENCIES - - RUBY VERSION - ruby 1.0.0p127 - - BUNDLED WITH - #{Bundler::VERSION} - L - - bundle! "platform --ruby" - expect(out).to eq("ruby 1.0.0p127") - end - - it "handles when there is a requirement in the gemfile" do - gemfile <<-G - ruby ">= 1.8.7" - G - - bundle! "platform --ruby" - expect(out).to eq("ruby 1.8.7") - end - - it "handles when there are multiple requirements in the gemfile" do - gemfile <<-G - ruby ">= 1.8.7", "< 2.0.0" - G - - bundle! "platform --ruby" - expect(out).to eq("ruby 1.8.7") - end - end - - let(:ruby_version_correct) { "ruby \"#{RUBY_VERSION}\", :engine => \"#{local_ruby_engine}\", :engine_version => \"#{local_engine_version}\"" } - let(:ruby_version_correct_engineless) { "ruby \"#{RUBY_VERSION}\"" } - let(:ruby_version_correct_patchlevel) { "#{ruby_version_correct}, :patchlevel => '#{RUBY_PATCHLEVEL}'" } - let(:ruby_version_incorrect) { "ruby \"#{not_local_ruby_version}\", :engine => \"#{local_ruby_engine}\", :engine_version => \"#{not_local_ruby_version}\"" } - let(:engine_incorrect) { "ruby \"#{RUBY_VERSION}\", :engine => \"#{not_local_tag}\", :engine_version => \"#{RUBY_VERSION}\"" } - let(:engine_version_incorrect) { "ruby \"#{RUBY_VERSION}\", :engine => \"#{local_ruby_engine}\", :engine_version => \"#{not_local_engine_version}\"" } - let(:patchlevel_incorrect) { "#{ruby_version_correct}, :patchlevel => '#{not_local_patchlevel}'" } - let(:patchlevel_fixnum) { "#{ruby_version_correct}, :patchlevel => #{RUBY_PATCHLEVEL}1" } - - def should_be_ruby_version_incorrect - expect(exitstatus).to eq(18) if exitstatus - expect(out).to be_include("Your Ruby version is #{RUBY_VERSION}, but your Gemfile specified #{not_local_ruby_version}") - end - - def should_be_engine_incorrect - expect(exitstatus).to eq(18) if exitstatus - expect(out).to be_include("Your Ruby engine is #{local_ruby_engine}, but your Gemfile specified #{not_local_tag}") - end - - def should_be_engine_version_incorrect - expect(exitstatus).to eq(18) if exitstatus - expect(out).to be_include("Your #{local_ruby_engine} version is #{local_engine_version}, but your Gemfile specified #{local_ruby_engine} #{not_local_engine_version}") - end - - def should_be_patchlevel_incorrect - expect(exitstatus).to eq(18) if exitstatus - expect(out).to be_include("Your Ruby patchlevel is #{RUBY_PATCHLEVEL}, but your Gemfile specified #{not_local_patchlevel}") - end - - def should_be_patchlevel_fixnum - expect(exitstatus).to eq(18) if exitstatus - expect(out).to be_include("The Ruby patchlevel in your Gemfile must be a string") - end - - context "bundle install" do - it "installs fine when the ruby version matches" do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - - #{ruby_version_correct} - G - - expect(bundled_app("Gemfile.lock")).to exist - end - - it "installs fine with any engine" do - simulate_ruby_engine "jruby" do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - - #{ruby_version_correct_engineless} - G - - expect(bundled_app("Gemfile.lock")).to exist - end - end - - it "installs fine when the patchlevel matches" do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - - #{ruby_version_correct_patchlevel} - G - - expect(bundled_app("Gemfile.lock")).to exist - end - - it "doesn't install when the ruby version doesn't match" do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - - #{ruby_version_incorrect} - G - - expect(bundled_app("Gemfile.lock")).not_to exist - should_be_ruby_version_incorrect - end - - it "doesn't install when engine doesn't match" do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - - #{engine_incorrect} - G - - expect(bundled_app("Gemfile.lock")).not_to exist - should_be_engine_incorrect - end - - it "doesn't install when engine version doesn't match" do - simulate_ruby_engine "jruby" do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - - #{engine_version_incorrect} - G - - expect(bundled_app("Gemfile.lock")).not_to exist - should_be_engine_version_incorrect - end - end - - it "doesn't install when patchlevel doesn't match" do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - - #{patchlevel_incorrect} - G - - expect(bundled_app("Gemfile.lock")).not_to exist - should_be_patchlevel_incorrect - end - end - - context "bundle check" do - it "checks fine when the ruby version matches" do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - G - - gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - - #{ruby_version_correct} - G - - bundle :check - expect(exitstatus).to eq(0) if exitstatus - expect(out).to eq("Resolving dependencies...\nThe Gemfile's dependencies are satisfied") - end - - it "checks fine with any engine" do - simulate_ruby_engine "jruby" do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - G - - gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - - #{ruby_version_correct_engineless} - G - - bundle :check - expect(exitstatus).to eq(0) if exitstatus - expect(out).to eq("Resolving dependencies...\nThe Gemfile's dependencies are satisfied") - end - end - - it "fails when ruby version doesn't match" do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - G - - gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - - #{ruby_version_incorrect} - G - - bundle :check - should_be_ruby_version_incorrect - end - - it "fails when engine doesn't match" do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - G - - gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - - #{engine_incorrect} - G - - bundle :check - should_be_engine_incorrect - end - - it "fails when engine version doesn't match" do - simulate_ruby_engine "ruby" do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - G - - gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - - #{engine_version_incorrect} - G - - bundle :check - should_be_engine_version_incorrect - end - end - - it "fails when patchlevel doesn't match" do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - G - - gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - - #{patchlevel_incorrect} - G - - bundle :check - should_be_patchlevel_incorrect - end - end - - context "bundle update" do - before do - build_repo2 - - install_gemfile <<-G - source "file://#{gem_repo2}" - gem "activesupport" - gem "rack-obama" - G - end - - it "updates successfully when the ruby version matches" do - gemfile <<-G - source "file://#{gem_repo2}" - gem "activesupport" - gem "rack-obama" - - #{ruby_version_correct} - G - update_repo2 do - build_gem "activesupport", "3.0" - end - - bundle "update", :all => bundle_update_requires_all? - expect(the_bundle).to include_gems "rack 1.2", "rack-obama 1.0", "activesupport 3.0" - end - - it "updates fine with any engine" do - simulate_ruby_engine "jruby" do - gemfile <<-G - source "file://#{gem_repo2}" - gem "activesupport" - gem "rack-obama" - - #{ruby_version_correct_engineless} - G - update_repo2 do - build_gem "activesupport", "3.0" - end - - bundle "update", :all => bundle_update_requires_all? - expect(the_bundle).to include_gems "rack 1.2", "rack-obama 1.0", "activesupport 3.0" - end - end - - it "fails when ruby version doesn't match" do - gemfile <<-G - source "file://#{gem_repo2}" - gem "activesupport" - gem "rack-obama" - - #{ruby_version_incorrect} - G - update_repo2 do - build_gem "activesupport", "3.0" - end - - bundle :update, :all => bundle_update_requires_all? - should_be_ruby_version_incorrect - end - - it "fails when ruby engine doesn't match" do - gemfile <<-G - source "file://#{gem_repo2}" - gem "activesupport" - gem "rack-obama" - - #{engine_incorrect} - G - update_repo2 do - build_gem "activesupport", "3.0" - end - - bundle :update, :all => bundle_update_requires_all? - should_be_engine_incorrect - end - - it "fails when ruby engine version doesn't match" do - simulate_ruby_engine "jruby" do - gemfile <<-G - source "file://#{gem_repo2}" - gem "activesupport" - gem "rack-obama" - - #{engine_version_incorrect} - G - update_repo2 do - build_gem "activesupport", "3.0" - end - - bundle :update, :all => bundle_update_requires_all? - should_be_engine_version_incorrect - end - end - - it "fails when patchlevel doesn't match" do - gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - - #{patchlevel_incorrect} - G - update_repo2 do - build_gem "activesupport", "3.0" - end - - bundle :update, :all => bundle_update_requires_all? - should_be_patchlevel_incorrect - end - end - - context "bundle info" do - before do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "rails" - G - end - - it "prints path if ruby version is correct" do - install_gemfile! <<-G - source "file://#{gem_repo1}" - gem "rails" - - #{ruby_version_correct} - G - - bundle "info rails --path" - expect(out).to eq(default_bundle_path("gems", "rails-2.3.2").to_s) - end - - it "prints path if ruby version is correct for any engine" do - simulate_ruby_engine "jruby" do - install_gemfile! <<-G - source "file://#{gem_repo1}" - gem "rails" - - #{ruby_version_correct_engineless} - G - - bundle "info rails --path" - expect(out).to eq(default_bundle_path("gems", "rails-2.3.2").to_s) - end - end - - it "fails if ruby version doesn't match", :bundler => "< 2" do - gemfile <<-G - source "file://#{gem_repo1}" - gem "rails" - - #{ruby_version_incorrect} - G - - bundle "show rails" - should_be_ruby_version_incorrect - end - - it "fails if engine doesn't match", :bundler => "< 2" do - gemfile <<-G - source "file://#{gem_repo1}" - gem "rails" - - #{engine_incorrect} - G - - bundle "show rails" - should_be_engine_incorrect - end - - it "fails if engine version doesn't match", :bundler => "< 2" do - simulate_ruby_engine "jruby" do - gemfile <<-G - source "file://#{gem_repo1}" - gem "rails" - - #{engine_version_incorrect} - G - - bundle "show rails" - should_be_engine_version_incorrect - end - end - - it "fails when patchlevel doesn't match", :bundler => "< 2" do - gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - - #{patchlevel_incorrect} - G - update_repo2 do - build_gem "activesupport", "3.0" - end - - bundle "show rails" - should_be_patchlevel_incorrect - end - end - - context "bundle cache" do - before do - install_gemfile <<-G - source "file:#{gem_repo1}" - gem 'rack' - G - end - - it "copies the .gem file to vendor/cache when ruby version matches" do - gemfile <<-G - gem 'rack' - - #{ruby_version_correct} - G - - bundle :cache - expect(bundled_app("vendor/cache/rack-1.0.0.gem")).to exist - end - - it "copies the .gem file to vendor/cache when ruby version matches for any engine" do - simulate_ruby_engine "jruby" do - install_gemfile! <<-G - source "file:#{gem_repo1}" - gem 'rack' - - #{ruby_version_correct_engineless} - G - - bundle! :cache - expect(bundled_app("vendor/cache/rack-1.0.0.gem")).to exist - end - end - - it "fails if the ruby version doesn't match" do - gemfile <<-G - gem 'rack' - - #{ruby_version_incorrect} - G - - bundle :cache - should_be_ruby_version_incorrect - end - - it "fails if the engine doesn't match" do - gemfile <<-G - gem 'rack' - - #{engine_incorrect} - G - - bundle :cache - should_be_engine_incorrect - end - - it "fails if the engine version doesn't match" do - simulate_ruby_engine "jruby" do - gemfile <<-G - gem 'rack' - - #{engine_version_incorrect} - G - - bundle :cache - should_be_engine_version_incorrect - end - end - - it "fails when patchlevel doesn't match" do - gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - - #{patchlevel_incorrect} - G - - bundle :cache - should_be_patchlevel_incorrect - end - end - - context "bundle pack" do - before do - install_gemfile! <<-G - source "file:#{gem_repo1}" - gem 'rack' - G - end - - it "copies the .gem file to vendor/cache when ruby version matches" do - gemfile <<-G - gem 'rack' - - #{ruby_version_correct} - G - - bundle :pack - expect(bundled_app("vendor/cache/rack-1.0.0.gem")).to exist - end - - it "copies the .gem file to vendor/cache when ruby version matches any engine" do - simulate_ruby_engine "jruby" do - install_gemfile! <<-G - source "file:#{gem_repo1}" - gem 'rack' - - #{ruby_version_correct_engineless} - G - - bundle :pack - expect(bundled_app("vendor/cache/rack-1.0.0.gem")).to exist - end - end - - it "fails if the ruby version doesn't match" do - gemfile <<-G - gem 'rack' - - #{ruby_version_incorrect} - G - - bundle :pack - should_be_ruby_version_incorrect - end - - it "fails if the engine doesn't match" do - gemfile <<-G - gem 'rack' - - #{engine_incorrect} - G - - bundle :pack - should_be_engine_incorrect - end - - it "fails if the engine version doesn't match" do - simulate_ruby_engine "jruby" do - gemfile <<-G - gem 'rack' - - #{engine_version_incorrect} - G - - bundle :pack - should_be_engine_version_incorrect - end - end - - it "fails when patchlevel doesn't match" do - gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - - #{patchlevel_incorrect} - G - - bundle :pack - should_be_patchlevel_incorrect - end - end - - context "bundle exec" do - before do - ENV["BUNDLER_FORCE_TTY"] = "true" - system_gems "rack-1.0.0", "rack-0.9.1", :path => :bundle_path - end - - it "activates the correct gem when ruby version matches" do - gemfile <<-G - gem "rack", "0.9.1" - - #{ruby_version_correct} - G - - bundle "exec rackup" - expect(out).to eq("0.9.1") - end - - it "activates the correct gem when ruby version matches any engine" do - simulate_ruby_engine "jruby" do - system_gems "rack-1.0.0", "rack-0.9.1", :path => :bundle_path - gemfile <<-G - gem "rack", "0.9.1" - - #{ruby_version_correct_engineless} - G - - bundle "exec rackup" - expect(out).to eq("0.9.1") - end - end - - it "fails when the ruby version doesn't match" do - gemfile <<-G - gem "rack", "0.9.1" - - #{ruby_version_incorrect} - G - - bundle "exec rackup" - should_be_ruby_version_incorrect - end - - it "fails when the engine doesn't match" do - gemfile <<-G - gem "rack", "0.9.1" - - #{engine_incorrect} - G - - bundle "exec rackup" - should_be_engine_incorrect - end - - # it "fails when the engine version doesn't match" do - # simulate_ruby_engine "jruby" do - # gemfile <<-G - # gem "rack", "0.9.1" - # - # #{engine_version_incorrect} - # G - # - # bundle "exec rackup" - # should_be_engine_version_incorrect - # end - # end - - it "fails when patchlevel doesn't match" do - gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - - #{patchlevel_incorrect} - G - - bundle "exec rackup" - should_be_patchlevel_incorrect - end - end - - context "bundle console", :bundler => "< 2" do - before do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - gem "activesupport", :group => :test - gem "rack_middleware", :group => :development - G - end - - it "starts IRB with the default group loaded when ruby version matches" do - gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - gem "activesupport", :group => :test - gem "rack_middleware", :group => :development - - #{ruby_version_correct} - G - - bundle "console" do |input, _, _| - input.puts("puts RACK") - input.puts("exit") - end - expect(out).to include("0.9.1") - end - - it "starts IRB with the default group loaded when ruby version matches any engine" do - simulate_ruby_engine "jruby" do - gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - gem "activesupport", :group => :test - gem "rack_middleware", :group => :development - - #{ruby_version_correct_engineless} - G - - bundle "console" do |input, _, _| - input.puts("puts RACK") - input.puts("exit") - end - expect(out).to include("0.9.1") - end - end - - it "fails when ruby version doesn't match" do - gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - gem "activesupport", :group => :test - gem "rack_middleware", :group => :development - - #{ruby_version_incorrect} - G - - bundle "console" - should_be_ruby_version_incorrect - end - - it "fails when engine doesn't match" do - gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - gem "activesupport", :group => :test - gem "rack_middleware", :group => :development - - #{engine_incorrect} - G - - bundle "console" - should_be_engine_incorrect - end - - it "fails when engine version doesn't match" do - simulate_ruby_engine "jruby" do - gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - gem "activesupport", :group => :test - gem "rack_middleware", :group => :development - - #{engine_version_incorrect} - G - - bundle "console" - should_be_engine_version_incorrect - end - end - - it "fails when patchlevel doesn't match" do - gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - gem "activesupport", :group => :test - gem "rack_middleware", :group => :development - - #{patchlevel_incorrect} - G - - bundle "console" - should_be_patchlevel_incorrect - end - end - - context "Bundler.setup" do - before do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "yard" - gem "rack", :group => :test - G - - ENV["BUNDLER_FORCE_TTY"] = "true" - end - - it "makes a Gemfile.lock if setup succeeds" do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "yard" - gem "rack" - - #{ruby_version_correct} - G - - FileUtils.rm(bundled_app("Gemfile.lock")) - - run "1" - expect(bundled_app("Gemfile.lock")).to exist - end - - it "makes a Gemfile.lock if setup succeeds for any engine" do - simulate_ruby_engine "jruby" do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "yard" - gem "rack" - - #{ruby_version_correct_engineless} - G - - FileUtils.rm(bundled_app("Gemfile.lock")) - - run "1" - expect(bundled_app("Gemfile.lock")).to exist - end - end - - it "fails when ruby version doesn't match" do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "yard" - gem "rack" - - #{ruby_version_incorrect} - G - - FileUtils.rm(bundled_app("Gemfile.lock")) - - ruby <<-R - require 'rubygems' - require 'bundler/setup' - R - - expect(bundled_app("Gemfile.lock")).not_to exist - should_be_ruby_version_incorrect - end - - it "fails when engine doesn't match" do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "yard" - gem "rack" - - #{engine_incorrect} - G - - FileUtils.rm(bundled_app("Gemfile.lock")) - - ruby <<-R - require 'rubygems' - require 'bundler/setup' - R - - expect(bundled_app("Gemfile.lock")).not_to exist - should_be_engine_incorrect - end - - it "fails when engine version doesn't match" do - simulate_ruby_engine "jruby" do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "yard" - gem "rack" - - #{engine_version_incorrect} - G - - FileUtils.rm(bundled_app("Gemfile.lock")) - - ruby <<-R - require 'rubygems' - require 'bundler/setup' - R - - expect(bundled_app("Gemfile.lock")).not_to exist - should_be_engine_version_incorrect - end - end - - it "fails when patchlevel doesn't match" do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "yard" - gem "rack" - - #{patchlevel_incorrect} - G - - FileUtils.rm(bundled_app("Gemfile.lock")) - - ruby <<-R - require 'rubygems' - require 'bundler/setup' - R - - expect(bundled_app("Gemfile.lock")).not_to exist - should_be_patchlevel_incorrect - end - end - - context "bundle outdated" do - before do - build_repo2 do - build_git "foo", :path => lib_path("foo") - end - - install_gemfile <<-G - source "file://#{gem_repo2}" - gem "activesupport", "2.3.5" - gem "foo", :git => "#{lib_path("foo")}" - G - end - - it "returns list of outdated gems when the ruby version matches" do - update_repo2 do - build_gem "activesupport", "3.0" - update_git "foo", :path => lib_path("foo") - end - - gemfile <<-G - source "file://#{gem_repo2}" - gem "activesupport", "2.3.5" - gem "foo", :git => "#{lib_path("foo")}" - - #{ruby_version_correct} - G - - bundle "outdated" - expect(out).to include("activesupport (newest 3.0, installed 2.3.5, requested = 2.3.5") - expect(out).to include("foo (newest 1.0") - end - - it "returns list of outdated gems when the ruby version matches for any engine" do - simulate_ruby_engine "jruby" do - bundle! :install - update_repo2 do - build_gem "activesupport", "3.0" - update_git "foo", :path => lib_path("foo") - end - - gemfile <<-G - source "file://#{gem_repo2}" - gem "activesupport", "2.3.5" - gem "foo", :git => "#{lib_path("foo")}" - - #{ruby_version_correct_engineless} - G - - bundle "outdated" - expect(out).to include("activesupport (newest 3.0, installed 2.3.5, requested = 2.3.5)") - expect(out).to include("foo (newest 1.0") - end - end - - it "fails when the ruby version doesn't match" do - update_repo2 do - build_gem "activesupport", "3.0" - update_git "foo", :path => lib_path("foo") - end - - gemfile <<-G - source "file://#{gem_repo2}" - gem "activesupport", "2.3.5" - gem "foo", :git => "#{lib_path("foo")}" - - #{ruby_version_incorrect} - G - - bundle "outdated" - should_be_ruby_version_incorrect - end - - it "fails when the engine doesn't match" do - update_repo2 do - build_gem "activesupport", "3.0" - update_git "foo", :path => lib_path("foo") - end - - gemfile <<-G - source "file://#{gem_repo2}" - gem "activesupport", "2.3.5" - gem "foo", :git => "#{lib_path("foo")}" - - #{engine_incorrect} - G - - bundle "outdated" - should_be_engine_incorrect - end - - it "fails when the engine version doesn't match" do - simulate_ruby_engine "jruby" do - update_repo2 do - build_gem "activesupport", "3.0" - update_git "foo", :path => lib_path("foo") - end - - gemfile <<-G - source "file://#{gem_repo2}" - gem "activesupport", "2.3.5" - gem "foo", :git => "#{lib_path("foo")}" - - #{engine_version_incorrect} - G - - bundle "outdated" - should_be_engine_version_incorrect - end - end - - it "fails when the patchlevel doesn't match" do - simulate_ruby_engine "jruby" do - update_repo2 do - build_gem "activesupport", "3.0" - update_git "foo", :path => lib_path("foo") - end - - gemfile <<-G - source "file://#{gem_repo2}" - gem "activesupport", "2.3.5" - gem "foo", :git => "#{lib_path("foo")}" - - #{patchlevel_incorrect} - G - - bundle "outdated" - should_be_patchlevel_incorrect - end - end - - it "fails when the patchlevel is a fixnum" do - simulate_ruby_engine "jruby" do - update_repo2 do - build_gem "activesupport", "3.0" - update_git "foo", :path => lib_path("foo") - end - - gemfile <<-G - source "file://#{gem_repo2}" - gem "activesupport", "2.3.5" - gem "foo", :git => "#{lib_path("foo")}" - - #{patchlevel_fixnum} - G - - bundle "outdated" - should_be_patchlevel_fixnum - end - end - end -end diff --git a/spec/bundler/other/ssl_cert_spec.rb b/spec/bundler/other/ssl_cert_spec.rb deleted file mode 100644 index 6d957276fc..0000000000 --- a/spec/bundler/other/ssl_cert_spec.rb +++ /dev/null @@ -1,18 +0,0 @@ -# frozen_string_literal: true - -require "bundler/ssl_certs/certificate_manager" - -RSpec.describe "SSL Certificates", :rubygems_master do - hosts = %w[ - rubygems.org - index.rubygems.org - rubygems.global.ssl.fastly.net - staging.rubygems.org - ] - - hosts.each do |host| - it "can securely connect to #{host}", :realworld do - Bundler::SSLCerts::CertificateManager.new.connect_to(host) - end - end -end diff --git a/spec/bundler/plugins/command_spec.rb b/spec/bundler/plugins/command_spec.rb deleted file mode 100644 index 8275351d19..0000000000 --- a/spec/bundler/plugins/command_spec.rb +++ /dev/null @@ -1,80 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe "command plugins" do - before do - build_repo2 do - build_plugin "command-mah" do |s| - s.write "plugins.rb", <<-RUBY - module Mah - class Plugin < Bundler::Plugin::API - command "mahcommand" # declares the command - - def exec(command, args) - puts "MahHello" - end - end - end - RUBY - end - end - - bundle "plugin install command-mah --source file://#{gem_repo2}" - end - - it "executes without arguments" do - expect(out).to include("Installed plugin command-mah") - - bundle "mahcommand" - expect(out).to eq("MahHello") - end - - it "accepts the arguments" do - build_repo2 do - build_plugin "the-echoer" do |s| - s.write "plugins.rb", <<-RUBY - module Resonance - class Echoer - # Another method to declare the command - Bundler::Plugin::API.command "echo", self - - def exec(command, args) - puts "You gave me \#{args.join(", ")}" - end - end - end - RUBY - end - end - - bundle "plugin install the-echoer --source file://#{gem_repo2}" - expect(out).to include("Installed plugin the-echoer") - - bundle "echo tacos tofu lasange", "no-color" => false - expect(out).to eq("You gave me tacos, tofu, lasange") - end - - it "raises error on redeclaration of command" do - build_repo2 do - build_plugin "copycat" do |s| - s.write "plugins.rb", <<-RUBY - module CopyCat - class Cheater < Bundler::Plugin::API - command "mahcommand", self - - def exec(command, args) - end - end - end - RUBY - end - end - - bundle "plugin install copycat --source file://#{gem_repo2}" - - expect(out).not_to include("Installed plugin copycat") - - expect(out).to include("Failed to install plugin") - - expect(out).to include("Command(s) `mahcommand` declared by copycat are already registered.") - end -end diff --git a/spec/bundler/plugins/hook_spec.rb b/spec/bundler/plugins/hook_spec.rb deleted file mode 100644 index 8bdf61a8ab..0000000000 --- a/spec/bundler/plugins/hook_spec.rb +++ /dev/null @@ -1,27 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe "hook plugins" do - before do - build_repo2 do - build_plugin "before-install-plugin" do |s| - s.write "plugins.rb", <<-RUBY - Bundler::Plugin::API.hook "before-install-all" do |deps| - puts "gems to be installed \#{deps.map(&:name).join(", ")}" - end - RUBY - end - end - - bundle "plugin install before-install-plugin --source file://#{gem_repo2}" - end - - it "runs after a rubygem is installed" do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "rake" - gem "rack" - G - - expect(out).to include "gems to be installed rake, rack" - end -end diff --git a/spec/bundler/plugins/install_spec.rb b/spec/bundler/plugins/install_spec.rb deleted file mode 100644 index 9304d78062..0000000000 --- a/spec/bundler/plugins/install_spec.rb +++ /dev/null @@ -1,257 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe "bundler plugin install" do - before do - build_repo2 do - build_plugin "foo" - build_plugin "kung-foo" - end - end - - it "shows proper message when gem in not found in the source" do - bundle "plugin install no-foo --source file://#{gem_repo1}" - - expect(out).to include("Could not find") - plugin_should_not_be_installed("no-foo") - end - - it "installs from rubygems source" do - bundle "plugin install foo --source file://#{gem_repo2}" - - expect(out).to include("Installed plugin foo") - plugin_should_be_installed("foo") - end - - it "installs multiple plugins" do - bundle "plugin install foo kung-foo --source file://#{gem_repo2}" - - expect(out).to include("Installed plugin foo") - expect(out).to include("Installed plugin kung-foo") - - plugin_should_be_installed("foo", "kung-foo") - end - - it "uses the same version for multiple plugins" do - update_repo2 do - build_plugin "foo", "1.1" - build_plugin "kung-foo", "1.1" - end - - bundle "plugin install foo kung-foo --version '1.0' --source file://#{gem_repo2}" - - expect(out).to include("Installing foo 1.0") - expect(out).to include("Installing kung-foo 1.0") - plugin_should_be_installed("foo", "kung-foo") - end - - it "works with different load paths" do - build_repo2 do - build_plugin "testing" do |s| - s.write "plugins.rb", <<-RUBY - require "fubar" - class Test < Bundler::Plugin::API - command "check2" - - def exec(command, args) - puts "mate" - end - end - RUBY - s.require_paths = %w[lib src] - s.write("src/fubar.rb") - end - end - bundle "plugin install testing --source file://#{gem_repo2}" - - bundle "check2", "no-color" => false - expect(out).to eq("mate") - end - - context "malformatted plugin" do - it "fails when plugins.rb is missing" do - update_repo2 do - build_plugin "foo", "1.1" - build_plugin "kung-foo", "1.1" - end - - bundle "plugin install foo kung-foo --version '1.0' --source file://#{gem_repo2}" - - expect(out).to include("Installing foo 1.0") - expect(out).to include("Installing kung-foo 1.0") - plugin_should_be_installed("foo", "kung-foo") - - build_repo2 do - build_gem "charlie" - end - - bundle "plugin install charlie --source file://#{gem_repo2}" - - expect(out).to include("plugins.rb was not found") - - expect(global_plugin_gem("charlie-1.0")).not_to be_directory - - plugin_should_be_installed("foo", "kung-foo") - plugin_should_not_be_installed("charlie") - end - - it "fails when plugins.rb throws exception on load" do - build_repo2 do - build_plugin "chaplin" do |s| - s.write "plugins.rb", <<-RUBY - raise "I got you man" - RUBY - end - end - - bundle "plugin install chaplin --source file://#{gem_repo2}" - - expect(global_plugin_gem("chaplin-1.0")).not_to be_directory - - plugin_should_not_be_installed("chaplin") - end - end - - context "git plugins" do - it "installs form a git source" do - build_git "foo" do |s| - s.write "plugins.rb" - end - - bundle "plugin install foo --git file://#{lib_path("foo-1.0")}" - - expect(out).to include("Installed plugin foo") - plugin_should_be_installed("foo") - end - end - - context "Gemfile eval" do - it "installs plugins listed in gemfile" do - gemfile <<-G - source 'file://#{gem_repo2}' - plugin 'foo' - gem 'rack', "1.0.0" - G - - bundle "install" - - expect(out).to include("Installed plugin foo") - - expect(out).to include("Bundle complete!") - - expect(the_bundle).to include_gems("rack 1.0.0") - plugin_should_be_installed("foo") - end - - it "accepts plugin version" do - update_repo2 do - build_plugin "foo", "1.1.0" - end - - install_gemfile <<-G - source 'file://#{gem_repo2}' - plugin 'foo', "1.0" - G - - bundle "install" - - expect(out).to include("Installing foo 1.0") - - plugin_should_be_installed("foo") - - expect(out).to include("Bundle complete!") - end - - it "accepts git sources" do - build_git "ga-plugin" do |s| - s.write "plugins.rb" - end - - install_gemfile <<-G - plugin 'ga-plugin', :git => "#{lib_path("ga-plugin-1.0")}" - G - - expect(out).to include("Installed plugin ga-plugin") - plugin_should_be_installed("ga-plugin") - end - end - - context "inline gemfiles" do - it "installs the listed plugins" do - code = <<-RUBY - require "bundler/inline" - - gemfile do - source 'file://#{gem_repo2}' - plugin 'foo' - end - RUBY - - ruby code - expect(local_plugin_gem("foo-1.0", "plugins.rb")).to exist - end - end - - describe "local plugin" do - it "is installed when inside an app" do - gemfile "" - bundle "plugin install foo --source file://#{gem_repo2}" - - plugin_should_be_installed("foo") - expect(local_plugin_gem("foo-1.0")).to be_directory - end - - context "conflict with global plugin" do - before do - update_repo2 do - build_plugin "fubar" do |s| - s.write "plugins.rb", <<-RUBY - class Fubar < Bundler::Plugin::API - command "shout" - - def exec(command, args) - puts "local_one" - end - end - RUBY - end - end - - # inside the app - gemfile "source 'file://#{gem_repo2}'\nplugin 'fubar'" - bundle "install" - - update_repo2 do - build_plugin "fubar", "1.1" do |s| - s.write "plugins.rb", <<-RUBY - class Fubar < Bundler::Plugin::API - command "shout" - - def exec(command, args) - puts "global_one" - end - end - RUBY - end - end - - # outside the app - Dir.chdir tmp - bundle "plugin install fubar --source file://#{gem_repo2}" - end - - it "inside the app takes precedence over global plugin" do - Dir.chdir bundled_app - - bundle "shout" - expect(out).to eq("local_one") - end - - it "outside the app global plugin is used" do - Dir.chdir tmp - - bundle "shout" - expect(out).to eq("global_one") - end - end - end -end diff --git a/spec/bundler/plugins/source/example_spec.rb b/spec/bundler/plugins/source/example_spec.rb deleted file mode 100644 index fd30892f63..0000000000 --- a/spec/bundler/plugins/source/example_spec.rb +++ /dev/null @@ -1,505 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe "real source plugins" do - context "with a minimal source plugin" do - before do - build_repo2 do - build_plugin "bundler-source-mpath" do |s| - s.write "plugins.rb", <<-RUBY - require "bundler/vendored_fileutils" - require "bundler-source-mpath" - - class MPath < Bundler::Plugin::API - source "mpath" - - attr_reader :path - - def initialize(opts) - super - - @path = Pathname.new options["uri"] - end - - def fetch_gemspec_files - @spec_files ||= begin - glob = "{,*,*/*}.gemspec" - if installed? - search_path = install_path - else - search_path = path - end - Dir["\#{search_path.to_s}/\#{glob}"] - end - end - - def install(spec, opts) - mkdir_p(install_path.parent) - FileUtils.cp_r(path, install_path) - - spec_path = install_path.join("\#{spec.full_name}.gemspec") - spec_path.open("wb") {|f| f.write spec.to_ruby } - spec.loaded_from = spec_path.to_s - - post_install(spec) - - nil - end - end - RUBY - end # build_plugin - end - - build_lib "a-path-gem" - - gemfile <<-G - source "file://localhost#{gem_repo2}" # plugin source - source "#{lib_path("a-path-gem-1.0")}", :type => :mpath do - gem "a-path-gem" - end - G - end - - it "installs" do - bundle "install" - - expect(out).to include("Bundle complete!") - - expect(the_bundle).to include_gems("a-path-gem 1.0") - end - - it "writes to lock file", :bundler => "< 2" do - bundle "install" - - lockfile_should_be <<-G - PLUGIN SOURCE - remote: #{lib_path("a-path-gem-1.0")} - type: mpath - specs: - a-path-gem (1.0) - - GEM - remote: file://localhost#{gem_repo2}/ - specs: - - PLATFORMS - #{generic_local_platform} - - DEPENDENCIES - a-path-gem! - - BUNDLED WITH - #{Bundler::VERSION} - G - end - - it "writes to lock file", :bundler => "2" do - bundle "install" - - lockfile_should_be <<-G - GEM - remote: file://localhost#{gem_repo2}/ - specs: - - PLUGIN SOURCE - remote: #{lib_path("a-path-gem-1.0")} - type: mpath - specs: - a-path-gem (1.0) - - PLATFORMS - #{lockfile_platforms} - - DEPENDENCIES - a-path-gem! - - BUNDLED WITH - #{Bundler::VERSION} - G - end - - it "provides correct #full_gem_path" do - bundle "install" - run <<-RUBY - puts Bundler.rubygems.find_name('a-path-gem').first.full_gem_path - RUBY - expect(out).to eq(bundle("info a-path-gem --path")) - end - - it "installs the gem executables" do - build_lib "gem-with-bin" do |s| - s.executables = ["foo"] - end - - install_gemfile <<-G - source "file://#{gem_repo2}" # plugin source - source "#{lib_path("gem-with-bin-1.0")}", :type => :mpath do - gem "gem-with-bin" - end - G - - bundle "exec foo" - expect(out).to eq("1.0") - end - - describe "bundle cache/package" do - let(:uri_hash) { Digest(:SHA1).hexdigest(lib_path("a-path-gem-1.0").to_s) } - it "copies repository to vendor cache and uses it" do - bundle "install" - bundle :cache, forgotten_command_line_options([:all, :cache_all] => true) - - expect(bundled_app("vendor/cache/a-path-gem-1.0-#{uri_hash}")).to exist - expect(bundled_app("vendor/cache/a-path-gem-1.0-#{uri_hash}/.git")).not_to exist - expect(bundled_app("vendor/cache/a-path-gem-1.0-#{uri_hash}/.bundlecache")).to be_file - - FileUtils.rm_rf lib_path("a-path-gem-1.0") - expect(the_bundle).to include_gems("a-path-gem 1.0") - end - - it "copies repository to vendor cache and uses it even when installed with bundle --path" do - bundle! :install, forgotten_command_line_options(:path => "vendor/bundle") - bundle! :cache, forgotten_command_line_options([:all, :cache_all] => true) - - expect(bundled_app("vendor/cache/a-path-gem-1.0-#{uri_hash}")).to exist - - FileUtils.rm_rf lib_path("a-path-gem-1.0") - expect(the_bundle).to include_gems("a-path-gem 1.0") - end - - it "bundler package copies repository to vendor cache" do - bundle! :install, forgotten_command_line_options(:path => "vendor/bundle") - bundle! :package, forgotten_command_line_options([:all, :cache_all] => true) - - expect(bundled_app("vendor/cache/a-path-gem-1.0-#{uri_hash}")).to exist - - FileUtils.rm_rf lib_path("a-path-gem-1.0") - expect(the_bundle).to include_gems("a-path-gem 1.0") - end - end - - context "with lockfile" do - before do - lockfile <<-G - PLUGIN SOURCE - remote: #{lib_path("a-path-gem-1.0")} - type: mpath - specs: - a-path-gem (1.0) - - GEM - remote: file:#{gem_repo2}/ - specs: - - PLATFORMS - #{generic_local_platform} - - DEPENDENCIES - a-path-gem! - - BUNDLED WITH - #{Bundler::VERSION} - G - end - - it "installs" do - bundle! "install" - - expect(the_bundle).to include_gems("a-path-gem 1.0") - end - end - end - - context "with a more elaborate source plugin" do - before do - build_repo2 do - build_plugin "bundler-source-gitp" do |s| - s.write "plugins.rb", <<-RUBY - class SPlugin < Bundler::Plugin::API - source "gitp" - - attr_reader :ref - - def initialize(opts) - super - - @ref = options["ref"] || options["branch"] || options["tag"] || "master" - @unlocked = false - end - - def eql?(other) - other.is_a?(self.class) && uri == other.uri && ref == other.ref - end - - alias_method :==, :eql? - - def fetch_gemspec_files - @spec_files ||= begin - glob = "{,*,*/*}.gemspec" - if !cached? - cache_repo - end - - if installed? && !@unlocked - path = install_path - else - path = cache_path - end - - Dir["\#{path}/\#{glob}"] - end - end - - def install(spec, opts) - mkdir_p(install_path.dirname) - rm_rf(install_path) - `git clone --no-checkout --quiet "\#{cache_path}" "\#{install_path}"` - Dir.chdir install_path do - `git reset --hard \#{revision}` - end - - spec_path = install_path.join("\#{spec.full_name}.gemspec") - spec_path.open("wb") {|f| f.write spec.to_ruby } - spec.loaded_from = spec_path.to_s - - post_install(spec) - - nil - end - - def options_to_lock - opts = {"revision" => revision} - opts["ref"] = ref if ref != "master" - opts - end - - def unlock! - @unlocked = true - @revision = latest_revision - end - - def app_cache_dirname - "\#{base_name}-\#{shortref_for_path(revision)}" - end - - private - - def cache_path - @cache_path ||= cache_dir.join("gitp", base_name) - end - - def cache_repo - `git clone --quiet \#{@options["uri"]} \#{cache_path}` - end - - def cached? - File.directory?(cache_path) - end - - def locked_revision - options["revision"] - end - - def revision - @revision ||= locked_revision || latest_revision - end - - def latest_revision - if !cached? || @unlocked - rm_rf(cache_path) - cache_repo - end - - Dir.chdir cache_path do - `git rev-parse --verify \#{@ref}`.strip - end - end - - def base_name - File.basename(uri.sub(%r{^(\w+://)?([^/:]+:)?(//\w*/)?(\w*/)*}, ""), ".git") - end - - def shortref_for_path(ref) - ref[0..11] - end - - def install_path - @install_path ||= begin - git_scope = "\#{base_name}-\#{shortref_for_path(revision)}" - - path = gem_install_dir.join(git_scope) - - if !path.exist? && requires_sudo? - user_bundle_path.join(ruby_scope).join(git_scope) - else - path - end - end - end - - def installed? - File.directory?(install_path) - end - end - RUBY - end - end - - build_git "ma-gitp-gem" - - gemfile <<-G - source "file://localhost#{gem_repo2}" # plugin source - source "file://#{lib_path("ma-gitp-gem-1.0")}", :type => :gitp do - gem "ma-gitp-gem" - end - G - end - - it "handles the source option" do - bundle "install" - expect(out).to include("Bundle complete!") - expect(the_bundle).to include_gems("ma-gitp-gem 1.0") - end - - it "writes to lock file", :bundler => "< 2" do - revision = revision_for(lib_path("ma-gitp-gem-1.0")) - bundle "install" - - lockfile_should_be <<-G - PLUGIN SOURCE - remote: file://#{lib_path("ma-gitp-gem-1.0")} - type: gitp - revision: #{revision} - specs: - ma-gitp-gem (1.0) - - GEM - remote: file://localhost#{gem_repo2}/ - specs: - - PLATFORMS - #{generic_local_platform} - - DEPENDENCIES - ma-gitp-gem! - - BUNDLED WITH - #{Bundler::VERSION} - G - end - - it "writes to lock file", :bundler => "2" do - revision = revision_for(lib_path("ma-gitp-gem-1.0")) - bundle "install" - - lockfile_should_be <<-G - GEM - remote: file://localhost#{gem_repo2}/ - specs: - - PLUGIN SOURCE - remote: file://#{lib_path("ma-gitp-gem-1.0")} - type: gitp - revision: #{revision} - specs: - ma-gitp-gem (1.0) - - PLATFORMS - #{lockfile_platforms} - - DEPENDENCIES - ma-gitp-gem! - - BUNDLED WITH - #{Bundler::VERSION} - G - end - - context "with lockfile" do - before do - revision = revision_for(lib_path("ma-gitp-gem-1.0")) - lockfile <<-G - PLUGIN SOURCE - remote: file://#{lib_path("ma-gitp-gem-1.0")} - type: gitp - revision: #{revision} - specs: - ma-gitp-gem (1.0) - - GEM - remote: file:#{gem_repo2}/ - specs: - - PLATFORMS - #{generic_local_platform} - - DEPENDENCIES - ma-gitp-gem! - - BUNDLED WITH - #{Bundler::VERSION} - G - end - - it "installs" do - bundle "install" - expect(the_bundle).to include_gems("ma-gitp-gem 1.0") - end - - it "uses the locked ref" do - update_git "ma-gitp-gem" - bundle "install" - - run <<-RUBY - require 'ma-gitp-gem' - puts "WIN" unless defined?(MAGITPGEM_PREV_REF) - RUBY - expect(out).to eq("WIN") - end - - it "updates the deps on bundler update" do - update_git "ma-gitp-gem" - bundle "update ma-gitp-gem" - - run <<-RUBY - require 'ma-gitp-gem' - puts "WIN" if defined?(MAGITPGEM_PREV_REF) - RUBY - expect(out).to eq("WIN") - end - - it "updates the deps on change in gemfile" do - update_git "ma-gitp-gem", "1.1", :path => lib_path("ma-gitp-gem-1.0"), :gemspec => true - gemfile <<-G - source "file://#{gem_repo2}" # plugin source - source "file://#{lib_path("ma-gitp-gem-1.0")}", :type => :gitp do - gem "ma-gitp-gem", "1.1" - end - G - bundle "install" - - expect(the_bundle).to include_gems("ma-gitp-gem 1.1") - end - end - - describe "bundle cache with gitp" do - it "copies repository to vendor cache and uses it" do - git = build_git "foo" - ref = git.ref_for("master", 11) - - install_gemfile <<-G - source "file://#{gem_repo2}" # plugin source - source '#{lib_path("foo-1.0")}', :type => :gitp do - gem "foo" - end - G - - bundle :cache, forgotten_command_line_options([:all, :cache_all] => true) - expect(bundled_app("vendor/cache/foo-1.0-#{ref}")).to exist - expect(bundled_app("vendor/cache/foo-1.0-#{ref}/.git")).not_to exist - expect(bundled_app("vendor/cache/foo-1.0-#{ref}/.bundlecache")).to be_file - - FileUtils.rm_rf lib_path("foo-1.0") - expect(the_bundle).to include_gems "foo 1.0" - end - end - end -end diff --git a/spec/bundler/plugins/source_spec.rb b/spec/bundler/plugins/source_spec.rb deleted file mode 100644 index 543e90eb60..0000000000 --- a/spec/bundler/plugins/source_spec.rb +++ /dev/null @@ -1,108 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe "bundler source plugin" do - describe "plugins dsl eval for #source with :type option" do - before do - update_repo2 do - build_plugin "bundler-source-psource" do |s| - s.write "plugins.rb", <<-RUBY - class OPSource < Bundler::Plugin::API - source "psource" - end - RUBY - end - end - end - - it "installs bundler-source-* gem when no handler for source is present" do - install_gemfile <<-G - source "file://#{gem_repo2}" - source "file://#{lib_path("gitp")}", :type => :psource do - end - G - - plugin_should_be_installed("bundler-source-psource") - end - - it "enables the plugin to require a lib path" do - update_repo2 do - build_plugin "bundler-source-psource" do |s| - s.write "plugins.rb", <<-RUBY - require "bundler-source-psource" - class PSource < Bundler::Plugin::API - source "psource" - end - RUBY - end - end - - install_gemfile <<-G - source "file://#{gem_repo2}" - source "file://#{lib_path("gitp")}", :type => :psource do - end - G - - expect(out).to include("Bundle complete!") - end - - context "with an explicit handler" do - before do - update_repo2 do - build_plugin "another-psource" do |s| - s.write "plugins.rb", <<-RUBY - class Cheater < Bundler::Plugin::API - source "psource" - end - RUBY - end - end - end - - context "explicit presence in gemfile" do - before do - install_gemfile <<-G - source "file://#{gem_repo2}" - - plugin "another-psource" - - source "file://#{lib_path("gitp")}", :type => :psource do - end - G - end - - it "completes successfully" do - expect(out).to include("Bundle complete!") - end - - it "installs the explicit one" do - plugin_should_be_installed("another-psource") - end - - it "doesn't install the default one" do - plugin_should_not_be_installed("bundler-source-psource") - end - end - - context "explicit default source" do - before do - install_gemfile <<-G - source "file://#{gem_repo2}" - - plugin "bundler-source-psource" - - source "file://#{lib_path("gitp")}", :type => :psource do - end - G - end - - it "completes successfully" do - expect(out).to include("Bundle complete!") - end - - it "installs the default one" do - plugin_should_be_installed("bundler-source-psource") - end - end - end - end -end diff --git a/spec/bundler/quality_spec.rb b/spec/bundler/quality_spec.rb deleted file mode 100644 index 9fc03b486b..0000000000 --- a/spec/bundler/quality_spec.rb +++ /dev/null @@ -1,252 +0,0 @@ -# frozen_string_literal: true - -if defined?(Encoding) && Encoding.default_external.name != "UTF-8" - # Poor man's ruby -E UTF-8, since it works on 1.8.7 - Encoding.default_external = Encoding.find("UTF-8") -end - -RSpec.describe "The library itself" do - def check_for_debugging_mechanisms(filename) - debugging_mechanisms_regex = / - (binding\.pry)| - (debugger)| - (sleep\s*\(?\d+)| - (fit\s*\(?("|\w)) - /x - - failing_lines = [] - File.readlines(filename).each_with_index do |line, number| - if line =~ debugging_mechanisms_regex && !line.end_with?("# ignore quality_spec\n") - failing_lines << number + 1 - end - end - - return if failing_lines.empty? - "#{filename} has debugging mechanisms (like binding.pry, sleep, debugger, rspec focusing, etc.) on lines #{failing_lines.join(", ")}" - end - - def check_for_git_merge_conflicts(filename) - merge_conflicts_regex = / - <<<<<<<| - =======| - >>>>>>> - /x - - failing_lines = [] - File.readlines(filename).each_with_index do |line, number| - failing_lines << number + 1 if line =~ merge_conflicts_regex - end - - return if failing_lines.empty? - "#{filename} has unresolved git merge conflicts on lines #{failing_lines.join(", ")}" - end - - def check_for_tab_characters(filename) - failing_lines = [] - File.readlines(filename).each_with_index do |line, number| - failing_lines << number + 1 if line =~ /\t/ - end - - return if failing_lines.empty? - "#{filename} has tab characters on lines #{failing_lines.join(", ")}" - end - - def check_for_extra_spaces(filename) - failing_lines = [] - File.readlines(filename).each_with_index do |line, number| - next if line =~ /^\s+#.*\s+\n$/ - next if %w[LICENCE.md].include?(line) - failing_lines << number + 1 if line =~ /\s+\n$/ - end - - return if failing_lines.empty? - "#{filename} has spaces on the EOL on lines #{failing_lines.join(", ")}" - end - - def check_for_expendable_words(filename) - failing_line_message = [] - useless_words = %w[ - actually - basically - clearly - just - obviously - really - simply - ] - pattern = /\b#{Regexp.union(useless_words)}\b/i - - File.readlines(filename).each_with_index do |line, number| - next unless word_found = pattern.match(line) - failing_line_message << "#{filename}:#{number.succ} has '#{word_found}'. Avoid using these kinds of weak modifiers." - end - - failing_line_message unless failing_line_message.empty? - end - - def check_for_specific_pronouns(filename) - failing_line_message = [] - specific_pronouns = /\b(he|she|his|hers|him|her|himself|herself)\b/i - - File.readlines(filename).each_with_index do |line, number| - next unless word_found = specific_pronouns.match(line) - failing_line_message << "#{filename}:#{number.succ} has '#{word_found}'. Use more generic pronouns in documentation." - end - - failing_line_message unless failing_line_message.empty? - end - - RSpec::Matchers.define :be_well_formed do - match(&:empty?) - - failure_message do |actual| - actual.join("\n") - end - end - - it "has no malformed whitespace", :ruby_repo do - exempt = /\.gitmodules|\.marshal|fixtures|vendor|ssl_certs|LICENSE|vcr_cassettes/ - error_messages = [] - Dir.chdir(root) do - `git ls-files -z`.split("\x0").each do |filename| - next if filename =~ exempt - error_messages << check_for_tab_characters(filename) - error_messages << check_for_extra_spaces(filename) - end - end - expect(error_messages.compact).to be_well_formed - end - - it "does not include any leftover debugging or development mechanisms", :ruby_repo do - exempt = %r{quality_spec.rb|support/helpers|vcr_cassettes|\.md|\.ronn} - error_messages = [] - Dir.chdir(root) do - `git ls-files -z`.split("\x0").each do |filename| - next if filename =~ exempt - error_messages << check_for_debugging_mechanisms(filename) - end - end - expect(error_messages.compact).to be_well_formed - end - - it "does not include any unresolved merge conflicts", :ruby_repo do - error_messages = [] - exempt = %r{lock/lockfile_(bundler_1_)?spec|quality_spec|vcr_cassettes|\.ronn|lockfile_parser\.rb} - Dir.chdir(root) do - `git ls-files -z`.split("\x0").each do |filename| - next if filename =~ exempt - error_messages << check_for_git_merge_conflicts(filename) - end - end - expect(error_messages.compact).to be_well_formed - end - - it "maintains language quality of the documentation", :ruby_repo do - included = /ronn/ - error_messages = [] - Dir.chdir(root) do - `git ls-files -z -- man`.split("\x0").each do |filename| - next unless filename =~ included - error_messages << check_for_expendable_words(filename) - error_messages << check_for_specific_pronouns(filename) - end - end - expect(error_messages.compact).to be_well_formed - end - - it "maintains language quality of sentences used in source code", :ruby_repo do - error_messages = [] - exempt = /vendor/ - Dir.chdir(root) do - `git ls-files -z -- lib`.split("\x0").each do |filename| - next if filename =~ exempt - error_messages << check_for_expendable_words(filename) - error_messages << check_for_specific_pronouns(filename) - end - end - expect(error_messages.compact).to be_well_formed - end - - it "documents all used settings", :ruby_repo do - exemptions = %w[ - cache_command_is_package - console_command - default_cli_command - deployment_means_frozen - forget_cli_options - gem.coc - gem.mit - inline - lockfile_uses_separate_rubygems_sources - warned_version - ] - - all_settings = Hash.new {|h, k| h[k] = [] } - documented_settings = exemptions - - Bundler::Settings::BOOL_KEYS.each {|k| all_settings[k] << "in Bundler::Settings::BOOL_KEYS" } - Bundler::Settings::NUMBER_KEYS.each {|k| all_settings[k] << "in Bundler::Settings::NUMBER_KEYS" } - Bundler::Settings::ARRAY_KEYS.each {|k| all_settings[k] << "in Bundler::Settings::ARRAY_KEYS" } - - Dir.chdir(root) do - key_pattern = /([a-z\._-]+)/i - `git ls-files -z -- lib`.split("\x0").each do |filename| - File.readlines(filename).each_with_index do |line, number| - line.scan(/Bundler\.settings\[:#{key_pattern}\]/).flatten.each {|s| all_settings[s] << "referenced at `#{filename}:#{number.succ}`" } - end - end - documented_settings = File.read("man/bundle-config.ronn")[/LIST OF AVAILABLE KEYS.*/m].scan(/^\* `#{key_pattern}`/).flatten - end - - documented_settings.each {|s| all_settings.delete(s) } - exemptions.each {|s| all_settings.delete(s) } - error_messages = all_settings.map do |setting, refs| - "The `#{setting}` setting is undocumented\n\t- #{refs.join("\n\t- ")}\n" - end - - expect(error_messages.sort).to be_well_formed - - expect(documented_settings).to be_sorted - end - - it "can still be built", :ruby_repo do - Dir.chdir(root) do - begin - gem_command! :build, "bundler.gemspec" - if Bundler.rubygems.provides?(">= 2.4") - # there's no way aroudn this warning - last_command.stderr.sub!(/^YAML safe loading.*/, "") - - # older rubygems have weird warnings, and we won't actually be using them - # to build the gem for releases anyways - expect(last_command.stderr).to be_empty, "bundler should build as a gem without warnings, but\n#{err}" - end - ensure - # clean up the .gem generated - FileUtils.rm("bundler-#{Bundler::VERSION}.gem") - end - end - end - - it "does not contain any warnings", :ruby_repo do - Dir.chdir(root) do - exclusions = %w[ - lib/bundler/capistrano.rb - lib/bundler/deployment.rb - lib/bundler/gem_tasks.rb - lib/bundler/vlad.rb - lib/bundler/templates/gems.rb - ] - lib_files = `git ls-files -z -- lib`.split("\x0").grep(/\.rb$/) - exclusions - lib_files.reject! {|f| f.start_with?("lib/bundler/vendor") } - lib_files.map! {|f| f.chomp(".rb") } - sys_exec!("ruby -w -Ilib") do |input, _, _| - lib_files.each do |f| - input.puts "require '#{f.sub(%r{\Alib/}, "")}'" - end - end - - expect(last_command.stdboth.split("\n")).to be_well_formed - end - end -end diff --git a/spec/bundler/realworld/dependency_api_spec.rb b/spec/bundler/realworld/dependency_api_spec.rb deleted file mode 100644 index 13527ce5d1..0000000000 --- a/spec/bundler/realworld/dependency_api_spec.rb +++ /dev/null @@ -1,44 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe "gemcutter's dependency API", :realworld => true do - context "when Gemcutter API takes too long to respond" do - before do - require_rack - - port = find_unused_port - @server_uri = "http://127.0.0.1:#{port}" - - require File.expand_path("../../support/artifice/endpoint_timeout", __FILE__) - require "thread" - @t = Thread.new do - server = Rack::Server.start(:app => EndpointTimeout, - :Host => "0.0.0.0", - :Port => port, - :server => "webrick", - :AccessLog => [], - :Logger => Spec::SilentLogger.new) - server.start - end - @t.run - - wait_for_server("127.0.0.1", port) - bundle! "config timeout 1" - end - - after do - Artifice.deactivate - @t.kill - @t.join - end - - it "times out and falls back on the modern index" do - install_gemfile! <<-G, :artifice => nil - source "#{@server_uri}" - gem "rack" - G - - expect(out).to include("Fetching source index from #{@server_uri}/") - expect(the_bundle).to include_gems "rack 1.0.0" - end - end -end diff --git a/spec/bundler/realworld/double_check_spec.rb b/spec/bundler/realworld/double_check_spec.rb deleted file mode 100644 index 94ab49ba2a..0000000000 --- a/spec/bundler/realworld/double_check_spec.rb +++ /dev/null @@ -1,40 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe "double checking sources", :realworld => true do - it "finds already-installed gems", :ruby => ">= 2.2" do - create_file("rails.gemspec", <<-RUBY) - Gem::Specification.new do |s| - s.name = "rails" - s.version = "5.1.4" - s.summary = "" - s.description = "" - s.author = "" - s.add_dependency "actionpack", "5.1.4" - end - RUBY - - create_file("actionpack.gemspec", <<-RUBY) - Gem::Specification.new do |s| - s.name = "actionpack" - s.version = "5.1.4" - s.summary = "" - s.description = "" - s.author = "" - s.add_dependency "rack", "~> 2.0.0" - end - RUBY - - cmd = <<-RUBY - require "bundler" - require #{File.expand_path("../../support/artifice/vcr.rb", __FILE__).dump} - require "bundler/inline" - gemfile(true) do - source "https://rubygems.org" - gem "rails", path: "." - end - RUBY - - ruby! cmd - ruby! cmd - end -end diff --git a/spec/bundler/realworld/edgecases_spec.rb b/spec/bundler/realworld/edgecases_spec.rb deleted file mode 100644 index aa60e20b8a..0000000000 --- a/spec/bundler/realworld/edgecases_spec.rb +++ /dev/null @@ -1,382 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe "real world edgecases", :realworld => true, :sometimes => true do - def rubygems_version(name, requirement) - ruby! <<-RUBY - require #{File.expand_path("../../support/artifice/vcr.rb", __FILE__).dump} - require "bundler" - require "bundler/source/rubygems/remote" - require "bundler/fetcher" - source = Bundler::Source::Rubygems::Remote.new(URI("https://rubygems.org")) - fetcher = Bundler::Fetcher.new(source) - index = fetcher.specs([#{name.dump}], nil) - rubygem = index.search(Gem::Dependency.new(#{name.dump}, #{requirement.dump})).last - if rubygem.nil? - raise "Could not find #{name} (#{requirement}) on rubygems.org!\n" \ - "Found specs:\n\#{index.send(:specs).inspect}" - end - "#{name} (\#{rubygem.version})" - RUBY - end - - # there is no rbx-relative-require gem that will install on 1.9 - it "ignores extra gems with bad platforms", :ruby => "~> 1.8.7" do - gemfile <<-G - source "https://rubygems.org" - gem "linecache", "0.46" - G - bundle :lock - expect(err).to lack_errors - expect(exitstatus).to eq(0) if exitstatus - end - - # https://github.com/bundler/bundler/issues/1202 - it "bundle cache works with rubygems 1.3.7 and pre gems", - :ruby => "~> 1.8.7", :rubygems => "~> 1.3.7" do - install_gemfile <<-G - source "https://rubygems.org" - gem "rack", "1.3.0.beta2" - gem "will_paginate", "3.0.pre2" - G - bundle :cache - expect(out).not_to include("Removing outdated .gem files from vendor/cache") - end - - # https://github.com/bundler/bundler/issues/1486 - # this is a hash collision that only manifests on 1.8.7 - it "finds the correct child versions", :ruby => "~> 1.8.7" do - gemfile <<-G - source "https://rubygems.org" - - gem 'i18n', '~> 0.6.0' - gem 'activesupport', '~> 3.0.5' - gem 'activerecord', '~> 3.0.5' - gem 'builder', '~> 2.1.2' - G - bundle :lock - expect(lockfile).to include("activemodel (3.0.5)") - end - - it "resolves dependencies correctly", :ruby => "1.9.3" do - gemfile <<-G - source "https://rubygems.org" - - gem 'rails', '~> 3.0' - gem 'capybara', '~> 2.2.0' - gem 'rack-cache', '1.2.0' # last version that works on Ruby 1.9 - G - bundle! :lock - expect(lockfile).to include(rubygems_version("rails", "~> 3.0")) - expect(lockfile).to include("capybara (2.2.1)") - end - - it "installs the latest version of gxapi_rails", :ruby => "1.9.3" do - gemfile <<-G - source "https://rubygems.org" - - gem "sass-rails" - gem "rails", "~> 3" - gem "gxapi_rails", "< 0.1.0" # 0.1.0 was released way after the test was written - gem 'rack-cache', '1.2.0' # last version that works on Ruby 1.9 - G - bundle! :lock - expect(lockfile).to include("gxapi_rails (0.0.6)") - end - - it "installs the latest version of i18n" do - gemfile <<-G - source "https://rubygems.org" - - gem "i18n", "~> 0.6.0" - gem "activesupport", "~> 3.0" - gem "activerecord", "~> 3.0" - gem "builder", "~> 2.1.2" - G - bundle! :lock - expect(lockfile).to include(rubygems_version("i18n", "~> 0.6.0")) - expect(lockfile).to include(rubygems_version("activesupport", "~> 3.0")) - end - - it "is able to update a top-level dependency when there is a conflict on a shared transitive child", :ruby => "2.1" do - # from https://github.com/bundler/bundler/issues/5031 - - gemfile <<-G - source "https://rubygems.org" - gem 'rails', '~> 4.2.7.1' - gem 'paperclip', '~> 5.1.0' - G - - lockfile <<-L - GEM - remote: https://rubygems.org/ - specs: - actionmailer (4.2.7.1) - actionpack (= 4.2.7.1) - actionview (= 4.2.7.1) - activejob (= 4.2.7.1) - mail (~> 2.5, >= 2.5.4) - rails-dom-testing (~> 1.0, >= 1.0.5) - actionpack (4.2.7.1) - actionview (= 4.2.7.1) - activesupport (= 4.2.7.1) - rack (~> 1.6) - rack-test (~> 0.6.2) - rails-dom-testing (~> 1.0, >= 1.0.5) - rails-html-sanitizer (~> 1.0, >= 1.0.2) - actionview (4.2.7.1) - activesupport (= 4.2.7.1) - builder (~> 3.1) - erubis (~> 2.7.0) - rails-dom-testing (~> 1.0, >= 1.0.5) - rails-html-sanitizer (~> 1.0, >= 1.0.2) - activejob (4.2.7.1) - activesupport (= 4.2.7.1) - globalid (>= 0.3.0) - activemodel (4.2.7.1) - activesupport (= 4.2.7.1) - builder (~> 3.1) - activerecord (4.2.7.1) - activemodel (= 4.2.7.1) - activesupport (= 4.2.7.1) - arel (~> 6.0) - activesupport (4.2.7.1) - i18n (~> 0.7) - json (~> 1.7, >= 1.7.7) - minitest (~> 5.1) - thread_safe (~> 0.3, >= 0.3.4) - tzinfo (~> 1.1) - arel (6.0.3) - builder (3.2.2) - climate_control (0.0.3) - activesupport (>= 3.0) - cocaine (0.5.8) - climate_control (>= 0.0.3, < 1.0) - concurrent-ruby (1.0.2) - erubis (2.7.0) - globalid (0.3.7) - activesupport (>= 4.1.0) - i18n (0.7.0) - json (1.8.3) - loofah (2.0.3) - nokogiri (>= 1.5.9) - mail (2.6.4) - mime-types (>= 1.16, < 4) - mime-types (3.1) - mime-types-data (~> 3.2015) - mime-types-data (3.2016.0521) - mimemagic (0.3.2) - mini_portile2 (2.1.0) - minitest (5.9.1) - nokogiri (1.6.8) - mini_portile2 (~> 2.1.0) - pkg-config (~> 1.1.7) - paperclip (5.1.0) - activemodel (>= 4.2.0) - activesupport (>= 4.2.0) - cocaine (~> 0.5.5) - mime-types - mimemagic (~> 0.3.0) - pkg-config (1.1.7) - rack (1.6.4) - rack-test (0.6.3) - rack (>= 1.0) - rails (4.2.7.1) - actionmailer (= 4.2.7.1) - actionpack (= 4.2.7.1) - actionview (= 4.2.7.1) - activejob (= 4.2.7.1) - activemodel (= 4.2.7.1) - activerecord (= 4.2.7.1) - activesupport (= 4.2.7.1) - bundler (>= 1.3.0, < 2.0) - railties (= 4.2.7.1) - sprockets-rails - rails-deprecated_sanitizer (1.0.3) - activesupport (>= 4.2.0.alpha) - rails-dom-testing (1.0.7) - activesupport (>= 4.2.0.beta, < 5.0) - nokogiri (~> 1.6.0) - rails-deprecated_sanitizer (>= 1.0.1) - rails-html-sanitizer (1.0.3) - loofah (~> 2.0) - railties (4.2.7.1) - actionpack (= 4.2.7.1) - activesupport (= 4.2.7.1) - rake (>= 0.8.7) - thor (>= 0.18.1, < 2.0) - rake (11.3.0) - sprockets (3.7.0) - concurrent-ruby (~> 1.0) - rack (> 1, < 3) - sprockets-rails (3.2.0) - actionpack (>= 4.0) - activesupport (>= 4.0) - sprockets (>= 3.0.0) - thor (0.19.1) - thread_safe (0.3.5) - tzinfo (1.2.2) - thread_safe (~> 0.1) - - PLATFORMS - ruby - - DEPENDENCIES - paperclip (~> 5.1.0) - rails (~> 4.2.7.1) - L - - bundle! "lock --update paperclip" - - expect(lockfile).to include(rubygems_version("paperclip", "~> 5.1.0")) - end - - # https://github.com/bundler/bundler/issues/1500 - it "does not fail install because of gem plugins" do - realworld_system_gems("open_gem --version 1.4.2", "rake --version 0.9.2") - gemfile <<-G - source "https://rubygems.org" - - gem 'rack', '1.0.1' - G - - bundle! :install, forgotten_command_line_options(:path => "vendor/bundle") - expect(err).not_to include("Could not find rake") - expect(err).to lack_errors - end - - it "checks out git repos when the lockfile is corrupted" do - gemfile <<-G - source "https://rubygems.org" - git_source(:github) {|repo| "https://github.com/\#{repo}.git" } - - gem 'activerecord', :github => 'carlhuda/rails-bundler-test', :branch => 'master' - gem 'activesupport', :github => 'carlhuda/rails-bundler-test', :branch => 'master' - gem 'actionpack', :github => 'carlhuda/rails-bundler-test', :branch => 'master' - G - - lockfile <<-L - GIT - remote: https://github.com/carlhuda/rails-bundler-test.git - revision: 369e28a87419565f1940815219ea9200474589d4 - branch: master - specs: - actionpack (3.2.2) - activemodel (= 3.2.2) - activesupport (= 3.2.2) - builder (~> 3.0.0) - erubis (~> 2.7.0) - journey (~> 1.0.1) - rack (~> 1.4.0) - rack-cache (~> 1.2) - rack-test (~> 0.6.1) - sprockets (~> 2.1.2) - activemodel (3.2.2) - activesupport (= 3.2.2) - builder (~> 3.0.0) - activerecord (3.2.2) - activemodel (= 3.2.2) - activesupport (= 3.2.2) - arel (~> 3.0.2) - tzinfo (~> 0.3.29) - activesupport (3.2.2) - i18n (~> 0.6) - multi_json (~> 1.0) - - GIT - remote: https://github.com/carlhuda/rails-bundler-test.git - revision: 369e28a87419565f1940815219ea9200474589d4 - branch: master - specs: - actionpack (3.2.2) - activemodel (= 3.2.2) - activesupport (= 3.2.2) - builder (~> 3.0.0) - erubis (~> 2.7.0) - journey (~> 1.0.1) - rack (~> 1.4.0) - rack-cache (~> 1.2) - rack-test (~> 0.6.1) - sprockets (~> 2.1.2) - activemodel (3.2.2) - activesupport (= 3.2.2) - builder (~> 3.0.0) - activerecord (3.2.2) - activemodel (= 3.2.2) - activesupport (= 3.2.2) - arel (~> 3.0.2) - tzinfo (~> 0.3.29) - activesupport (3.2.2) - i18n (~> 0.6) - multi_json (~> 1.0) - - GIT - remote: https://github.com/carlhuda/rails-bundler-test.git - revision: 369e28a87419565f1940815219ea9200474589d4 - branch: master - specs: - actionpack (3.2.2) - activemodel (= 3.2.2) - activesupport (= 3.2.2) - builder (~> 3.0.0) - erubis (~> 2.7.0) - journey (~> 1.0.1) - rack (~> 1.4.0) - rack-cache (~> 1.2) - rack-test (~> 0.6.1) - sprockets (~> 2.1.2) - activemodel (3.2.2) - activesupport (= 3.2.2) - builder (~> 3.0.0) - activerecord (3.2.2) - activemodel (= 3.2.2) - activesupport (= 3.2.2) - arel (~> 3.0.2) - tzinfo (~> 0.3.29) - activesupport (3.2.2) - i18n (~> 0.6) - multi_json (~> 1.0) - - GEM - remote: https://rubygems.org/ - specs: - arel (3.0.2) - builder (3.0.0) - erubis (2.7.0) - hike (1.2.1) - i18n (0.6.0) - journey (1.0.3) - multi_json (1.1.0) - rack (1.4.1) - rack-cache (1.2) - rack (>= 0.4) - rack-test (0.6.1) - rack (>= 1.0) - sprockets (2.1.2) - hike (~> 1.2) - rack (~> 1.0) - tilt (~> 1.1, != 1.3.0) - tilt (1.3.3) - tzinfo (0.3.32) - - PLATFORMS - ruby - - DEPENDENCIES - actionpack! - activerecord! - activesupport! - L - - bundle! :lock - expect(last_command.stderr).to lack_errors - end - - it "outputs a helpful error message when gems have invalid gemspecs" do - install_gemfile <<-G, :standalone => true - source 'https://rubygems.org' - gem "resque-scheduler", "2.2.0" - G - expect(out).to include("You have one or more invalid gemspecs that need to be fixed.") - expect(out).to include("resque-scheduler 2.2.0 has an invalid gemspec") - end -end diff --git a/spec/bundler/realworld/gemfile_source_header_spec.rb b/spec/bundler/realworld/gemfile_source_header_spec.rb deleted file mode 100644 index 59c1916874..0000000000 --- a/spec/bundler/realworld/gemfile_source_header_spec.rb +++ /dev/null @@ -1,53 +0,0 @@ -# frozen_string_literal: true - -require "thread" - -RSpec.describe "fetching dependencies with a mirrored source", :realworld => true, :rubygems => ">= 2.0" do - let(:mirror) { "https://server.example.org" } - let(:original) { "http://127.0.0.1:#{@port}" } - - before do - setup_server - bundle "config --local mirror.#{mirror} #{original}" - end - - after do - Artifice.deactivate - @t.kill - @t.join - end - - it "sets the 'X-Gemfile-Source' header and bundles successfully" do - gemfile <<-G - source "#{mirror}" - gem 'weakling' - G - - bundle :install, :artifice => nil - - expect(out).to include("Installing weakling") - expect(out).to include("Bundle complete") - expect(the_bundle).to include_gems "weakling 0.0.3" - end - - private - - def setup_server - require_rack - @port = find_unused_port - @server_uri = "http://127.0.0.1:#{@port}" - - require File.expand_path("../../support/artifice/endpoint_mirror_source", __FILE__) - - @t = Thread.new do - Rack::Server.start(:app => EndpointMirrorSource, - :Host => "0.0.0.0", - :Port => @port, - :server => "webrick", - :AccessLog => [], - :Logger => Spec::SilentLogger.new) - end.run - - wait_for_server("127.0.0.1", @port) - end -end diff --git a/spec/bundler/realworld/mirror_probe_spec.rb b/spec/bundler/realworld/mirror_probe_spec.rb deleted file mode 100644 index ab74886329..0000000000 --- a/spec/bundler/realworld/mirror_probe_spec.rb +++ /dev/null @@ -1,144 +0,0 @@ -# frozen_string_literal: true - -require "thread" - -RSpec.describe "fetching dependencies with a not available mirror", :realworld => true do - let(:mirror) { @mirror_uri } - let(:original) { @server_uri } - let(:server_port) { @server_port } - let(:host) { "127.0.0.1" } - - before do - require_rack - setup_server - setup_mirror - end - - after do - Artifice.deactivate - @server_thread.kill - @server_thread.join - end - - context "with a specific fallback timeout" do - before do - global_config("BUNDLE_MIRROR__HTTP://127__0__0__1:#{server_port}/__FALLBACK_TIMEOUT/" => "true", - "BUNDLE_MIRROR__HTTP://127__0__0__1:#{server_port}/" => mirror) - end - - it "install a gem using the original uri when the mirror is not responding" do - gemfile <<-G - source "#{original}" - gem 'weakling' - G - - bundle :install, :artifice => nil - - expect(out).to include("Installing weakling") - expect(out).to include("Bundle complete") - expect(the_bundle).to include_gems "weakling 0.0.3" - end - end - - context "with a global fallback timeout" do - before do - global_config("BUNDLE_MIRROR__ALL__FALLBACK_TIMEOUT/" => "1", - "BUNDLE_MIRROR__ALL" => mirror) - end - - it "install a gem using the original uri when the mirror is not responding" do - gemfile <<-G - source "#{original}" - gem 'weakling' - G - - bundle :install, :artifice => nil - - expect(out).to include("Installing weakling") - expect(out).to include("Bundle complete") - expect(the_bundle).to include_gems "weakling 0.0.3" - end - end - - context "with a specific mirror without a fallback timeout" do - before do - global_config("BUNDLE_MIRROR__HTTP://127__0__0__1:#{server_port}/" => mirror) - end - - it "fails to install the gem with a timeout error" do - gemfile <<-G - source "#{original}" - gem 'weakling' - G - - bundle :install, :artifice => nil - - expect(out).to include("Fetching source index from #{mirror}") - expect(out).to include("Retrying fetcher due to error (2/4): Bundler::HTTPError Could not fetch specs from #{mirror}") - expect(out).to include("Retrying fetcher due to error (3/4): Bundler::HTTPError Could not fetch specs from #{mirror}") - expect(out).to include("Retrying fetcher due to error (4/4): Bundler::HTTPError Could not fetch specs from #{mirror}") - expect(out).to include("Could not fetch specs from #{mirror}") - end - - it "prints each error and warning on a new line" do - gemfile <<-G - source "#{original}" - gem 'weakling' - G - - bundle :install, :artifice => nil - - expect(last_command.stdout).to include "Fetching source index from #{mirror}/" - expect(last_command.bundler_err).to include <<-EOS.strip -Retrying fetcher due to error (2/4): Bundler::HTTPError Could not fetch specs from #{mirror}/ -Retrying fetcher due to error (3/4): Bundler::HTTPError Could not fetch specs from #{mirror}/ -Retrying fetcher due to error (4/4): Bundler::HTTPError Could not fetch specs from #{mirror}/ -Could not fetch specs from #{mirror}/ - EOS - end - end - - context "with a global mirror without a fallback timeout" do - before do - global_config("BUNDLE_MIRROR__ALL" => mirror) - end - - it "fails to install the gem with a timeout error" do - gemfile <<-G - source "#{original}" - gem 'weakling' - G - - bundle :install, :artifice => nil - - expect(out).to include("Fetching source index from #{mirror}") - expect(out).to include("Retrying fetcher due to error (2/4): Bundler::HTTPError Could not fetch specs from #{mirror}") - expect(out).to include("Retrying fetcher due to error (3/4): Bundler::HTTPError Could not fetch specs from #{mirror}") - expect(out).to include("Retrying fetcher due to error (4/4): Bundler::HTTPError Could not fetch specs from #{mirror}") - expect(out).to include("Could not fetch specs from #{mirror}") - end - end - - def setup_server - @server_port = find_unused_port - @server_uri = "http://#{host}:#{@server_port}" - - require File.expand_path("../../support/artifice/endpoint", __FILE__) - - @server_thread = Thread.new do - Rack::Server.start(:app => Endpoint, - :Host => host, - :Port => @server_port, - :server => "webrick", - :AccessLog => [], - :Logger => Spec::SilentLogger.new) - end.run - - wait_for_server(host, @server_port) - end - - def setup_mirror - mirror_port = find_unused_port - @mirror_uri = "http://#{host}:#{mirror_port}" - end -end diff --git a/spec/bundler/realworld/parallel_spec.rb b/spec/bundler/realworld/parallel_spec.rb deleted file mode 100644 index ed4430c68b..0000000000 --- a/spec/bundler/realworld/parallel_spec.rb +++ /dev/null @@ -1,74 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe "parallel", :realworld => true, :sometimes => true do - it "installs" do - gemfile <<-G - source "https://rubygems.org" - gem 'activesupport', '~> 3.2.13' - gem 'faker', '~> 1.1.2' - gem 'i18n', '~> 0.6.0' # Because 0.7+ requires Ruby 1.9.3+ - G - - bundle :install, :jobs => 4, :env => { "DEBUG" => "1" } - - if Bundler.rubygems.provides?(">= 2.1.0") - expect(out).to match(/[1-3]: /) - else - expect(out).to include("is not threadsafe") - end - - bundle "info activesupport --path" - expect(out).to match(/activesupport/) - - bundle "info faker --path" - expect(out).to match(/faker/) - end - - it "updates" do - install_gemfile <<-G - source "https://rubygems.org" - gem 'activesupport', '3.2.12' - gem 'faker', '~> 1.1.2' - G - - gemfile <<-G - source "https://rubygems.org" - gem 'activesupport', '~> 3.2.12' - gem 'faker', '~> 1.1.2' - gem 'i18n', '~> 0.6.0' # Because 0.7+ requires Ruby 1.9.3+ - G - - bundle :update, :jobs => 4, :env => { "DEBUG" => "1" }, :all => bundle_update_requires_all? - - if Bundler.rubygems.provides?(">= 2.1.0") - expect(out).to match(/[1-3]: /) - else - expect(out).to include("is not threadsafe") - end - - bundle "info activesupport --path" - expect(out).to match(/activesupport-3\.2\.\d+/) - - bundle "info faker --path" - expect(out).to match(/faker/) - end - - it "works with --standalone" do - gemfile <<-G, :standalone => true - source "https://rubygems.org" - gem "diff-lcs" - G - - bundle :install, :standalone => true, :jobs => 4 - - ruby <<-RUBY, :no_lib => true - $:.unshift File.expand_path("bundle") - require "bundler/setup" - - require "diff/lcs" - puts Diff::LCS - RUBY - - expect(out).to eq("Diff::LCS") - end -end diff --git a/spec/bundler/resolver/basic_spec.rb b/spec/bundler/resolver/basic_spec.rb deleted file mode 100644 index 623d092644..0000000000 --- a/spec/bundler/resolver/basic_spec.rb +++ /dev/null @@ -1,289 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe "Resolving" do - before :each do - @index = an_awesome_index - end - - it "resolves a single gem" do - dep "rack" - - should_resolve_as %w[rack-1.1] - end - - it "resolves a gem with dependencies" do - dep "actionpack" - - should_resolve_as %w[actionpack-2.3.5 activesupport-2.3.5 rack-1.0] - end - - it "resolves a conflicting index" do - @index = a_conflict_index - dep "my_app" - should_resolve_as %w[activemodel-3.2.11 builder-3.0.4 grape-0.2.6 my_app-1.0.0] - end - - it "resolves a complex conflicting index" do - @index = a_complex_conflict_index - dep "my_app" - should_resolve_as %w[a-1.4.0 b-0.3.5 c-3.2 d-0.9.8 my_app-1.1.0] - end - - it "resolves a index with conflict on child" do - @index = index_with_conflict_on_child - dep "chef_app" - should_resolve_as %w[berkshelf-2.0.7 chef-10.26 chef_app-1.0.0 json-1.7.7] - end - - it "prefers expicitly requested dependencies when resolving an index which would otherwise be ambiguous" do - @index = an_ambiguous_index - dep "a" - dep "b" - should_resolve_as %w[a-1.0.0 b-2.0.0 c-1.0.0 d-1.0.0] - end - - it "prefers non-prerelease resolutions in sort order" do - @index = optional_prereleases_index - dep "a" - dep "b" - should_resolve_as %w[a-1.0.0 b-1.5.0] - end - - it "resolves a index with root level conflict on child" do - @index = a_index_with_root_conflict_on_child - dep "i18n", "~> 0.4" - dep "activesupport", "~> 3.0" - dep "activerecord", "~> 3.0" - dep "builder", "~> 2.1.2" - should_resolve_as %w[activesupport-3.0.5 i18n-0.4.2 builder-2.1.2 activerecord-3.0.5 activemodel-3.0.5] - end - - it "resolves a gem specified with a pre-release version" do - dep "activesupport", "~> 3.0.0.beta" - dep "activemerchant" - should_resolve_as %w[activemerchant-2.3.5 activesupport-3.0.0.beta1] - end - - it "doesn't select a pre-release if not specified in the Gemfile" do - dep "activesupport" - dep "reform" - should_resolve_as %w[reform-1.0.0 activesupport-2.3.5] - end - - it "doesn't select a pre-release for sub-dependencies" do - dep "reform" - should_resolve_as %w[reform-1.0.0 activesupport-2.3.5] - end - - it "selects a pre-release for sub-dependencies if it's the only option" do - dep "need-pre" - should_resolve_as %w[need-pre-1.0.0 activesupport-3.0.0.beta1] - end - - it "raises an exception if a child dependency is not resolved" do - @index = a_unresovable_child_index - dep "chef_app_error" - expect do - resolve - end.to raise_error(Bundler::VersionConflict) - end - - it "raises an exception with the minimal set of conflicting dependencies" do - @index = build_index do - %w[0.9 1.0 2.0].each {|v| gem("a", v) } - gem("b", "1.0") { dep "a", ">= 2" } - gem("c", "1.0") { dep "a", "< 1" } - end - dep "a" - dep "b" - dep "c" - expect do - resolve - end.to raise_error(Bundler::VersionConflict, <<-E.strip) -Bundler could not find compatible versions for gem "a": - In Gemfile: - b was resolved to 1.0, which depends on - a (>= 2) - - c was resolved to 1.0, which depends on - a (< 1) - E - end - - it "should throw error in case of circular dependencies" do - @index = a_circular_index - dep "circular_app" - - expect do - resolve - end.to raise_error(Bundler::CyclicDependencyError, /please remove either gem 'bar' or gem 'foo'/i) - end - - # Issue #3459 - it "should install the latest possible version of a direct requirement with no constraints given" do - @index = a_complicated_index - dep "foo" - should_resolve_and_include %w[foo-3.0.5] - end - - # Issue #3459 - it "should install the latest possible version of a direct requirement with constraints given" do - @index = a_complicated_index - dep "foo", ">= 3.0.0" - should_resolve_and_include %w[foo-3.0.5] - end - - it "takes into account required_ruby_version" do - @index = build_index do - gem "foo", "1.0.0" do - dep "bar", ">= 0" - end - - gem "foo", "2.0.0" do |s| - dep "bar", ">= 0" - s.required_ruby_version = "~> 2.0.0" - end - - gem "bar", "1.0.0" - - gem "bar", "2.0.0" do |s| - s.required_ruby_version = "~> 2.0.0" - end - - gem "ruby\0", "1.8.7" - end - dep "foo" - dep "ruby\0", "1.8.7" - - deps = [] - @deps.each do |d| - deps << Bundler::DepProxy.new(d, "ruby") - end - - should_resolve_and_include %w[foo-1.0.0 bar-1.0.0], [[]] - end - - context "conservative" do - before :each do - @index = build_index do - gem("foo", "1.3.7") { dep "bar", "~> 2.0" } - gem("foo", "1.3.8") { dep "bar", "~> 2.0" } - gem("foo", "1.4.3") { dep "bar", "~> 2.0" } - gem("foo", "1.4.4") { dep "bar", "~> 2.0" } - gem("foo", "1.4.5") { dep "bar", "~> 2.1" } - gem("foo", "1.5.0") { dep "bar", "~> 2.1" } - gem("foo", "1.5.1") { dep "bar", "~> 3.0" } - gem("foo", "2.0.0") { dep "bar", "~> 3.0" } - gem "bar", %w[2.0.3 2.0.4 2.0.5 2.1.0 2.1.1 3.0.0] - end - dep "foo" - - # base represents declared dependencies in the Gemfile that are still satisfied by the lockfile - @base = Bundler::SpecSet.new([]) - - # locked represents versions in lockfile - @locked = locked(%w[foo 1.4.3], %w[bar 2.0.3]) - end - - it "resolves all gems to latest patch" do - # strict is not set, so bar goes up a minor version due to dependency from foo 1.4.5 - should_conservative_resolve_and_include :patch, [], %w[foo-1.4.5 bar-2.1.1] - end - - it "resolves all gems to latest patch strict" do - # strict is set, so foo can only go up to 1.4.4 to avoid bar going up a minor version, and bar can go up to 2.0.5 - should_conservative_resolve_and_include [:patch, :strict], [], %w[foo-1.4.4 bar-2.0.5] - end - - it "resolves foo only to latest patch - same dependency case" do - @locked = locked(%w[foo 1.3.7], %w[bar 2.0.3]) - # bar is locked, and the lock holds here because the dependency on bar doesn't change on the matching foo version. - should_conservative_resolve_and_include :patch, ["foo"], %w[foo-1.3.8 bar-2.0.3] - end - - it "resolves foo only to latest patch - changing dependency not declared case" do - # foo is the only gem being requested for update, therefore bar is locked, but bar is NOT - # declared as a dependency in the Gemfile. In this case, locks don't apply to _changing_ - # dependencies and since the dependency of the selected foo gem changes, the latest matching - # dependency of "bar", "~> 2.1" -- bar-2.1.1 -- is selected. This is not a bug and follows - # the long-standing documented Conservative Updating behavior of bundle install. - # http://bundler.io/v1.12/man/bundle-install.1.html#CONSERVATIVE-UPDATING - should_conservative_resolve_and_include :patch, ["foo"], %w[foo-1.4.5 bar-2.1.1] - end - - it "resolves foo only to latest patch - changing dependency declared case" do - # bar is locked AND a declared dependency in the Gemfile, so it will not move, and therefore - # foo can only move up to 1.4.4. - @base << build_spec("bar", "2.0.3").first - should_conservative_resolve_and_include :patch, ["foo"], %w[foo-1.4.4 bar-2.0.3] - end - - it "resolves foo only to latest patch strict" do - # adding strict helps solve the possibly unexpected behavior of bar changing in the prior test case, - # because no versions will be returned for bar ~> 2.1, so the engine falls back to ~> 2.0 (turn on - # debugging to see this happen). - should_conservative_resolve_and_include [:patch, :strict], ["foo"], %w[foo-1.4.4 bar-2.0.3] - end - - it "resolves bar only to latest patch" do - # bar is locked, so foo can only go up to 1.4.4 - should_conservative_resolve_and_include :patch, ["bar"], %w[foo-1.4.3 bar-2.0.5] - end - - it "resolves all gems to latest minor" do - # strict is not set, so bar goes up a major version due to dependency from foo 1.4.5 - should_conservative_resolve_and_include :minor, [], %w[foo-1.5.1 bar-3.0.0] - end - - it "resolves all gems to latest minor strict" do - # strict is set, so foo can only go up to 1.5.0 to avoid bar going up a major version - should_conservative_resolve_and_include [:minor, :strict], [], %w[foo-1.5.0 bar-2.1.1] - end - - it "resolves all gems to latest major" do - should_conservative_resolve_and_include :major, [], %w[foo-2.0.0 bar-3.0.0] - end - - it "resolves all gems to latest major strict" do - should_conservative_resolve_and_include [:major, :strict], [], %w[foo-2.0.0 bar-3.0.0] - end - - # Why would this happen in real life? If bar 2.2 has a bug that the author of foo wants to bypass - # by reverting the dependency, the author of foo could release a new gem with an older requirement. - context "revert to previous" do - before :each do - @index = build_index do - gem("foo", "1.4.3") { dep "bar", "~> 2.2" } - gem("foo", "1.4.4") { dep "bar", "~> 2.1.0" } - gem("foo", "1.5.0") { dep "bar", "~> 2.0.0" } - gem "bar", %w[2.0.5 2.1.1 2.2.3] - end - dep "foo" - - # base represents declared dependencies in the Gemfile that are still satisfied by the lockfile - @base = Bundler::SpecSet.new([]) - - # locked represents versions in lockfile - @locked = locked(%w[foo 1.4.3], %w[bar 2.2.3]) - end - - it "could revert to a previous version level patch" do - should_conservative_resolve_and_include :patch, [], %w[foo-1.4.4 bar-2.1.1] - end - - it "cannot revert to a previous version in strict mode level patch" do - # fall back to the locked resolution since strict means we can't regress either version - should_conservative_resolve_and_include [:patch, :strict], [], %w[foo-1.4.3 bar-2.2.3] - end - - it "could revert to a previous version level minor" do - should_conservative_resolve_and_include :minor, [], %w[foo-1.5.0 bar-2.0.5] - end - - it "cannot revert to a previous version in strict mode level minor" do - # fall back to the locked resolution since strict means we can't regress either version - should_conservative_resolve_and_include [:minor, :strict], [], %w[foo-1.4.3 bar-2.2.3] - end - end - end -end diff --git a/spec/bundler/resolver/platform_spec.rb b/spec/bundler/resolver/platform_spec.rb deleted file mode 100644 index fee0cf1f1c..0000000000 --- a/spec/bundler/resolver/platform_spec.rb +++ /dev/null @@ -1,100 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe "Resolving platform craziness" do - describe "with cross-platform gems" do - before :each do - @index = an_awesome_index - end - - it "resolves a simple multi platform gem" do - dep "nokogiri" - platforms "ruby", "java" - - should_resolve_as %w[nokogiri-1.4.2 nokogiri-1.4.2-java weakling-0.0.3] - end - - it "doesn't pull gems that don't exist for the current platform" do - dep "nokogiri" - platforms "ruby" - - should_resolve_as %w[nokogiri-1.4.2] - end - - it "doesn't pull gems when the version is available for all requested platforms" do - dep "nokogiri" - platforms "mswin32" - - should_resolve_as %w[nokogiri-1.4.2.1-x86-mswin32] - end - end - - describe "with mingw32" do - before :each do - @index = build_index do - platforms "mingw32 mswin32 x64-mingw32" do |platform| - gem "thin", "1.2.7", platform - end - gem "win32-api", "1.5.1", "universal-mingw32" - end - end - - it "finds mswin gems" do - # win32 is hardcoded to get CPU x86 in rubygems - platforms "mswin32" - dep "thin" - should_resolve_as %w[thin-1.2.7-x86-mswin32] - end - - it "finds mingw gems" do - # mingw is _not_ hardcoded to add CPU x86 in rubygems - platforms "x86-mingw32" - dep "thin" - should_resolve_as %w[thin-1.2.7-mingw32] - end - - it "finds x64-mingw gems" do - platforms "x64-mingw32" - dep "thin" - should_resolve_as %w[thin-1.2.7-x64-mingw32] - end - - it "finds universal-mingw gems on x86-mingw" do - platform "x86-mingw32" - dep "win32-api" - should_resolve_as %w[win32-api-1.5.1-universal-mingw32] - end - - it "finds universal-mingw gems on x64-mingw" do - platform "x64-mingw32" - dep "win32-api" - should_resolve_as %w[win32-api-1.5.1-universal-mingw32] - end - end - - describe "with conflicting cases" do - before :each do - @index = build_index do - gem "foo", "1.0.0" do - dep "bar", ">= 0" - end - - gem "bar", "1.0.0" do - dep "baz", "~> 1.0.0" - end - - gem "bar", "1.0.0", "java" do - dep "baz", " ~> 1.1.0" - end - - gem "baz", %w[1.0.0 1.1.0 1.2.0] - end - end - - it "reports on the conflict" do - platforms "ruby", "java" - dep "foo" - - should_conflict_on "baz" - end - end -end diff --git a/spec/bundler/runtime/executable_spec.rb b/spec/bundler/runtime/executable_spec.rb deleted file mode 100644 index dcee234e15..0000000000 --- a/spec/bundler/runtime/executable_spec.rb +++ /dev/null @@ -1,190 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe "Running bin/* commands" do - before :each do - install_gemfile! <<-G - source "file://#{gem_repo1}" - gem "rack" - G - end - - it "runs the bundled command when in the bundle" do - bundle! "binstubs rack" - - build_gem "rack", "2.0", :to_system => true do |s| - s.executables = "rackup" - end - - gembin "rackup" - expect(out).to eq("1.0.0") - end - - it "allows the location of the gem stubs to be specified" do - bundle! "binstubs rack", :path => "gbin" - - expect(bundled_app("bin")).not_to exist - expect(bundled_app("gbin/rackup")).to exist - - gembin bundled_app("gbin/rackup") - expect(out).to eq("1.0.0") - end - - it "allows absolute paths as a specification of where to install bin stubs" do - bundle! "binstubs rack", :path => tmp("bin") - - gembin tmp("bin/rackup") - expect(out).to eq("1.0.0") - end - - it "uses the default ruby install name when shebang is not specified" do - bundle! "binstubs rack" - expect(File.open("bin/rackup").gets).to eq("#!/usr/bin/env #{RbConfig::CONFIG["ruby_install_name"]}\n") - end - - it "allows the name of the shebang executable to be specified" do - bundle! "binstubs rack", :shebang => "ruby-foo" - expect(File.open("bin/rackup").gets).to eq("#!/usr/bin/env ruby-foo\n") - end - - it "runs the bundled command when out of the bundle" do - bundle! "binstubs rack" - - build_gem "rack", "2.0", :to_system => true do |s| - s.executables = "rackup" - end - - Dir.chdir(tmp) do - gembin "rackup" - expect(out).to eq("1.0.0") - end - end - - it "works with gems in path" do - build_lib "rack", :path => lib_path("rack") do |s| - s.executables = "rackup" - end - - gemfile <<-G - gem "rack", :path => "#{lib_path("rack")}" - G - - bundle! "binstubs rack" - - build_gem "rack", "2.0", :to_system => true do |s| - s.executables = "rackup" - end - - gembin "rackup" - expect(out).to eq("1.0") - end - - it "creates a bundle binstub" do - build_gem "bundler", Bundler::VERSION, :to_system => true do |s| - s.executables = "bundle" - end - - gemfile <<-G - source "file://#{gem_repo1}" - gem "bundler" - G - - bundle! "binstubs bundler" - - expect(bundled_app("bin/bundle")).to exist - end - - it "does not generate bin stubs if the option was not specified" do - bundle! "install" - - expect(bundled_app("bin/rackup")).not_to exist - end - - it "allows you to stop installing binstubs", :bundler => "< 2" do - bundle! "install --binstubs bin/" - bundled_app("bin/rackup").rmtree - bundle! "install --binstubs \"\"" - - expect(bundled_app("bin/rackup")).not_to exist - - bundle! "config bin" - expect(out).to include("You have not configured a value for `bin`") - end - - it "remembers that the option was specified", :bundler => "< 2" do - gemfile <<-G - source "file://#{gem_repo1}" - gem "activesupport" - G - - bundle! :install, forgotten_command_line_options([:binstubs, :bin] => "bin") - - gemfile <<-G - source "file://#{gem_repo1}" - gem "activesupport" - gem "rack" - G - - bundle "install" - - expect(bundled_app("bin/rackup")).to exist - end - - it "rewrites bins on --binstubs (to maintain backwards compatibility)", :bundler => "< 2" do - gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - G - - bundle! :install, forgotten_command_line_options([:binstubs, :bin] => "bin") - - File.open(bundled_app("bin/rackup"), "wb") do |file| - file.print "OMG" - end - - bundle "install" - - expect(bundled_app("bin/rackup").read).to_not eq("OMG") - end - - it "rewrites bins on binstubs (to maintain backwards compatibility)" do - install_gemfile! <<-G - source "file://#{gem_repo1}" - gem "rack" - G - - create_file("bin/rackup", "OMG") - - bundle! "binstubs rack" - - expect(bundled_app("bin/rackup").read).to_not eq("OMG") - end - - it "use BUNDLE_GEMFILE gemfile for binstub" do - # context with bin/bunlder w/ default Gemfile - bundle! "binstubs bundler" - - # generate other Gemfile with executable gem - build_repo2 do - build_gem("bindir") {|s| s.executables = "foo" } - end - - create_file("OtherGemfile", <<-G) - source "file://#{gem_repo2}" - gem 'bindir' - G - - # generate binstub for executable from non default Gemfile (other then bin/bundler version) - ENV["BUNDLE_GEMFILE"] = "OtherGemfile" - bundle "install" - bundle! "binstubs bindir" - - # remove user settings - ENV["BUNDLE_GEMFILE"] = nil - - # run binstub for non default Gemfile - gembin "foo" - - expect(exitstatus).to eq(0) if exitstatus - expect(out).to eq("1.0") - end -end diff --git a/spec/bundler/runtime/gem_tasks_spec.rb b/spec/bundler/runtime/gem_tasks_spec.rb deleted file mode 100644 index 1cf808f35b..0000000000 --- a/spec/bundler/runtime/gem_tasks_spec.rb +++ /dev/null @@ -1,44 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe "require 'bundler/gem_tasks'" do - before :each do - bundled_app("foo.gemspec").open("w") do |f| - f.write <<-GEMSPEC - Gem::Specification.new do |s| - s.name = "foo" - end - GEMSPEC - end - bundled_app("Rakefile").open("w") do |f| - f.write <<-RAKEFILE - $:.unshift("#{bundler_path}") - require "bundler/gem_tasks" - RAKEFILE - end - end - - it "includes the relevant tasks" do - with_gem_path_as(Spec::Path.base_system_gems.to_s) do - sys_exec "#{rake} -T" - end - - expect(err).to eq("") - expected_tasks = [ - "rake build", - "rake clean", - "rake clobber", - "rake install", - "rake release[remote]", - ] - tasks = out.lines.to_a.map {|s| s.split("#").first.strip } - expect(tasks & expected_tasks).to eq(expected_tasks) - expect(exitstatus).to eq(0) if exitstatus - end - - it "adds 'pkg' to rake/clean's CLOBBER" do - with_gem_path_as(Spec::Path.base_system_gems.to_s) do - sys_exec! %(#{rake} -e 'load "Rakefile"; puts CLOBBER.inspect') - end - expect(last_command.stdout).to eq '["pkg"]' - end -end diff --git a/spec/bundler/runtime/inline_spec.rb b/spec/bundler/runtime/inline_spec.rb deleted file mode 100644 index 18ca246199..0000000000 --- a/spec/bundler/runtime/inline_spec.rb +++ /dev/null @@ -1,266 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe "bundler/inline#gemfile" do - def script(code, options = {}) - requires = ["bundler/inline"] - requires.unshift File.expand_path("../../support/artifice/" + options.delete(:artifice) + ".rb", __FILE__) if options.key?(:artifice) - requires = requires.map {|r| "require '#{r}'" }.join("\n") - @out = ruby("#{requires}\n\n" + code, options) - end - - before :each do - build_lib "one", "1.0.0" do |s| - s.write "lib/baz.rb", "puts 'baz'" - s.write "lib/qux.rb", "puts 'qux'" - end - - build_lib "two", "1.0.0" do |s| - s.write "lib/two.rb", "puts 'two'" - s.add_dependency "three", "= 1.0.0" - end - - build_lib "three", "1.0.0" do |s| - s.write "lib/three.rb", "puts 'three'" - s.add_dependency "seven", "= 1.0.0" - end - - build_lib "four", "1.0.0" do |s| - s.write "lib/four.rb", "puts 'four'" - end - - build_lib "five", "1.0.0", :no_default => true do |s| - s.write "lib/mofive.rb", "puts 'five'" - end - - build_lib "six", "1.0.0" do |s| - s.write "lib/six.rb", "puts 'six'" - end - - build_lib "seven", "1.0.0" do |s| - s.write "lib/seven.rb", "puts 'seven'" - end - - build_lib "eight", "1.0.0" do |s| - s.write "lib/eight.rb", "puts 'eight'" - end - end - - it "requires the gems" do - script <<-RUBY - gemfile do - path "#{lib_path}" do - gem "two" - end - end - RUBY - - expect(out).to eq("two") - expect(exitstatus).to be_zero if exitstatus - - script <<-RUBY - gemfile do - path "#{lib_path}" do - gem "eleven" - end - end - - puts "success" - RUBY - - expect(err).to include "Could not find gem 'eleven'" - expect(out).not_to include "success" - - script <<-RUBY - gemfile(true) do - source "file://#{gem_repo1}" - gem "rack" - end - RUBY - - expect(out).to include("Rack's post install message") - expect(exitstatus).to be_zero if exitstatus - - script <<-RUBY, :artifice => "endpoint" - gemfile(true) do - source "https://notaserver.com" - gem "activesupport", :require => true - end - RUBY - - expect(out).to include("Installing activesupport") - err.gsub! %r{.*lib/sinatra/base\.rb:\d+: warning: constant ::Fixnum is deprecated$}, "" - err.strip! - expect(err).to lack_errors - expect(exitstatus).to be_zero if exitstatus - end - - it "lets me use my own ui object" do - script <<-RUBY, :artifice => "endpoint" - require 'bundler' - class MyBundlerUI < Bundler::UI::Silent - def confirm(msg, newline = nil) - puts "CONFIRMED!" - end - end - gemfile(true, :ui => MyBundlerUI.new) do - source "https://notaserver.com" - gem "activesupport", :require => true - end - RUBY - - expect(out).to eq("CONFIRMED!\nCONFIRMED!") - expect(exitstatus).to be_zero if exitstatus - end - - it "raises an exception if passed unknown arguments" do - script <<-RUBY - gemfile(true, :arglebargle => true) do - path "#{lib_path}" - gem "two" - end - - puts "success" - RUBY - expect(err).to include "Unknown options: arglebargle" - expect(out).not_to include "success" - end - - it "does not mutate the option argument" do - script <<-RUBY - require 'bundler' - options = { :ui => Bundler::UI::Shell.new } - gemfile(false, options) do - path "#{lib_path}" do - gem "two" - end - end - puts "OKAY" if options.key?(:ui) - RUBY - - expect(out).to match("OKAY") - expect(exitstatus).to be_zero if exitstatus - end - - it "installs quietly if necessary when the install option is not set" do - script <<-RUBY - gemfile do - source "file://#{gem_repo1}" - gem "rack" - end - - puts RACK - RUBY - - expect(out).to eq("1.0.0") - expect(err).to be_empty - expect(exitstatus).to be_zero if exitstatus - end - - it "installs quietly from git if necessary when the install option is not set" do - build_git "foo", "1.0.0" - baz_ref = build_git("baz", "2.0.0").ref_for("HEAD") - script <<-RUBY - gemfile do - gem "foo", :git => #{lib_path("foo-1.0.0").to_s.dump} - gem "baz", :git => #{lib_path("baz-2.0.0").to_s.dump}, :ref => #{baz_ref.dump} - end - - puts FOO - puts BAZ - RUBY - - expect(out).to eq("1.0.0\n2.0.0") - expect(err).to be_empty - expect(exitstatus).to be_zero if exitstatus - end - - it "allows calling gemfile twice" do - script <<-RUBY - gemfile do - path "#{lib_path}" do - gem "two" - end - end - - gemfile do - path "#{lib_path}" do - gem "four" - end - end - RUBY - - expect(out).to eq("two\nfour") - expect(err).to be_empty - expect(exitstatus).to be_zero if exitstatus - end - - it "installs inline gems when a Gemfile.lock is present" do - gemfile <<-G - source "https://notaserver.com" - gem "rake" - G - - lockfile <<-G - GEM - remote: https://rubygems.org/ - specs: - rake (11.3.0) - - PLATFORMS - ruby - - DEPENDENCIES - rake - - BUNDLED WITH - 1.13.6 - G - - in_app_root do - script <<-RUBY - gemfile do - source "file://#{gem_repo1}" - gem "rack" - end - - puts RACK - RUBY - end - - expect(err).to be_empty - expect(exitstatus).to be_zero if exitstatus - end - - it "installs inline gems when BUNDLE_GEMFILE is set to an empty string" do - ENV["BUNDLE_GEMFILE"] = "" - - in_app_root do - script <<-RUBY - gemfile do - source "file://#{gem_repo1}" - gem "rack" - end - - puts RACK - RUBY - end - - expect(err).to be_empty - expect(exitstatus).to be_zero if exitstatus - end - - it "installs inline gems when BUNDLE_BIN is set" do - ENV["BUNDLE_BIN"] = "/usr/local/bundle/bin" - - script <<-RUBY - gemfile do - source "file://#{gem_repo1}" - gem "rack" # has the rackup executable - end - - puts RACK - RUBY - expect(last_command).to be_success - expect(last_command.stdout).to eq "1.0.0" - end -end diff --git a/spec/bundler/runtime/load_spec.rb b/spec/bundler/runtime/load_spec.rb deleted file mode 100644 index b74dbde3f6..0000000000 --- a/spec/bundler/runtime/load_spec.rb +++ /dev/null @@ -1,111 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe "Bundler.load" do - describe "with a gemfile" do - before(:each) do - install_gemfile! <<-G - source "file://#{gem_repo1}" - gem "rack" - G - end - - it "provides a list of the env dependencies" do - expect(Bundler.load.dependencies).to have_dep("rack", ">= 0") - end - - it "provides a list of the resolved gems" do - expect(Bundler.load.gems).to have_gem("rack-1.0.0", "bundler-#{Bundler::VERSION}") - end - - it "ignores blank BUNDLE_GEMFILEs" do - expect do - ENV["BUNDLE_GEMFILE"] = "" - Bundler.load - end.not_to raise_error - end - end - - describe "with a gems.rb file" do - before(:each) do - create_file "gems.rb", <<-G - source "file://#{gem_repo1}" - gem "rack" - G - bundle! :install - end - - it "provides a list of the env dependencies" do - expect(Bundler.load.dependencies).to have_dep("rack", ">= 0") - end - - it "provides a list of the resolved gems" do - expect(Bundler.load.gems).to have_gem("rack-1.0.0", "bundler-#{Bundler::VERSION}") - end - end - - describe "without a gemfile" do - it "raises an exception if the default gemfile is not found" do - expect do - Bundler.load - end.to raise_error(Bundler::GemfileNotFound, /could not locate gemfile/i) - end - - it "raises an exception if a specified gemfile is not found" do - expect do - ENV["BUNDLE_GEMFILE"] = "omg.rb" - Bundler.load - end.to raise_error(Bundler::GemfileNotFound, /omg\.rb/) - end - - it "does not find a Gemfile above the testing directory" do - bundler_gemfile = tmp.join("../Gemfile") - unless File.exist?(bundler_gemfile) - FileUtils.touch(bundler_gemfile) - @remove_bundler_gemfile = true - end - begin - expect { Bundler.load }.to raise_error(Bundler::GemfileNotFound) - ensure - bundler_gemfile.rmtree if @remove_bundler_gemfile - end - end - end - - describe "when called twice" do - it "doesn't try to load the runtime twice" do - install_gemfile! <<-G - source "file:#{gem_repo1}" - gem "rack" - gem "activesupport", :group => :test - G - - ruby! <<-RUBY - require "bundler" - Bundler.setup :default - Bundler.require :default - puts RACK - begin - require "activesupport" - rescue LoadError - puts "no activesupport" - end - RUBY - - expect(out.split("\n")).to eq(["1.0.0", "no activesupport"]) - end - end - - describe "not hurting brittle rubygems" do - it "does not inject #source into the generated YAML of the gem specs" do - install_gemfile! <<-G - source "file:#{gem_repo1}" - gem "activerecord" - G - - Bundler.load.specs.each do |spec| - expect(spec.to_yaml).not_to match(/^\s+source:/) - expect(spec.to_yaml).not_to match(/^\s+groups:/) - end - end - end -end diff --git a/spec/bundler/runtime/platform_spec.rb b/spec/bundler/runtime/platform_spec.rb deleted file mode 100644 index f38f733845..0000000000 --- a/spec/bundler/runtime/platform_spec.rb +++ /dev/null @@ -1,118 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe "Bundler.setup with multi platform stuff" do - it "raises a friendly error when gems are missing locally" do - gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - G - - lockfile <<-G - GEM - remote: file:#{gem_repo1}/ - specs: - rack (1.0) - - PLATFORMS - #{local_tag} - - DEPENDENCIES - rack - G - - ruby <<-R - begin - require 'bundler' - Bundler.setup - rescue Bundler::GemNotFound => e - puts "WIN" - end - R - - expect(out).to eq("WIN") - end - - it "will resolve correctly on the current platform when the lockfile was targeted for a different one" do - lockfile <<-G - GEM - remote: file:#{gem_repo1}/ - specs: - nokogiri (1.4.2-java) - weakling (= 0.0.3) - weakling (0.0.3) - - PLATFORMS - java - - DEPENDENCIES - nokogiri - G - - simulate_platform "x86-darwin-10" - install_gemfile! <<-G - source "file://#{gem_repo1}" - gem "nokogiri" - G - - expect(the_bundle).to include_gems "nokogiri 1.4.2" - end - - it "will add the resolve for the current platform" do - lockfile <<-G - GEM - remote: file:#{gem_repo1}/ - specs: - nokogiri (1.4.2-java) - weakling (= 0.0.3) - weakling (0.0.3) - - PLATFORMS - java - - DEPENDENCIES - nokogiri - G - - simulate_platform "x86-darwin-100" - - install_gemfile! <<-G - source "file://#{gem_repo1}" - gem "nokogiri" - gem "platform_specific" - G - - expect(the_bundle).to include_gems "nokogiri 1.4.2", "platform_specific 1.0 x86-darwin-100" - end - - it "allows specifying only-ruby-platform" do - simulate_platform "java" - - install_gemfile! <<-G - source "file://#{gem_repo1}" - gem "nokogiri" - gem "platform_specific" - G - - bundle! "config force_ruby_platform true" - - bundle! "install" - - expect(the_bundle).to include_gems "nokogiri 1.4.2", "platform_specific 1.0 RUBY" - end - - it "allows specifying only-ruby-platform on windows with dependency platforms" do - simulate_windows do - install_gemfile! <<-G - source "file://#{gem_repo1}" - gem "nokogiri", :platforms => [:mingw, :mswin, :x64_mingw, :jruby] - gem "platform_specific" - G - - bundle! "config force_ruby_platform true" - - bundle! "install" - - expect(the_bundle).to include_gems "platform_specific 1.0 RUBY" - end - end -end diff --git a/spec/bundler/runtime/require_spec.rb b/spec/bundler/runtime/require_spec.rb deleted file mode 100644 index 0484e38845..0000000000 --- a/spec/bundler/runtime/require_spec.rb +++ /dev/null @@ -1,452 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe "Bundler.require" do - before :each do - build_lib "one", "1.0.0" do |s| - s.write "lib/baz.rb", "puts 'baz'" - s.write "lib/qux.rb", "puts 'qux'" - end - - build_lib "two", "1.0.0" do |s| - s.write "lib/two.rb", "puts 'two'" - s.add_dependency "three", "= 1.0.0" - end - - build_lib "three", "1.0.0" do |s| - s.write "lib/three.rb", "puts 'three'" - s.add_dependency "seven", "= 1.0.0" - end - - build_lib "four", "1.0.0" do |s| - s.write "lib/four.rb", "puts 'four'" - end - - build_lib "five", "1.0.0", :no_default => true do |s| - s.write "lib/mofive.rb", "puts 'five'" - end - - build_lib "six", "1.0.0" do |s| - s.write "lib/six.rb", "puts 'six'" - end - - build_lib "seven", "1.0.0" do |s| - s.write "lib/seven.rb", "puts 'seven'" - end - - build_lib "eight", "1.0.0" do |s| - s.write "lib/eight.rb", "puts 'eight'" - end - - build_lib "nine", "1.0.0" do |s| - s.write "lib/nine.rb", "puts 'nine'" - end - - build_lib "ten", "1.0.0" do |s| - s.write "lib/ten.rb", "puts 'ten'" - end - - gemfile <<-G - path "#{lib_path}" do - gem "one", :group => :bar, :require => %w[baz qux] - gem "two" - gem "three", :group => :not - gem "four", :require => false - gem "five" - gem "six", :group => "string" - gem "seven", :group => :not - gem "eight", :require => true, :group => :require_true - env "BUNDLER_TEST" => "nine" do - gem "nine", :require => true - end - gem "ten", :install_if => lambda { ENV["BUNDLER_TEST"] == "ten" } - end - G - end - - it "requires the gems" do - # default group - run "Bundler.require" - expect(out).to eq("two") - - # specific group - run "Bundler.require(:bar)" - expect(out).to eq("baz\nqux") - - # default and specific group - run "Bundler.require(:default, :bar)" - expect(out).to eq("baz\nqux\ntwo") - - # specific group given as a string - run "Bundler.require('bar')" - expect(out).to eq("baz\nqux") - - # specific group declared as a string - run "Bundler.require(:string)" - expect(out).to eq("six") - - # required in resolver order instead of gemfile order - run("Bundler.require(:not)") - expect(out.split("\n").sort).to eq(%w[seven three]) - - # test require: true - run "Bundler.require(:require_true)" - expect(out).to eq("eight") - end - - it "allows requiring gems with non standard names explicitly" do - run "Bundler.require ; require 'mofive'" - expect(out).to eq("two\nfive") - end - - it "allows requiring gems which are scoped by env" do - ENV["BUNDLER_TEST"] = "nine" - run "Bundler.require" - expect(out).to eq("two\nnine") - end - - it "allows requiring gems which are scoped by install_if" do - ENV["BUNDLER_TEST"] = "ten" - run "Bundler.require" - expect(out).to eq("two\nten") - end - - it "raises an exception if a require is specified but the file does not exist" do - gemfile <<-G - path "#{lib_path}" do - gem "two", :require => 'fail' - end - G - - load_error_run <<-R, "fail" - Bundler.require - R - - expect(err).to eq_err("ZOMG LOAD ERROR") - end - - it "displays a helpful message if the required gem throws an error" do - build_lib "faulty", "1.0.0" do |s| - s.write "lib/faulty.rb", "raise RuntimeError.new(\"Gem Internal Error Message\")" - end - - gemfile <<-G - path "#{lib_path}" do - gem "faulty" - end - G - - run "Bundler.require" - expect(err).to match("error while trying to load the gem 'faulty'") - expect(err).to match("Gem Internal Error Message") - end - - it "doesn't swallow the error when the library has an unrelated error" do - build_lib "loadfuuu", "1.0.0" do |s| - s.write "lib/loadfuuu.rb", "raise LoadError.new(\"cannot load such file -- load-bar\")" - end - - gemfile <<-G - path "#{lib_path}" do - gem "loadfuuu" - end - G - - cmd = <<-RUBY - begin - Bundler.require - rescue LoadError => e - $stderr.puts "ZOMG LOAD ERROR: \#{e.message}" - end - RUBY - run(cmd) - - expect(err).to eq_err("ZOMG LOAD ERROR: cannot load such file -- load-bar") - end - - describe "with namespaced gems" do - before :each do - build_lib "jquery-rails", "1.0.0" do |s| - s.write "lib/jquery/rails.rb", "puts 'jquery/rails'" - end - lib_path("jquery-rails-1.0.0/lib/jquery-rails.rb").rmtree - end - - it "requires gem names that are namespaced" do - gemfile <<-G - path '#{lib_path}' do - gem 'jquery-rails' - end - G - - run "Bundler.require" - expect(out).to eq("jquery/rails") - end - - it "silently passes if the require fails" do - build_lib "bcrypt-ruby", "1.0.0", :no_default => true do |s| - s.write "lib/brcrypt.rb", "BCrypt = '1.0.0'" - end - gemfile <<-G - path "#{lib_path}" do - gem "bcrypt-ruby" - end - G - - cmd = <<-RUBY - require 'bundler' - Bundler.require - RUBY - ruby(cmd) - - expect(err).to lack_errors - end - - it "does not mangle explicitly given requires" do - gemfile <<-G - path "#{lib_path}" do - gem 'jquery-rails', :require => 'jquery-rails' - end - G - - load_error_run <<-R, "jquery-rails" - Bundler.require - R - expect(err).to eq_err("ZOMG LOAD ERROR") - end - - it "handles the case where regex fails" do - build_lib "load-fuuu", "1.0.0" do |s| - s.write "lib/load-fuuu.rb", "raise LoadError.new(\"Could not open library 'libfuuu-1.0': libfuuu-1.0: cannot open shared object file: No such file or directory.\")" - end - - gemfile <<-G - path "#{lib_path}" do - gem "load-fuuu" - end - G - - cmd = <<-RUBY - begin - Bundler.require - rescue LoadError => e - $stderr.puts "ZOMG LOAD ERROR" if e.message.include?("Could not open library 'libfuuu-1.0'") - end - RUBY - run(cmd) - - expect(err).to eq_err("ZOMG LOAD ERROR") - end - - it "doesn't swallow the error when the library has an unrelated error" do - build_lib "load-fuuu", "1.0.0" do |s| - s.write "lib/load/fuuu.rb", "raise LoadError.new(\"cannot load such file -- load-bar\")" - end - lib_path("load-fuuu-1.0.0/lib/load-fuuu.rb").rmtree - - gemfile <<-G - path "#{lib_path}" do - gem "load-fuuu" - end - G - - cmd = <<-RUBY - begin - Bundler.require - rescue LoadError => e - $stderr.puts "ZOMG LOAD ERROR: \#{e.message}" - end - RUBY - run(cmd) - - expect(err).to eq_err("ZOMG LOAD ERROR: cannot load such file -- load-bar") - end - end - - describe "using bundle exec" do - it "requires the locked gems" do - bundle "exec ruby -e 'Bundler.require'", :env => { :RUBYOPT => "-r#{spec_dir.join("support/hax")}" } - expect(out).to eq("two") - - bundle "exec ruby -e 'Bundler.require(:bar)'", :env => { :RUBYOPT => "-r#{spec_dir.join("support/hax")}" } - expect(out).to eq("baz\nqux") - - bundle "exec ruby -e 'Bundler.require(:default, :bar)'", :env => { :RUBYOPT => "-r#{spec_dir.join("support/hax")}" } - expect(out).to eq("baz\nqux\ntwo") - end - end - - describe "order" do - before(:each) do - build_lib "one", "1.0.0" do |s| - s.write "lib/one.rb", <<-ONE - if defined?(Two) - Two.two - else - puts "two_not_loaded" - end - puts 'one' - ONE - end - - build_lib "two", "1.0.0" do |s| - s.write "lib/two.rb", <<-TWO - module Two - def self.two - puts 'module_two' - end - end - puts 'two' - TWO - end - end - - it "works when the gems are in the Gemfile in the correct order" do - gemfile <<-G - path "#{lib_path}" do - gem "two" - gem "one" - end - G - - run "Bundler.require" - expect(out).to eq("two\nmodule_two\none") - end - - describe "a gem with different requires for different envs" do - before(:each) do - build_gem "multi_gem", :to_bundle => true do |s| - s.write "lib/one.rb", "puts 'ONE'" - s.write "lib/two.rb", "puts 'TWO'" - end - - install_gemfile <<-G - gem "multi_gem", :require => "one", :group => :one - gem "multi_gem", :require => "two", :group => :two - G - end - - it "requires both with Bundler.require(both)" do - run "Bundler.require(:one, :two)" - expect(out).to eq("ONE\nTWO") - end - - it "requires one with Bundler.require(:one)" do - run "Bundler.require(:one)" - expect(out).to eq("ONE") - end - - it "requires :two with Bundler.require(:two)" do - run "Bundler.require(:two)" - expect(out).to eq("TWO") - end - end - - it "fails when the gems are in the Gemfile in the wrong order" do - gemfile <<-G - path "#{lib_path}" do - gem "one" - gem "two" - end - G - - run "Bundler.require" - expect(out).to eq("two_not_loaded\none\ntwo") - end - - describe "with busted gems" do - it "should be busted" do - build_gem "busted_require", :to_bundle => true do |s| - s.write "lib/busted_require.rb", "require 'no_such_file_omg'" - end - - install_gemfile <<-G - gem "busted_require" - G - - load_error_run <<-R, "no_such_file_omg" - Bundler.require - R - expect(err).to eq_err("ZOMG LOAD ERROR") - end - end - end - - it "does not load rubygems gemspecs that are used", :rubygems => ">= 2.5.2" do - install_gemfile! <<-G - source "file://#{gem_repo1}" - gem "rack" - G - - run! <<-R - path = File.join(Gem.dir, "specifications", "rack-1.0.0.gemspec") - contents = File.read(path) - contents = contents.lines.to_a.insert(-2, "\n raise 'broken gemspec'\n").join - File.open(path, "w") do |f| - f.write contents - end - R - - run! <<-R - Bundler.require - puts "WIN" - R - - expect(out).to eq("WIN") - end - - it "does not load git gemspecs that are used", :rubygems => ">= 2.5.2" do - build_git "foo" - - install_gemfile! <<-G - gem "foo", :git => "#{lib_path("foo-1.0")}" - G - - run! <<-R - path = Gem.loaded_specs["foo"].loaded_from - contents = File.read(path) - contents = contents.lines.to_a.insert(-2, "\n raise 'broken gemspec'\n").join - File.open(path, "w") do |f| - f.write contents - end - R - - run! <<-R - Bundler.require - puts "WIN" - R - - expect(out).to eq("WIN") - end -end - -RSpec.describe "Bundler.require with platform specific dependencies" do - it "does not require the gems that are pinned to other platforms" do - install_gemfile <<-G - source "file://#{gem_repo1}" - - platforms :#{not_local_tag} do - gem "fail", :require => "omgomg" - end - - gem "rack", "1.0.0" - G - - run "Bundler.require" - expect(err).to lack_errors - end - - it "requires gems pinned to multiple platforms, including the current one" do - install_gemfile <<-G - source "file://#{gem_repo1}" - - platforms :#{not_local_tag}, :#{local_tag} do - gem "rack", :require => "rack" - end - G - - run "Bundler.require; puts RACK" - - expect(out).to eq("1.0.0") - expect(err).to lack_errors - end -end diff --git a/spec/bundler/runtime/setup_spec.rb b/spec/bundler/runtime/setup_spec.rb deleted file mode 100644 index 97d2ea1918..0000000000 --- a/spec/bundler/runtime/setup_spec.rb +++ /dev/null @@ -1,1396 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe "Bundler.setup" do - describe "with no arguments" do - it "makes all groups available" do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "rack", :group => :test - G - - ruby <<-RUBY - require 'rubygems' - require 'bundler' - Bundler.setup - - require 'rack' - puts RACK - RUBY - expect(err).to lack_errors - expect(out).to eq("1.0.0") - end - end - - describe "when called with groups" do - before(:each) do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "yard" - gem "rack", :group => :test - G - end - - it "doesn't make all groups available" do - ruby <<-RUBY - require 'rubygems' - require 'bundler' - Bundler.setup(:default) - - begin - require 'rack' - rescue LoadError - puts "WIN" - end - RUBY - expect(err).to lack_errors - expect(out).to eq("WIN") - end - - it "accepts string for group name" do - ruby <<-RUBY - require 'rubygems' - require 'bundler' - Bundler.setup(:default, 'test') - - require 'rack' - puts RACK - RUBY - expect(err).to lack_errors - expect(out).to eq("1.0.0") - end - - it "leaves all groups available if they were already" do - ruby <<-RUBY - require 'rubygems' - require 'bundler' - Bundler.setup - Bundler.setup(:default) - - require 'rack' - puts RACK - RUBY - expect(err).to lack_errors - expect(out).to eq("1.0.0") - end - - it "leaves :default available if setup is called twice" do - ruby <<-RUBY - require 'rubygems' - require 'bundler' - Bundler.setup(:default) - Bundler.setup(:default, :test) - - begin - require 'yard' - puts "WIN" - rescue LoadError - puts "FAIL" - end - RUBY - expect(err).to lack_errors - expect(out).to match("WIN") - end - - it "handles multiple non-additive invocations" do - ruby <<-RUBY - require 'bundler' - Bundler.setup(:default, :test) - Bundler.setup(:default) - require 'rack' - - puts "FAIL" - RUBY - - expect(err).to match("rack") - expect(err).to match("LoadError") - expect(out).not_to match("FAIL") - end - end - - context "load order" do - def clean_load_path(lp) - without_bundler_load_path = ruby!("puts $LOAD_PATH").split("\n") - lp = lp - [ - bundler_path.to_s, - bundler_path.join("gems/bundler-#{Bundler::VERSION}/lib").to_s, - tmp("rubygems/lib").to_s, - root.join("../lib").expand_path.to_s, - ] - without_bundler_load_path - lp.map! {|p| p.sub(/^#{Regexp.union system_gem_path.to_s, default_bundle_path.to_s}/i, "") } - end - - it "puts loaded gems after -I and RUBYLIB", :ruby_repo do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - G - - ENV["RUBYOPT"] = "-Idash_i_dir" - ENV["RUBYLIB"] = "rubylib_dir" - - ruby <<-RUBY - require 'rubygems' - require 'bundler' - Bundler.setup - puts $LOAD_PATH - RUBY - - load_path = out.split("\n") - rack_load_order = load_path.index {|path| path.include?("rack") } - - expect(err).to eq("") - expect(load_path[1]).to include "dash_i_dir" - expect(load_path[2]).to include "rubylib_dir" - expect(rack_load_order).to be > 0 - end - - it "orders the load path correctly when there are dependencies", :ruby_repo do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "rails" - G - - ruby! <<-RUBY - require 'rubygems' - require 'bundler' - Bundler.setup - puts $LOAD_PATH - RUBY - - load_path = clean_load_path(out.split("\n")) - - expect(load_path).to start_with( - "/gems/rails-2.3.2/lib", - "/gems/activeresource-2.3.2/lib", - "/gems/activerecord-2.3.2/lib", - "/gems/actionpack-2.3.2/lib", - "/gems/actionmailer-2.3.2/lib", - "/gems/activesupport-2.3.2/lib", - "/gems/rake-10.0.2/lib" - ) - end - - it "falls back to order the load path alphabetically for backwards compatibility" do - install_gemfile! <<-G - source "file://#{gem_repo1}" - gem "weakling" - gem "duradura" - gem "terranova" - G - - ruby! <<-RUBY - require 'rubygems' - require 'bundler/setup' - puts $LOAD_PATH - RUBY - - load_path = clean_load_path(out.split("\n")) - - expect(load_path).to start_with( - "/gems/weakling-0.0.3/lib", - "/gems/terranova-8/lib", - "/gems/duradura-7.0/lib" - ) - end - end - - it "raises if the Gemfile was not yet installed" do - gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - G - - ruby <<-R - require 'rubygems' - require 'bundler' - - begin - Bundler.setup - puts "FAIL" - rescue Bundler::GemNotFound - puts "WIN" - end - R - - expect(out).to eq("WIN") - end - - it "doesn't create a Gemfile.lock if the setup fails" do - gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - G - - ruby <<-R - require 'rubygems' - require 'bundler' - - Bundler.setup - R - - expect(bundled_app("Gemfile.lock")).not_to exist - end - - it "doesn't change the Gemfile.lock if the setup fails" do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - G - - lockfile = File.read(bundled_app("Gemfile.lock")) - - gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - gem "nosuchgem", "10.0" - G - - ruby <<-R - require 'rubygems' - require 'bundler' - - Bundler.setup - R - - expect(File.read(bundled_app("Gemfile.lock"))).to eq(lockfile) - end - - it "makes a Gemfile.lock if setup succeeds" do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - G - - File.read(bundled_app("Gemfile.lock")) - - FileUtils.rm(bundled_app("Gemfile.lock")) - - run "1" - expect(bundled_app("Gemfile.lock")).to exist - end - - describe "$BUNDLE_GEMFILE" do - context "user provides an absolute path" do - it "uses BUNDLE_GEMFILE to locate the gemfile if present" do - gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - G - - gemfile bundled_app("4realz"), <<-G - source "file://#{gem_repo1}" - gem "activesupport", "2.3.5" - G - - ENV["BUNDLE_GEMFILE"] = bundled_app("4realz").to_s - bundle :install - - expect(the_bundle).to include_gems "activesupport 2.3.5" - end - end - - context "an absolute path is not provided" do - it "uses BUNDLE_GEMFILE to locate the gemfile if present" do - gemfile <<-G - source "file://#{gem_repo1}" - G - - bundle "install" - bundle "install --deployment" - - ENV["BUNDLE_GEMFILE"] = "Gemfile" - ruby <<-R - require 'rubygems' - require 'bundler' - - begin - Bundler.setup - puts "WIN" - rescue ArgumentError => e - puts "FAIL" - end - R - - expect(out).to eq("WIN") - end - end - end - - it "prioritizes gems in BUNDLE_PATH over gems in GEM_HOME" do - ENV["BUNDLE_PATH"] = bundled_app(".bundle").to_s - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "rack", "1.0.0" - G - - build_gem "rack", "1.0", :to_system => true do |s| - s.write "lib/rack.rb", "RACK = 'FAIL'" - end - - expect(the_bundle).to include_gems "rack 1.0.0" - end - - describe "integrate with rubygems" do - describe "by replacing #gem" do - before :each do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "rack", "0.9.1" - G - end - - it "replaces #gem but raises when the gem is missing" do - run <<-R - begin - gem "activesupport" - puts "FAIL" - rescue LoadError - puts "WIN" - end - R - - expect(out).to eq("WIN") - end - - it "version_requirement is now deprecated in rubygems 1.4.0+ when gem is missing" do - run <<-R - begin - gem "activesupport" - puts "FAIL" - rescue LoadError - puts "WIN" - end - R - - expect(err).to lack_errors - end - - it "replaces #gem but raises when the version is wrong" do - run <<-R - begin - gem "rack", "1.0.0" - puts "FAIL" - rescue LoadError - puts "WIN" - end - R - - expect(out).to eq("WIN") - end - - it "version_requirement is now deprecated in rubygems 1.4.0+ when the version is wrong" do - run <<-R - begin - gem "rack", "1.0.0" - puts "FAIL" - rescue LoadError - puts "WIN" - end - R - - expect(err).to lack_errors - end - end - - describe "by hiding system gems" do - before :each do - system_gems "activesupport-2.3.5" - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "yard" - G - end - - it "removes system gems from Gem.source_index" do - run "require 'yard'" - expect(out).to eq("bundler-#{Bundler::VERSION}\nyard-1.0") - end - - context "when the ruby stdlib is a substring of Gem.path" do - it "does not reject the stdlib from $LOAD_PATH" do - substring = "/" + $LOAD_PATH.find {|p| p =~ /vendor_ruby/ }.split("/")[2] - run "puts 'worked!'", :env => { "GEM_PATH" => substring } - expect(out).to eq("worked!") - end - end - end - end - - describe "with paths" do - it "activates the gems in the path source" do - system_gems "rack-1.0.0" - - build_lib "rack", "1.0.0" do |s| - s.write "lib/rack.rb", "puts 'WIN'" - end - - gemfile <<-G - source "file://#{gem_repo1}" - path "#{lib_path("rack-1.0.0")}" do - gem "rack" - end - G - - run "require 'rack'" - expect(out).to eq("WIN") - end - end - - describe "with git" do - before do - build_git "rack", "1.0.0" - - gemfile <<-G - gem "rack", :git => "#{lib_path("rack-1.0.0")}" - G - end - - it "provides a useful exception when the git repo is not checked out yet" do - run "1" - expect(err).to match(/the git source #{lib_path('rack-1.0.0')} is not yet checked out. Please run `bundle install`/i) - end - - it "does not hit the git binary if the lockfile is available and up to date" do - bundle "install" - - break_git! - - ruby <<-R - require 'rubygems' - require 'bundler' - - begin - Bundler.setup - puts "WIN" - rescue Exception => e - puts "FAIL" - end - R - - expect(out).to eq("WIN") - end - - it "provides a good exception if the lockfile is unavailable" do - bundle "install" - - FileUtils.rm(bundled_app("Gemfile.lock")) - - break_git! - - ruby <<-R - require "rubygems" - require "bundler" - - begin - Bundler.setup - puts "FAIL" - rescue Bundler::GitError => e - puts e.message - end - R - - run "puts 'FAIL'" - - expect(err).not_to include "This is not the git you are looking for" - end - - it "works even when the cache directory has been deleted" do - bundle! :install, forgotten_command_line_options(:path => "vendor/bundle") - FileUtils.rm_rf vendored_gems("cache") - expect(the_bundle).to include_gems "rack 1.0.0" - end - - it "does not randomly change the path when specifying --path and the bundle directory becomes read only" do - bundle! :install, forgotten_command_line_options(:path => "vendor/bundle") - - with_read_only("**/*") do - expect(the_bundle).to include_gems "rack 1.0.0" - end - end - - it "finds git gem when default bundle path becomes read only" do - bundle "install" - - with_read_only("#{Bundler.bundle_path}/**/*") do - expect(the_bundle).to include_gems "rack 1.0.0" - end - end - end - - describe "when specifying local override" do - it "explodes if given path does not exist on runtime" do - build_git "rack", "0.8" - - FileUtils.cp_r("#{lib_path("rack-0.8")}/.", lib_path("local-rack")) - - gemfile <<-G - source "file://#{gem_repo1}" - gem "rack", :git => "#{lib_path("rack-0.8")}", :branch => "master" - G - - bundle %(config local.rack #{lib_path("local-rack")}) - bundle! :install - - FileUtils.rm_rf(lib_path("local-rack")) - run "require 'rack'" - expect(err).to match(/Cannot use local override for rack-0.8 because #{Regexp.escape(lib_path('local-rack').to_s)} does not exist/) - end - - it "explodes if branch is not given on runtime" do - build_git "rack", "0.8" - - FileUtils.cp_r("#{lib_path("rack-0.8")}/.", lib_path("local-rack")) - - gemfile <<-G - source "file://#{gem_repo1}" - gem "rack", :git => "#{lib_path("rack-0.8")}", :branch => "master" - G - - bundle %(config local.rack #{lib_path("local-rack")}) - bundle! :install - - gemfile <<-G - source "file://#{gem_repo1}" - gem "rack", :git => "#{lib_path("rack-0.8")}" - G - - run "require 'rack'" - expect(err).to match(/because :branch is not specified in Gemfile/) - end - - it "explodes on different branches on runtime" do - build_git "rack", "0.8" - - FileUtils.cp_r("#{lib_path("rack-0.8")}/.", lib_path("local-rack")) - - gemfile <<-G - source "file://#{gem_repo1}" - gem "rack", :git => "#{lib_path("rack-0.8")}", :branch => "master" - G - - bundle %(config local.rack #{lib_path("local-rack")}) - bundle! :install - - gemfile <<-G - source "file://#{gem_repo1}" - gem "rack", :git => "#{lib_path("rack-0.8")}", :branch => "changed" - G - - run "require 'rack'" - expect(err).to match(/is using branch master but Gemfile specifies changed/) - end - - it "explodes on refs with different branches on runtime" do - build_git "rack", "0.8" - - FileUtils.cp_r("#{lib_path("rack-0.8")}/.", lib_path("local-rack")) - - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "rack", :git => "#{lib_path("rack-0.8")}", :ref => "master", :branch => "master" - G - - gemfile <<-G - source "file://#{gem_repo1}" - gem "rack", :git => "#{lib_path("rack-0.8")}", :ref => "master", :branch => "nonexistant" - G - - bundle %(config local.rack #{lib_path("local-rack")}) - run "require 'rack'" - expect(err).to match(/is using branch master but Gemfile specifies nonexistant/) - end - end - - describe "when excluding groups" do - it "doesn't change the resolve if --without is used" do - install_gemfile <<-G, forgotten_command_line_options(:without => :rails) - source "file://#{gem_repo1}" - gem "activesupport" - - group :rails do - gem "rails", "2.3.2" - end - G - - install_gems "activesupport-2.3.5" - - expect(the_bundle).to include_gems "activesupport 2.3.2", :groups => :default - end - - it "remembers --without and does not bail on bare Bundler.setup" do - install_gemfile <<-G, forgotten_command_line_options(:without => :rails) - source "file://#{gem_repo1}" - gem "activesupport" - - group :rails do - gem "rails", "2.3.2" - end - G - - install_gems "activesupport-2.3.5" - - expect(the_bundle).to include_gems "activesupport 2.3.2" - end - - it "remembers --without and does not include groups passed to Bundler.setup" do - install_gemfile <<-G, forgotten_command_line_options(:without => :rails) - source "file://#{gem_repo1}" - gem "activesupport" - - group :rack do - gem "rack" - end - - group :rails do - gem "rails", "2.3.2" - end - G - - expect(the_bundle).not_to include_gems "activesupport 2.3.2", :groups => :rack - expect(the_bundle).to include_gems "rack 1.0.0", :groups => :rack - end - end - - # Unfortunately, gem_prelude does not record the information about - # activated gems, so this test cannot work on 1.9 :( - if RUBY_VERSION < "1.9" - describe "preactivated gems" do - it "raises an exception if a pre activated gem conflicts with the bundle" do - system_gems "thin-1.0", "rack-1.0.0" - build_gem "thin", "1.1", :to_system => true do |s| - s.add_dependency "rack" - end - - gemfile <<-G - gem "thin", "1.0" - G - - ruby <<-R - require 'rubygems' - gem "thin" - require 'bundler' - begin - Bundler.setup - puts "FAIL" - rescue Gem::LoadError => e - puts e.message - end - R - - expect(out).to eq("You have already activated thin 1.1, but your Gemfile requires thin 1.0. Prepending `bundle exec` to your command may solve this.") - end - - it "version_requirement is now deprecated in rubygems 1.4.0+" do - system_gems "thin-1.0", "rack-1.0.0" - build_gem "thin", "1.1", :to_system => true do |s| - s.add_dependency "rack" - end - - gemfile <<-G - gem "thin", "1.0" - G - - ruby <<-R - require 'rubygems' - gem "thin" - require 'bundler' - begin - Bundler.setup - puts "FAIL" - rescue Gem::LoadError => e - puts e.message - end - R - - expect(err).to lack_errors - end - end - end - - # RubyGems returns loaded_from as a string - it "has loaded_from as a string on all specs" do - build_git "foo" - build_git "no-gemspec", :gemspec => false - - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - gem "foo", :git => "#{lib_path("foo-1.0")}" - gem "no-gemspec", "1.0", :git => "#{lib_path("no-gemspec-1.0")}" - G - - run <<-R - Gem.loaded_specs.each do |n, s| - puts "FAIL" unless s.loaded_from.is_a?(String) - end - R - - expect(out).to be_empty - end - - it "does not load all gemspecs", :rubygems => ">= 2.3" do - install_gemfile! <<-G - source "file://#{gem_repo1}" - gem "rack" - G - - run! <<-R - File.open(File.join(Gem.dir, "specifications", "broken.gemspec"), "w") do |f| - f.write <<-RUBY -# -*- encoding: utf-8 -*- -# stub: broken 1.0.0 ruby lib - -Gem::Specification.new do |s| - s.name = "broken" - s.version = "1.0.0" - raise "BROKEN GEMSPEC" -end - RUBY - end - R - - run! <<-R - puts "WIN" - R - - expect(out).to eq("WIN") - end - - it "ignores empty gem paths" do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - G - - ENV["GEM_HOME"] = "" - bundle %(exec ruby -e "require 'set'"), :env => { :RUBYOPT => "-r#{spec_dir.join("support/hax")}" } - - expect(err).to lack_errors - end - - describe "$MANPATH" do - before do - build_repo4 do - build_gem "with_man" do |s| - s.write("man/man1/page.1", "MANPAGE") - end - end - end - - context "when the user has one set" do - before { ENV["MANPATH"] = "/foo:" } - - it "adds the gem's man dir to the MANPATH" do - install_gemfile! <<-G - source "file:#{gem_repo4}" - gem "with_man" - G - - run! "puts ENV['MANPATH']" - expect(out).to eq("#{default_bundle_path("gems/with_man-1.0/man")}:/foo") - end - end - - context "when the user does not have one set" do - before { ENV.delete("MANPATH") } - - it "adds the gem's man dir to the MANPATH" do - install_gemfile! <<-G - source "file:#{gem_repo4}" - gem "with_man" - G - - run! "puts ENV['MANPATH']" - expect(out).to eq(default_bundle_path("gems/with_man-1.0/man").to_s) - end - end - end - - it "should prepend gemspec require paths to $LOAD_PATH in order" do - update_repo2 do - build_gem("requirepaths") do |s| - s.write("lib/rq.rb", "puts 'yay'") - s.write("src/rq.rb", "puts 'nooo'") - s.require_paths = %w[lib src] - end - end - - install_gemfile <<-G - source "file://#{gem_repo2}" - gem "requirepaths", :require => nil - G - - run "require 'rq'" - expect(out).to eq("yay") - end - - it "should clean $LOAD_PATH properly", :ruby_repo do - gem_name = "very_simple_binary" - full_gem_name = gem_name + "-1.0" - ext_dir = File.join(tmp "extenstions", full_gem_name) - - install_gem full_gem_name - - install_gemfile <<-G - source "file://#{gem_repo1}" - G - - ruby <<-R - if Gem::Specification.method_defined? :extension_dir - s = Gem::Specification.find_by_name '#{gem_name}' - s.extension_dir = '#{ext_dir}' - - # Don't build extensions. - s.class.send(:define_method, :build_extensions) { nil } - end - - require 'bundler' - gem '#{gem_name}' - - puts $LOAD_PATH.count {|path| path =~ /#{gem_name}/} >= 2 - - Bundler.setup - - puts $LOAD_PATH.count {|path| path =~ /#{gem_name}/} == 0 - R - - expect(out).to eq("true\ntrue") - end - - it "stubs out Gem.refresh so it does not reveal system gems" do - system_gems "rack-1.0.0" - - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "activesupport" - G - - run <<-R - puts Bundler.rubygems.find_name("rack").inspect - Gem.refresh - puts Bundler.rubygems.find_name("rack").inspect - R - - expect(out).to eq("[]\n[]") - end - - describe "when a vendored gem specification uses the :path option" do - it "should resolve paths relative to the Gemfile" do - path = bundled_app(File.join("vendor", "foo")) - build_lib "foo", :path => path - - # If the .gemspec exists, then Bundler handles the path differently. - # See Source::Path.load_spec_files for details. - FileUtils.rm(File.join(path, "foo.gemspec")) - - install_gemfile <<-G - gem 'foo', '1.2.3', :path => 'vendor/foo' - G - - Dir.chdir(bundled_app.parent) do - run <<-R, :env => { "BUNDLE_GEMFILE" => bundled_app("Gemfile") } - require 'foo' - R - end - expect(err).to lack_errors - end - - it "should make sure the Bundler.root is really included in the path relative to the Gemfile" do - relative_path = File.join("vendor", Dir.pwd[1..-1], "foo") - absolute_path = bundled_app(relative_path) - FileUtils.mkdir_p(absolute_path) - build_lib "foo", :path => absolute_path - - # If the .gemspec exists, then Bundler handles the path differently. - # See Source::Path.load_spec_files for details. - FileUtils.rm(File.join(absolute_path, "foo.gemspec")) - - gemfile <<-G - gem 'foo', '1.2.3', :path => '#{relative_path}' - G - - bundle :install - - Dir.chdir(bundled_app.parent) do - run <<-R, :env => { "BUNDLE_GEMFILE" => bundled_app("Gemfile") } - require 'foo' - R - end - - expect(err).to lack_errors - end - end - - describe "with git gems that don't have gemspecs" do - before :each do - build_git "no-gemspec", :gemspec => false - - install_gemfile <<-G - gem "no-gemspec", "1.0", :git => "#{lib_path("no-gemspec-1.0")}" - G - end - - it "loads the library via a virtual spec" do - run <<-R - require 'no-gemspec' - puts NOGEMSPEC - R - - expect(out).to eq("1.0") - end - end - - describe "with bundled and system gems" do - before :each do - system_gems "rack-1.0.0" - - install_gemfile <<-G - source "file://#{gem_repo1}" - - gem "activesupport", "2.3.5" - G - end - - it "does not pull in system gems" do - run <<-R - require 'rubygems' - - begin; - require 'rack' - rescue LoadError - puts 'WIN' - end - R - - expect(out).to eq("WIN") - end - - it "provides a gem method" do - run <<-R - gem 'activesupport' - require 'activesupport' - puts ACTIVESUPPORT - R - - expect(out).to eq("2.3.5") - end - - it "raises an exception if gem is used to invoke a system gem not in the bundle" do - run <<-R - begin - gem 'rack' - rescue LoadError => e - puts e.message - end - R - - expect(out).to eq("rack is not part of the bundle. Add it to your Gemfile.") - end - - it "sets GEM_HOME appropriately" do - run "puts ENV['GEM_HOME']" - expect(out).to eq(default_bundle_path.to_s) - end - end - - describe "with system gems in the bundle" do - before :each do - bundle! "config path.system true" - system_gems "rack-1.0.0" - - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "rack", "1.0.0" - gem "activesupport", "2.3.5" - G - end - - it "sets GEM_PATH appropriately" do - run "puts Gem.path" - paths = out.split("\n") - expect(paths).to include(system_gem_path.to_s) - end - end - - describe "with a gemspec that requires other files" do - before :each do - build_git "bar", :gemspec => false do |s| - s.write "lib/bar/version.rb", %(BAR_VERSION = '1.0') - s.write "bar.gemspec", <<-G - lib = File.expand_path('../lib/', __FILE__) - $:.unshift lib unless $:.include?(lib) - require 'bar/version' - - Gem::Specification.new do |s| - s.name = 'bar' - s.version = BAR_VERSION - s.summary = 'Bar' - s.files = Dir["lib/**/*.rb"] - s.author = 'no one' - end - G - end - - gemfile <<-G - gem "bar", :git => "#{lib_path("bar-1.0")}" - G - end - - it "evals each gemspec in the context of its parent directory" do - bundle :install - run "require 'bar'; puts BAR" - expect(out).to eq("1.0") - end - - it "error intelligently if the gemspec has a LoadError" do - ref = update_git "bar", :gemspec => false do |s| - s.write "bar.gemspec", "require 'foobarbaz'" - end.ref_for("HEAD") - bundle :install - - expect(out.lines.map(&:chomp)).to include( - a_string_starting_with("[!] There was an error while loading `bar.gemspec`:"), - RUBY_VERSION >= "1.9" ? a_string_starting_with("Does it try to require a relative path? That's been removed in Ruby 1.9.") : "", - " # from #{default_bundle_path "bundler", "gems", "bar-1.0-#{ref[0, 12]}", "bar.gemspec"}:1", - " > require 'foobarbaz'" - ) - end - - it "evals each gemspec with a binding from the top level" do - bundle "install" - - ruby <<-RUBY - require 'bundler' - def Bundler.require(path) - raise "LOSE" - end - Bundler.load - RUBY - - expect(err).to lack_errors - expect(out).to eq("") - end - end - - describe "when Bundler is bundled" do - it "doesn't blow up" do - install_gemfile <<-G - gem "bundler", :path => "#{File.expand_path("..", lib)}" - G - - bundle %(exec ruby -e "require 'bundler'; Bundler.setup"), :env => { :RUBYOPT => "-r#{spec_dir.join("support/hax")}" } - expect(err).to lack_errors - end - end - - describe "when BUNDLED WITH" do - def lock_with(bundler_version = nil) - lock = <<-L - GEM - remote: file:#{gem_repo1}/ - specs: - rack (1.0.0) - - PLATFORMS - #{lockfile_platforms} - - DEPENDENCIES - rack - L - - if bundler_version - lock += "\n BUNDLED WITH\n #{bundler_version}\n" - end - - lock - end - - before do - install_gemfile <<-G - source "file://#{gem_repo1}" - gem "rack" - G - end - - context "is not present" do - it "does not change the lock" do - lockfile lock_with(nil) - ruby "require 'bundler/setup'" - lockfile_should_be lock_with(nil) - end - end - - context "is newer" do - it "does not change the lock or warn" do - lockfile lock_with(Bundler::VERSION.succ) - ruby "require 'bundler/setup'" - expect(out).to eq("") - expect(err).to eq("") - lockfile_should_be lock_with(Bundler::VERSION.succ) - end - end - - context "is older" do - it "does not change the lock" do - lockfile lock_with("1.10.1") - ruby "require 'bundler/setup'" - lockfile_should_be lock_with("1.10.1") - end - end - end - - describe "when RUBY VERSION" do - let(:ruby_version) { nil } - - def lock_with(ruby_version = nil) - lock = <<-L - GEM - remote: file://localhost#{gem_repo1}/ - specs: - rack (1.0.0) - - PLATFORMS - #{lockfile_platforms} - - DEPENDENCIES - rack - L - - if ruby_version - lock += "\n RUBY VERSION\n ruby #{ruby_version}\n" - end - - lock += <<-L - - BUNDLED WITH - #{Bundler::VERSION} - L - - lock - end - - before do - install_gemfile <<-G - ruby ">= 0" - source "file://localhost#{gem_repo1}" - gem "rack" - G - lockfile lock_with(ruby_version) - end - - context "is not present" do - it "does not change the lock" do - expect { ruby! "require 'bundler/setup'" }.not_to change { lockfile } - end - end - - context "is newer" do - let(:ruby_version) { "5.5.5" } - it "does not change the lock or warn" do - expect { ruby! "require 'bundler/setup'" }.not_to change { lockfile } - expect(out).to eq("") - expect(err).to eq("") - end - end - - context "is older" do - let(:ruby_version) { "1.0.0" } - it "does not change the lock" do - expect { ruby! "require 'bundler/setup'" }.not_to change { lockfile } - end - end - end - - describe "with gemified standard libraries" do - it "does not load Psych", :ruby => "~> 2.2" do - gemfile "" - ruby <<-RUBY - require 'bundler/setup' - puts defined?(Psych::VERSION) ? Psych::VERSION : "undefined" - require 'psych' - puts Psych::VERSION - RUBY - pre_bundler, post_bundler = out.split("\n") - expect(pre_bundler).to eq("undefined") - expect(post_bundler).to match(/\d+\.\d+\.\d+/) - end - - it "does not load openssl" do - install_gemfile! "" - ruby! <<-RUBY - require "bundler/setup" - puts defined?(OpenSSL) || "undefined" - require "openssl" - puts defined?(OpenSSL) || "undefined" - RUBY - expect(out).to eq("undefined\nconstant") - end - - describe "default gem activation", :ruby_repo do - let(:exemptions) do - if Gem::Version.new(Gem::VERSION) >= Gem::Version.new("2.7") || ENV["RGV"] == "master" - [] - else - %w[io-console openssl] - end << "bundler" - end - - let(:activation_warning_hack) { strip_whitespace(<<-RUBY) } - require #{spec_dir.join("support/hax").to_s.dump} - require "rubygems" - - if Gem::Specification.instance_methods.map(&:to_sym).include?(:activate) - Gem::Specification.send(:alias_method, :bundler_spec_activate, :activate) - Gem::Specification.send(:define_method, :activate) do - unless #{exemptions.inspect}.include?(name) - warn '-' * 80 - warn "activating \#{full_name}" - warn *caller - warn '*' * 80 - end - bundler_spec_activate - end - end - RUBY - - let(:activation_warning_hack_rubyopt) do - create_file("activation_warning_hack.rb", activation_warning_hack) - "-r#{bundled_app("activation_warning_hack.rb")} #{ENV["RUBYOPT"]}" - end - - let(:code) { strip_whitespace(<<-RUBY) } - require "bundler/setup" - require "pp" - loaded_specs = Gem.loaded_specs.dup - #{exemptions.inspect}.each {|s| loaded_specs.delete(s) } - pp loaded_specs - - # not a default gem, but harmful to have loaded - open_uri = $LOADED_FEATURES.grep(/open.uri/) - unless open_uri.empty? - warn "open_uri: \#{open_uri}" - end - RUBY - - it "activates no gems with -rbundler/setup" do - install_gemfile! "" - ruby! code, :env => { :RUBYOPT => activation_warning_hack_rubyopt } - expect(last_command.stdout).to eq("{}") - end - - it "activates no gems with bundle exec" do - install_gemfile! "" - # ensure we clean out the default gems, bceause bundler's allowed to be activated - create_file("script.rb", code) - bundle! "exec ruby ./script.rb", :env => { :RUBYOPT => activation_warning_hack_rubyopt + " -rbundler/setup" } - expect(last_command.stdout).to eq("{}") - end - - it "activates no gems with bundle exec that is loaded" do - # TODO: remove once https://github.com/erikhuda/thor/pull/539 is released - exemptions << "io-console" - - install_gemfile! "" - create_file("script.rb", "#!/usr/bin/env ruby\n\n#{code}") - FileUtils.chmod(0o777, bundled_app("script.rb")) - bundle! "exec ./script.rb", :artifice => nil, :env => { :RUBYOPT => activation_warning_hack_rubyopt } - expect(last_command.stdout).to eq("{}") - end - - let(:default_gems) do - ruby!(<<-RUBY).split("\n") - if Gem::Specification.is_a?(Enumerable) - puts Gem::Specification.select(&:default_gem?).map(&:name) - end - RUBY - end - - it "activates newer versions of default gems" do - build_repo4 do - default_gems.each do |g| - build_gem g, "999999" - end - end - - default_gems.reject! {|g| exemptions.include?(g) } - - install_gemfile! <<-G - source "file:#{gem_repo4}" - #{default_gems}.each do |g| - gem g, "999999" - end - G - - expect(the_bundle).to include_gems(*default_gems.map {|g| "#{g} 999999" }) - end - - it "activates older versions of default gems" do - build_repo4 do - default_gems.each do |g| - build_gem g, "0.0.0.a" - end - end - - default_gems.reject! {|g| exemptions.include?(g) } - - install_gemfile! <<-G - source "file:#{gem_repo4}" - #{default_gems}.each do |g| - gem g, "0.0.0.a" - end - G - - expect(the_bundle).to include_gems(*default_gems.map {|g| "#{g} 0.0.0.a" }) - end - end - end - - describe "after setup" do - it "allows calling #gem on random objects", :bundler => "< 2" do - install_gemfile <<-G - source "file:#{gem_repo1}" - gem "rack" - G - - ruby! <<-RUBY - require "bundler/setup" - Object.new.gem "rack" - puts Gem.loaded_specs["rack"].full_name - RUBY - - expect(out).to eq("rack-1.0.0") - end - - it "keeps Kernel#gem private", :bundler => "2" do - install_gemfile! <<-G - source "file:#{gem_repo1}" - gem "rack" - G - - ruby <<-RUBY - require "bundler/setup" - Object.new.gem "rack" - puts "FAIL" - RUBY - - expect(last_command.stdboth).not_to include "FAIL" - expect(last_command.stderr).to include "private method `gem'" - end - - it "keeps Kernel#require private" do - install_gemfile! <<-G - source "file:#{gem_repo1}" - gem "rack" - G - - ruby <<-RUBY - require "bundler/setup" - Object.new.require "rack" - puts "FAIL" - RUBY - - expect(last_command.stdboth).not_to include "FAIL" - expect(last_command.stderr).to include "private method `require'" - end - end -end diff --git a/spec/bundler/runtime/with_clean_env_spec.rb b/spec/bundler/runtime/with_clean_env_spec.rb deleted file mode 100644 index c88da3cd02..0000000000 --- a/spec/bundler/runtime/with_clean_env_spec.rb +++ /dev/null @@ -1,151 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe "Bundler.with_env helpers" do - def bundle_exec_ruby!(code, *args) - opts = args.last.is_a?(Hash) ? args.pop : {} - env = opts[:env] ||= {} - env[:RUBYOPT] ||= "-r#{spec_dir.join("support/hax")}" - args.push opts - bundle! "exec '#{Gem.ruby}' -e #{code}", *args - end - - describe "Bundler.original_env" do - before do - bundle "config path vendor/bundle" - gemfile "" - bundle "install" - end - - it "should return the PATH present before bundle was activated", :ruby_repo do - code = "print Bundler.original_env['PATH']" - path = `getconf PATH`.strip + "#{File::PATH_SEPARATOR}/foo" - with_path_as(path) do - bundle_exec_ruby!(code.dump) - expect(last_command.stdboth).to eq(path) - end - end - - it "should return the GEM_PATH present before bundle was activated" do - code = "print Bundler.original_env['GEM_PATH']" - gem_path = ENV["GEM_PATH"] + ":/foo" - with_gem_path_as(gem_path) do - bundle_exec_ruby!(code.dump) - expect(last_command.stdboth).to eq(gem_path) - end - end - - it "works with nested bundle exec invocations", :ruby_repo do - create_file("exe.rb", <<-'RB') - count = ARGV.first.to_i - exit if count < 0 - STDERR.puts "#{count} #{ENV["PATH"].end_with?(":/foo")}" - if count == 2 - ENV["PATH"] = "#{ENV["PATH"]}:/foo" - end - exec(Gem.ruby, __FILE__, (count - 1).to_s) - RB - path = `getconf PATH`.strip + File::PATH_SEPARATOR + File.dirname(Gem.ruby) - with_path_as(path) do - bundle! "exec '#{Gem.ruby}' #{bundled_app("exe.rb")} 2", :env => { :RUBYOPT => "-r#{spec_dir.join("support/hax")}" } - end - expect(err).to eq <<-EOS.strip -2 false -1 true -0 true - EOS - end - - it "removes variables that bundler added", :ruby_repo do - original = ruby!('puts ENV.to_a.map {|e| e.join("=") }.sort.join("\n")', :env => { :RUBYOPT => "-r#{spec_dir.join("support/hax")}" }) - code = 'puts Bundler.original_env.to_a.map {|e| e.join("=") }.sort.join("\n")' - bundle! "exec '#{Gem.ruby}' -e #{code.dump}", :env => { :RUBYOPT => "-r#{spec_dir.join("support/hax")}" } - expect(out).to eq original - end - end - - describe "Bundler.clean_env", :bundler => "< 2" do - before do - bundle "config path vendor/bundle" - gemfile "" - bundle "install" - end - - it "should delete BUNDLE_PATH" do - code = "print Bundler.clean_env.has_key?('BUNDLE_PATH')" - ENV["BUNDLE_PATH"] = "./foo" - bundle_exec_ruby! code.dump - expect(last_command.stdboth).to eq "false" - end - - it "should remove '-rbundler/setup' from RUBYOPT" do - code = "print Bundler.clean_env['RUBYOPT']" - ENV["RUBYOPT"] = "-W2 -rbundler/setup" - bundle_exec_ruby! code.dump - expect(last_command.stdboth).not_to include("-rbundler/setup") - end - - it "should clean up RUBYLIB", :ruby_repo do - code = "print Bundler.clean_env['RUBYLIB']" - ENV["RUBYLIB"] = root.join("lib").to_s + File::PATH_SEPARATOR + "/foo" - bundle_exec_ruby! code.dump - expect(last_command.stdboth).to eq("/foo") - end - - it "should restore the original MANPATH" do - code = "print Bundler.clean_env['MANPATH']" - ENV["MANPATH"] = "/foo" - ENV["BUNDLER_ORIG_MANPATH"] = "/foo-original" - bundle_exec_ruby! code.dump - expect(last_command.stdboth).to eq("/foo-original") - end - end - - describe "Bundler.with_original_env" do - it "should set ENV to original_env in the block" do - expected = Bundler.original_env - actual = Bundler.with_original_env { ENV.to_hash } - expect(actual).to eq(expected) - end - - it "should restore the environment after execution" do - Bundler.with_original_env do - ENV["FOO"] = "hello" - end - - expect(ENV).not_to have_key("FOO") - end - end - - describe "Bundler.with_clean_env", :bundler => "< 2" do - it "should set ENV to clean_env in the block" do - expected = Bundler.clean_env - actual = Bundler.with_clean_env { ENV.to_hash } - expect(actual).to eq(expected) - end - - it "should restore the environment after execution" do - Bundler.with_clean_env do - ENV["FOO"] = "hello" - end - - expect(ENV).not_to have_key("FOO") - end - end - - describe "Bundler.clean_system", :ruby => ">= 1.9", :bundler => "< 2" do - it "runs system inside with_clean_env" do - Bundler.clean_system(%(echo 'if [ "$BUNDLE_PATH" = "" ]; then exit 42; else exit 1; fi' | /bin/sh)) - expect($?.exitstatus).to eq(42) - end - end - - describe "Bundler.clean_exec", :ruby => ">= 1.9", :bundler => "< 2" do - it "runs exec inside with_clean_env" do - pid = Kernel.fork do - Bundler.clean_exec(%(echo 'if [ "$BUNDLE_PATH" = "" ]; then exit 42; else exit 1; fi' | /bin/sh)) - end - Process.wait(pid) - expect($?.exitstatus).to eq(42) - end - end -end diff --git a/spec/bundler/spec_helper.rb b/spec/bundler/spec_helper.rb deleted file mode 100644 index 2cddbf6056..0000000000 --- a/spec/bundler/spec_helper.rb +++ /dev/null @@ -1,152 +0,0 @@ -# frozen_string_literal: true - -$:.unshift File.expand_path("..", __FILE__) -$:.unshift File.expand_path("../../lib", __FILE__) - -require "rubygems" -module Gem - if defined?(@path_to_default_spec_map) - @path_to_default_spec_map.delete_if do |_path, spec| - spec.name == "bundler" - end - end -end - -begin - require File.expand_path("../support/path.rb", __FILE__) - spec = Gem::Specification.load(Spec::Path.gemspec.to_s) - rspec = spec.dependencies.find {|d| d.name == "rspec" } - gem "rspec", rspec.requirement.to_s - require "rspec" - require "diff/lcs" -rescue LoadError - abort "Run rake spec:deps to install development dependencies" -end - -require "bundler/psyched_yaml" -require "bundler/vendored_fileutils" -require "uri" -require "digest" - -if File.expand_path(__FILE__) =~ %r{([^\w/\.:\-])} - abort "The bundler specs cannot be run from a path that contains special characters (particularly #{$1.inspect})" -end - -require "bundler" - -require "open3" - -Dir["#{File.expand_path("../support", __FILE__)}/*.rb"].each do |file| - file = file.gsub(%r{\A#{Regexp.escape File.expand_path("..", __FILE__)}/}, "") - require file unless file.end_with?("hax.rb") -end - -$debug = false - -Spec::Manpages.setup -Spec::Rubygems.setup -FileUtils.rm_rf(Spec::Path.gem_repo1) -ENV["RUBYOPT"] = "#{ENV["RUBYOPT"]} -r#{Spec::Path.spec_dir}/support/hax.rb" -ENV["BUNDLE_SPEC_RUN"] = "true" - -# Don't wrap output in tests -ENV["THOR_COLUMNS"] = "10000" - -Spec::CodeClimate.setup - -module Gem - def self.ruby= ruby - @ruby = ruby - end -end - -RSpec.configure do |config| - config.include Spec::Builders - config.include Spec::Helpers - config.include Spec::Indexes - config.include Spec::Matchers - config.include Spec::Path - config.include Spec::Rubygems - config.include Spec::Platforms - config.include Spec::Sudo - config.include Spec::Permissions - - # Enable flags like --only-failures and --next-failure - config.example_status_persistence_file_path = ".rspec_status" - - config.disable_monkey_patching! - - # Since failures cause us to keep a bunch of long strings in memory, stop - # once we have a large number of failures (indicative of core pieces of - # bundler being broken) so that running the full test suite doesn't take - # forever due to memory constraints - config.fail_fast ||= 25 if ENV["CI"] - - if ENV["BUNDLER_SUDO_TESTS"] && Spec::Sudo.present? - config.filter_run :sudo => true - else - config.filter_run_excluding :sudo => true - end - - if ENV["BUNDLER_REALWORLD_TESTS"] - config.filter_run :realworld => true - else - config.filter_run_excluding :realworld => true - end - - git_version = Bundler::Source::Git::GitProxy.new(nil, nil, nil).version - - config.filter_run_excluding :ruby => LessThanProc.with(RUBY_VERSION) - config.filter_run_excluding :rubygems => LessThanProc.with(Gem::VERSION) - config.filter_run_excluding :git => LessThanProc.with(git_version) - config.filter_run_excluding :rubygems_master => (ENV["RGV"] != "master") - config.filter_run_excluding :bundler => LessThanProc.with(Bundler::VERSION.split(".")[0, 2].join(".")) - config.filter_run_excluding :ruby_repo => !!(ENV["BUNDLE_RUBY"] && ENV["BUNDLE_GEM"]) - - config.filter_run_when_matching :focus unless ENV["CI"] - - original_wd = Dir.pwd - original_env = ENV.to_hash.delete_if {|k, _v| k.start_with?(Bundler::EnvironmentPreserver::BUNDLER_PREFIX) } - - config.expect_with :rspec do |c| - c.syntax = :expect - end - - config.before :suite do - if ENV['BUNDLE_RUBY'] - @orig_ruby = Gem.ruby - Gem.ruby = ENV['BUNDLE_RUBY'] - end - end - - config.before :all do - build_repo1 - end - - config.before :each do - reset! - system_gems [] - in_app_root - @command_executions = [] - end - - config.after :each do |example| - all_output = @command_executions.map(&:to_s_verbose).join("\n\n") - if example.exception && !all_output.empty? - warn all_output unless config.formatters.grep(RSpec::Core::Formatters::DocumentationFormatter).empty? - message = example.exception.message + "\n\nCommands:\n#{all_output}" - (class << example.exception; self; end).send(:define_method, :message) do - message - end - end - - Dir.chdir(original_wd) - ENV.replace(original_env) - end - - config.after :suite do - if ENV['BUNDLE_RUBY'] - Gem.ruby = @orig_ruby - end - end -end diff --git a/spec/bundler/support/artifice/compact_index.rb b/spec/bundler/support/artifice/compact_index.rb deleted file mode 100644 index 123efe3c58..0000000000 --- a/spec/bundler/support/artifice/compact_index.rb +++ /dev/null @@ -1,122 +0,0 @@ -# frozen_string_literal: true - -require File.expand_path("../endpoint", __FILE__) - -$LOAD_PATH.unshift Dir[base_system_gems.join("gems/compact_index*/lib")].first.to_s -require "compact_index" - -class CompactIndexAPI < Endpoint - helpers do - def load_spec(name, version, platform, gem_repo) - full_name = "#{name}-#{version}" - full_name += "-#{platform}" if platform != "ruby" - Marshal.load(Gem.inflate(File.open(gem_repo.join("quick/Marshal.4.8/#{full_name}.gemspec.rz")).read)) - end - - def etag_response - response_body = yield - checksum = Digest(:MD5).hexdigest(response_body) - return if not_modified?(checksum) - headers "ETag" => quote(checksum) - headers "Surrogate-Control" => "max-age=2592000, stale-while-revalidate=60" - content_type "text/plain" - requested_range_for(response_body) - rescue => e - puts e - puts e.backtrace - raise - end - - def not_modified?(checksum) - etags = parse_etags(request.env["HTTP_IF_NONE_MATCH"]) - - return unless etags.include?(checksum) - headers "ETag" => quote(checksum) - status 304 - body "" - end - - def requested_range_for(response_body) - ranges = Rack::Utils.byte_ranges(env, response_body.bytesize) - - if ranges - status 206 - body ranges.map! {|range| slice_body(response_body, range) }.join - else - status 200 - body response_body - end - end - - def quote(string) - %("#{string}") - end - - def parse_etags(value) - value ? value.split(/, ?/).select {|s| s.sub!(/"(.*)"/, '\1') } : [] - end - - def slice_body(body, range) - if body.respond_to?(:byteslice) - body.byteslice(range) - else # pre-1.9.3 - body.unpack("@#{range.first}a#{range.end + 1}").first - end - end - - def gems(gem_repo = GEM_REPO) - @gems ||= {} - @gems[gem_repo] ||= begin - specs = Bundler::Deprecate.skip_during do - %w[specs.4.8 prerelease_specs.4.8].map do |filename| - Marshal.load(File.open(gem_repo.join(filename)).read).map do |name, version, platform| - load_spec(name, version, platform, gem_repo) - end - end.flatten - end - - specs.group_by(&:name).map do |name, versions| - gem_versions = versions.map do |spec| - deps = spec.dependencies.select {|d| d.type == :runtime }.map do |d| - reqs = d.requirement.requirements.map {|r| r.join(" ") }.join(", ") - CompactIndex::Dependency.new(d.name, reqs) - end - checksum = begin - Digest::SHA256.file("#{GEM_REPO}/gems/#{spec.original_name}.gem").base64digest - rescue - nil - end - CompactIndex::GemVersion.new(spec.version.version, spec.platform.to_s, checksum, nil, - deps, spec.required_ruby_version, spec.required_rubygems_version) - end - CompactIndex::Gem.new(name, gem_versions) - end - end - end - end - - get "/names" do - etag_response do - CompactIndex.names(gems.map(&:name)) - end - end - - get "/versions" do - etag_response do - file = tmp("versions.list") - file.delete if file.file? - file = CompactIndex::VersionsFile.new(file.to_s) - file.create(gems) - file.contents - end - end - - get "/info/:name" do - etag_response do - gem = gems.find {|g| g.name == params[:name] } - CompactIndex.info(gem ? gem.versions : []) - end - end -end - -Artifice.activate_with(CompactIndexAPI) diff --git a/spec/bundler/support/artifice/compact_index_api_missing.rb b/spec/bundler/support/artifice/compact_index_api_missing.rb deleted file mode 100644 index d4e68c38e8..0000000000 --- a/spec/bundler/support/artifice/compact_index_api_missing.rb +++ /dev/null @@ -1,18 +0,0 @@ -# frozen_string_literal: true - -require File.expand_path("../compact_index", __FILE__) - -Artifice.deactivate - -class CompactIndexApiMissing < CompactIndexAPI - get "/fetch/actual/gem/:id" do - $stderr.puts params[:id] - if params[:id] == "rack-1.0.gemspec.rz" - halt 404 - else - File.read("#{gem_repo2}/quick/Marshal.4.8/#{params[:id]}") - end - end -end - -Artifice.activate_with(CompactIndexApiMissing) diff --git a/spec/bundler/support/artifice/compact_index_basic_authentication.rb b/spec/bundler/support/artifice/compact_index_basic_authentication.rb deleted file mode 100644 index 97aa6cbd84..0000000000 --- a/spec/bundler/support/artifice/compact_index_basic_authentication.rb +++ /dev/null @@ -1,15 +0,0 @@ -# frozen_string_literal: true - -require File.expand_path("../compact_index", __FILE__) - -Artifice.deactivate - -class CompactIndexBasicAuthentication < CompactIndexAPI - before do - unless env["HTTP_AUTHORIZATION"] - halt 401, "Authentication info not supplied" - end - end -end - -Artifice.activate_with(CompactIndexBasicAuthentication) diff --git a/spec/bundler/support/artifice/compact_index_checksum_mismatch.rb b/spec/bundler/support/artifice/compact_index_checksum_mismatch.rb deleted file mode 100644 index 62feb9f164..0000000000 --- a/spec/bundler/support/artifice/compact_index_checksum_mismatch.rb +++ /dev/null @@ -1,16 +0,0 @@ -# frozen_string_literal: true - -require File.expand_path("../compact_index", __FILE__) - -Artifice.deactivate - -class CompactIndexChecksumMismatch < CompactIndexAPI - get "/versions" do - headers "ETag" => quote("123") - headers "Surrogate-Control" => "max-age=2592000, stale-while-revalidate=60" - content_type "text/plain" - body "" - end -end - -Artifice.activate_with(CompactIndexChecksumMismatch) diff --git a/spec/bundler/support/artifice/compact_index_concurrent_download.rb b/spec/bundler/support/artifice/compact_index_concurrent_download.rb deleted file mode 100644 index 972ecb88b7..0000000000 --- a/spec/bundler/support/artifice/compact_index_concurrent_download.rb +++ /dev/null @@ -1,32 +0,0 @@ -# frozen_string_literal: true - -require File.expand_path("../compact_index", __FILE__) - -Artifice.deactivate - -class CompactIndexConcurrentDownload < CompactIndexAPI - get "/versions" do - versions = File.join(Bundler.rubygems.user_home, ".bundle", "cache", "compact_index", - "localgemserver.test.80.dd34752a738ee965a2a4298dc16db6c5", "versions") - - # Verify the original (empty) content hasn't been deleted, e.g. on a retry - File.read(versions) == "" || raise("Original file should be present and empty") - - # Verify this is only requested once for a partial download - env["HTTP_RANGE"] || raise("Missing Range header for expected partial download") - - # Overwrite the file in parallel, which should be then overwritten - # after a successful download to prevent corruption - File.open(versions, "w") {|f| f.puts "another process" } - - etag_response do - file = tmp("versions.list") - file.delete if file.file? - file = CompactIndex::VersionsFile.new(file.to_s) - file.create(gems) - file.contents - end - end -end - -Artifice.activate_with(CompactIndexConcurrentDownload) diff --git a/spec/bundler/support/artifice/compact_index_creds_diff_host.rb b/spec/bundler/support/artifice/compact_index_creds_diff_host.rb deleted file mode 100644 index 0d349bcc1e..0000000000 --- a/spec/bundler/support/artifice/compact_index_creds_diff_host.rb +++ /dev/null @@ -1,39 +0,0 @@ -# frozen_string_literal: true - -require File.expand_path("../compact_index", __FILE__) - -Artifice.deactivate - -class CompactIndexCredsDiffHost < CompactIndexAPI - helpers do - def auth - @auth ||= Rack::Auth::Basic::Request.new(request.env) - end - - def authorized? - auth.provided? && auth.basic? && auth.credentials && auth.credentials == %w[user pass] - end - - def protected! - return if authorized? - response["WWW-Authenticate"] = %(Basic realm="Testing HTTP Auth") - throw(:halt, [401, "Not authorized\n"]) - end - end - - before do - protected! unless request.path_info.include?("/no/creds/") - end - - get "/gems/:id" do - redirect "http://diffhost.com/no/creds/#{params[:id]}" - end - - get "/no/creds/:id" do - if request.host.include?("diffhost") && !auth.provided? - File.read("#{gem_repo1}/gems/#{params[:id]}") - end - end -end - -Artifice.activate_with(CompactIndexCredsDiffHost) diff --git a/spec/bundler/support/artifice/compact_index_extra.rb b/spec/bundler/support/artifice/compact_index_extra.rb deleted file mode 100644 index 84d1859235..0000000000 --- a/spec/bundler/support/artifice/compact_index_extra.rb +++ /dev/null @@ -1,37 +0,0 @@ -# frozen_string_literal: true - -require File.expand_path("../compact_index", __FILE__) - -Artifice.deactivate - -class CompactIndexExtra < CompactIndexAPI - get "/extra/versions" do - halt 404 - end - - get "/extra/api/v1/dependencies" do - halt 404 - end - - get "/extra/specs.4.8.gz" do - File.read("#{gem_repo2}/specs.4.8.gz") - end - - get "/extra/prerelease_specs.4.8.gz" do - File.read("#{gem_repo2}/prerelease_specs.4.8.gz") - end - - get "/extra/quick/Marshal.4.8/:id" do - redirect "/extra/fetch/actual/gem/#{params[:id]}" - end - - get "/extra/fetch/actual/gem/:id" do - File.read("#{gem_repo2}/quick/Marshal.4.8/#{params[:id]}") - end - - get "/extra/gems/:id" do - File.read("#{gem_repo2}/gems/#{params[:id]}") - end -end - -Artifice.activate_with(CompactIndexExtra) diff --git a/spec/bundler/support/artifice/compact_index_extra_api.rb b/spec/bundler/support/artifice/compact_index_extra_api.rb deleted file mode 100644 index 903aa900fb..0000000000 --- a/spec/bundler/support/artifice/compact_index_extra_api.rb +++ /dev/null @@ -1,52 +0,0 @@ -# frozen_string_literal: true - -require File.expand_path("../compact_index", __FILE__) - -Artifice.deactivate - -class CompactIndexExtraApi < CompactIndexAPI - get "/extra/names" do - etag_response do - CompactIndex.names(gems(gem_repo4).map(&:name)) - end - end - - get "/extra/versions" do - etag_response do - file = tmp("versions.list") - file.delete if file.file? - file = CompactIndex::VersionsFile.new(file.to_s) - file.create(gems(gem_repo4)) - file.contents - end - end - - get "/extra/info/:name" do - etag_response do - gem = gems(gem_repo4).find {|g| g.name == params[:name] } - CompactIndex.info(gem ? gem.versions : []) - end - end - - get "/extra/specs.4.8.gz" do - File.read("#{gem_repo4}/specs.4.8.gz") - end - - get "/extra/prerelease_specs.4.8.gz" do - File.read("#{gem_repo4}/prerelease_specs.4.8.gz") - end - - get "/extra/quick/Marshal.4.8/:id" do - redirect "/extra/fetch/actual/gem/#{params[:id]}" - end - - get "/extra/fetch/actual/gem/:id" do - File.read("#{gem_repo4}/quick/Marshal.4.8/#{params[:id]}") - end - - get "/extra/gems/:id" do - File.read("#{gem_repo4}/gems/#{params[:id]}") - end -end - -Artifice.activate_with(CompactIndexExtraApi) diff --git a/spec/bundler/support/artifice/compact_index_extra_api_missing.rb b/spec/bundler/support/artifice/compact_index_extra_api_missing.rb deleted file mode 100644 index e72040f604..0000000000 --- a/spec/bundler/support/artifice/compact_index_extra_api_missing.rb +++ /dev/null @@ -1,17 +0,0 @@ -# frozen_string_literal: true - -require File.expand_path("../compact_index_extra_api", __FILE__) - -Artifice.deactivate - -class CompactIndexExtraAPIMissing < CompactIndexExtraApi - get "/extra/fetch/actual/gem/:id" do - if params[:id] == "missing-1.0.gemspec.rz" - halt 404 - else - File.read("#{gem_repo2}/quick/Marshal.4.8/#{params[:id]}") - end - end -end - -Artifice.activate_with(CompactIndexExtraAPIMissing) diff --git a/spec/bundler/support/artifice/compact_index_extra_missing.rb b/spec/bundler/support/artifice/compact_index_extra_missing.rb deleted file mode 100644 index 67a9d23691..0000000000 --- a/spec/bundler/support/artifice/compact_index_extra_missing.rb +++ /dev/null @@ -1,17 +0,0 @@ -# frozen_string_literal: true - -require File.expand_path("../compact_index_extra", __FILE__) - -Artifice.deactivate - -class CompactIndexExtraMissing < CompactIndexExtra - get "/extra/fetch/actual/gem/:id" do - if params[:id] == "missing-1.0.gemspec.rz" - halt 404 - else - File.read("#{gem_repo2}/quick/Marshal.4.8/#{params[:id]}") - end - end -end - -Artifice.activate_with(CompactIndexExtraMissing) diff --git a/spec/bundler/support/artifice/compact_index_forbidden.rb b/spec/bundler/support/artifice/compact_index_forbidden.rb deleted file mode 100644 index 0a4dfdb2e8..0000000000 --- a/spec/bundler/support/artifice/compact_index_forbidden.rb +++ /dev/null @@ -1,13 +0,0 @@ -# frozen_string_literal: true - -require File.expand_path("../compact_index", __FILE__) - -Artifice.deactivate - -class CompactIndexForbidden < CompactIndexAPI - get "/versions" do - halt 403 - end -end - -Artifice.activate_with(CompactIndexForbidden) diff --git a/spec/bundler/support/artifice/compact_index_host_redirect.rb b/spec/bundler/support/artifice/compact_index_host_redirect.rb deleted file mode 100644 index ab371117de..0000000000 --- a/spec/bundler/support/artifice/compact_index_host_redirect.rb +++ /dev/null @@ -1,21 +0,0 @@ -# frozen_string_literal: true - -require File.expand_path("../compact_index", __FILE__) - -Artifice.deactivate - -class CompactIndexHostRedirect < CompactIndexAPI - get "/fetch/actual/gem/:id", :host_name => "localgemserver.test" do - redirect "http://bundler.localgemserver.test#{request.path_info}" - end - - get "/versions" do - status 404 - end - - get "/api/v1/dependencies" do - status 404 - end -end - -Artifice.activate_with(CompactIndexHostRedirect) diff --git a/spec/bundler/support/artifice/compact_index_no_gem.rb b/spec/bundler/support/artifice/compact_index_no_gem.rb deleted file mode 100644 index 01c5be1b3d..0000000000 --- a/spec/bundler/support/artifice/compact_index_no_gem.rb +++ /dev/null @@ -1,13 +0,0 @@ -# frozen_string_literal: true - -require File.expand_path("../compact_index", __FILE__) - -Artifice.deactivate - -class CompactIndexNoGem < CompactIndexAPI - get "/gems/:id" do - halt 500 - end -end - -Artifice.activate_with(CompactIndexNoGem) diff --git a/spec/bundler/support/artifice/compact_index_partial_update.rb b/spec/bundler/support/artifice/compact_index_partial_update.rb deleted file mode 100644 index eaedff5105..0000000000 --- a/spec/bundler/support/artifice/compact_index_partial_update.rb +++ /dev/null @@ -1,38 +0,0 @@ -# frozen_string_literal: true - -require File.expand_path("../compact_index", __FILE__) - -Artifice.deactivate - -class CompactIndexPartialUpdate < CompactIndexAPI - # Stub the server to never return 304s. This simulates the behaviour of - # Fastly / Rubygems ignoring ETag headers. - def not_modified?(_checksum) - false - end - - get "/versions" do - cached_versions_path = File.join( - Bundler.rubygems.user_home, ".bundle", "cache", "compact_index", - "localgemserver.test.80.dd34752a738ee965a2a4298dc16db6c5", "versions" - ) - - # Verify a cached copy of the versions file exists - unless File.read(cached_versions_path).start_with?("created_at: ") - raise("Cached versions file should be present and have content") - end - - # Verify that a partial request is made, starting from the index of the - # final byte of the cached file. - unless env["HTTP_RANGE"] == "bytes=#{File.read(cached_versions_path).bytesize - 1}-" - raise("Range header should be present, and start from the index of the final byte of the cache.") - end - - etag_response do - # Return the exact contents of the cache. - File.read(cached_versions_path) - end - end -end - -Artifice.activate_with(CompactIndexPartialUpdate) diff --git a/spec/bundler/support/artifice/compact_index_redirects.rb b/spec/bundler/support/artifice/compact_index_redirects.rb deleted file mode 100644 index e83451b5b6..0000000000 --- a/spec/bundler/support/artifice/compact_index_redirects.rb +++ /dev/null @@ -1,21 +0,0 @@ -# frozen_string_literal: true - -require File.expand_path("../compact_index", __FILE__) - -Artifice.deactivate - -class CompactIndexRedirect < CompactIndexAPI - get "/fetch/actual/gem/:id" do - redirect "/fetch/actual/gem/#{params[:id]}" - end - - get "/versions" do - status 404 - end - - get "/api/v1/dependencies" do - status 404 - end -end - -Artifice.activate_with(CompactIndexRedirect) diff --git a/spec/bundler/support/artifice/compact_index_strict_basic_authentication.rb b/spec/bundler/support/artifice/compact_index_strict_basic_authentication.rb deleted file mode 100644 index abbf3258e7..0000000000 --- a/spec/bundler/support/artifice/compact_index_strict_basic_authentication.rb +++ /dev/null @@ -1,20 +0,0 @@ -# frozen_string_literal: true - -require File.expand_path("../compact_index", __FILE__) - -Artifice.deactivate - -class CompactIndexStrictBasicAuthentication < CompactIndexAPI - before do - unless env["HTTP_AUTHORIZATION"] - halt 401, "Authentication info not supplied" - end - - # Only accepts password == "password" - unless env["HTTP_AUTHORIZATION"] == "Basic dXNlcjpwYXNz" - halt 403, "Authentication failed" - end - end -end - -Artifice.activate_with(CompactIndexStrictBasicAuthentication) diff --git a/spec/bundler/support/artifice/compact_index_wrong_dependencies.rb b/spec/bundler/support/artifice/compact_index_wrong_dependencies.rb deleted file mode 100644 index 7e1d3686e2..0000000000 --- a/spec/bundler/support/artifice/compact_index_wrong_dependencies.rb +++ /dev/null @@ -1,17 +0,0 @@ -# frozen_string_literal: true - -require File.expand_path("../compact_index", __FILE__) - -Artifice.deactivate - -class CompactIndexWrongDependencies < CompactIndexAPI - get "/info/:name" do - etag_response do - gem = gems.find {|g| g.name == params[:name] } - gem.versions.each {|gv| gv.dependencies.clear } if gem - CompactIndex.info(gem ? gem.versions : []) - end - end -end - -Artifice.activate_with(CompactIndexWrongDependencies) diff --git a/spec/bundler/support/artifice/compact_index_wrong_gem_checksum.rb b/spec/bundler/support/artifice/compact_index_wrong_gem_checksum.rb deleted file mode 100644 index db4d8e3974..0000000000 --- a/spec/bundler/support/artifice/compact_index_wrong_gem_checksum.rb +++ /dev/null @@ -1,20 +0,0 @@ -# frozen_string_literal: true - -require File.expand_path("../compact_index", __FILE__) - -Artifice.deactivate - -class CompactIndexWrongGemChecksum < CompactIndexAPI - get "/info/:name" do - etag_response do - name = params[:name] - gem = gems.find {|g| g.name == name } - checksum = ENV.fetch("BUNDLER_SPEC_#{name.upcase}_CHECKSUM") { "ab" * 22 } - versions = gem ? gem.versions : [] - versions.each {|v| v.checksum = checksum } - CompactIndex.info(versions) - end - end -end - -Artifice.activate_with(CompactIndexWrongGemChecksum) diff --git a/spec/bundler/support/artifice/endopint_marshal_fail_basic_authentication.rb b/spec/bundler/support/artifice/endopint_marshal_fail_basic_authentication.rb deleted file mode 100644 index 12a6fa153f..0000000000 --- a/spec/bundler/support/artifice/endopint_marshal_fail_basic_authentication.rb +++ /dev/null @@ -1,15 +0,0 @@ -# frozen_string_literal: true - -require File.expand_path("../endpoint_marshal_fail", __FILE__) - -Artifice.deactivate - -class EndpointMarshalFailBasicAuthentication < EndpointMarshalFail - before do - unless env["HTTP_AUTHORIZATION"] - halt 401, "Authentication info not supplied" - end - end -end - -Artifice.activate_with(EndpointMarshalFailBasicAuthentication) diff --git a/spec/bundler/support/artifice/endpoint.rb b/spec/bundler/support/artifice/endpoint.rb deleted file mode 100644 index 9afecff8e6..0000000000 --- a/spec/bundler/support/artifice/endpoint.rb +++ /dev/null @@ -1,100 +0,0 @@ -# frozen_string_literal: true - -require File.expand_path("../../path.rb", __FILE__) -require Spec::Path.root.join("lib/bundler/deprecate") -include Spec::Path - -$LOAD_PATH.unshift(*Dir[Spec::Path.base_system_gems.join("gems/{artifice,rack,tilt,sinatra}-*/lib")].map(&:to_s)) -require "artifice" -require "sinatra/base" - -ALL_REQUESTS = [] # rubocop:disable Style/MutableConstant -ALL_REQUESTS_MUTEX = Mutex.new - -at_exit do - if expected = ENV["BUNDLER_SPEC_ALL_REQUESTS"] - expected = expected.split("\n").sort - actual = ALL_REQUESTS.sort - - unless expected == actual - raise "Unexpected requests!\nExpected:\n\t#{expected.join("\n\t")}\n\nActual:\n\t#{actual.join("\n\t")}" - end - end -end - -class Endpoint < Sinatra::Base - def self.all_requests - @all_requests ||= [] - end - - GEM_REPO = Pathname.new(ENV["BUNDLER_SPEC_GEM_REPO"] || Spec::Path.gem_repo1) - set :raise_errors, true - set :show_exceptions, false - - def call!(*) - super.tap do - ALL_REQUESTS_MUTEX.synchronize do - ALL_REQUESTS << @request.url - end - end - end - - helpers do - def dependencies_for(gem_names, gem_repo = GEM_REPO) - return [] if gem_names.nil? || gem_names.empty? - - require "rubygems" - require "bundler" - Bundler::Deprecate.skip_during do - all_specs = %w[specs.4.8 prerelease_specs.4.8].map do |filename| - Marshal.load(File.open(gem_repo.join(filename)).read) - end.inject(:+) - - all_specs.map do |name, version, platform| - spec = load_spec(name, version, platform, gem_repo) - next unless gem_names.include?(spec.name) - { - :name => spec.name, - :number => spec.version.version, - :platform => spec.platform.to_s, - :dependencies => spec.dependencies.select {|dep| dep.type == :runtime }.map do |dep| - [dep.name, dep.requirement.requirements.map {|a| a.join(" ") }.join(", ")] - end - } - end.compact - end - end - - def load_spec(name, version, platform, gem_repo) - full_name = "#{name}-#{version}" - full_name += "-#{platform}" if platform != "ruby" - Marshal.load(Gem.inflate(File.open(gem_repo.join("quick/Marshal.4.8/#{full_name}.gemspec.rz")).read)) - end - end - - get "/quick/Marshal.4.8/:id" do - redirect "/fetch/actual/gem/#{params[:id]}" - end - - get "/fetch/actual/gem/:id" do - File.read("#{GEM_REPO}/quick/Marshal.4.8/#{params[:id]}") - end - - get "/gems/:id" do - File.read("#{GEM_REPO}/gems/#{params[:id]}") - end - - get "/api/v1/dependencies" do - Marshal.dump(dependencies_for(params[:gems])) - end - - get "/specs.4.8.gz" do - File.read("#{GEM_REPO}/specs.4.8.gz") - end - - get "/prerelease_specs.4.8.gz" do - File.read("#{GEM_REPO}/prerelease_specs.4.8.gz") - end -end - -Artifice.activate_with(Endpoint) diff --git a/spec/bundler/support/artifice/endpoint_500.rb b/spec/bundler/support/artifice/endpoint_500.rb deleted file mode 100644 index 202ccfc829..0000000000 --- a/spec/bundler/support/artifice/endpoint_500.rb +++ /dev/null @@ -1,19 +0,0 @@ -# frozen_string_literal: true - -require File.expand_path("../../path.rb", __FILE__) -include Spec::Path - -$LOAD_PATH.unshift(*Dir[Spec::Path.base_system_gems.join("gems/{artifice,rack,tilt,sinatra}-*/lib")].map(&:to_s)) - -require "artifice" -require "sinatra/base" - -Artifice.deactivate - -class Endpoint500 < Sinatra::Base - before do - halt 500 - end -end - -Artifice.activate_with(Endpoint500) diff --git a/spec/bundler/support/artifice/endpoint_api_forbidden.rb b/spec/bundler/support/artifice/endpoint_api_forbidden.rb deleted file mode 100644 index bb89747adc..0000000000 --- a/spec/bundler/support/artifice/endpoint_api_forbidden.rb +++ /dev/null @@ -1,13 +0,0 @@ -# frozen_string_literal: true - -require File.expand_path("../endpoint", __FILE__) - -Artifice.deactivate - -class EndpointApiForbidden < Endpoint - get "/api/v1/dependencies" do - halt 403 - end -end - -Artifice.activate_with(EndpointApiForbidden) diff --git a/spec/bundler/support/artifice/endpoint_api_missing.rb b/spec/bundler/support/artifice/endpoint_api_missing.rb deleted file mode 100644 index 95db8e2a7e..0000000000 --- a/spec/bundler/support/artifice/endpoint_api_missing.rb +++ /dev/null @@ -1,18 +0,0 @@ -# frozen_string_literal: true - -require File.expand_path("../endpoint", __FILE__) - -Artifice.deactivate - -class EndpointApiMissing < Endpoint - get "/fetch/actual/gem/:id" do - $stderr.puts params[:id] - if params[:id] == "rack-1.0.gemspec.rz" - halt 404 - else - File.read("#{gem_repo2}/quick/Marshal.4.8/#{params[:id]}") - end - end -end - -Artifice.activate_with(EndpointApiMissing) diff --git a/spec/bundler/support/artifice/endpoint_basic_authentication.rb b/spec/bundler/support/artifice/endpoint_basic_authentication.rb deleted file mode 100644 index 223671bc29..0000000000 --- a/spec/bundler/support/artifice/endpoint_basic_authentication.rb +++ /dev/null @@ -1,15 +0,0 @@ -# frozen_string_literal: true - -require File.expand_path("../endpoint", __FILE__) - -Artifice.deactivate - -class EndpointBasicAuthentication < Endpoint - before do - unless env["HTTP_AUTHORIZATION"] - halt 401, "Authentication info not supplied" - end - end -end - -Artifice.activate_with(EndpointBasicAuthentication) diff --git a/spec/bundler/support/artifice/endpoint_creds_diff_host.rb b/spec/bundler/support/artifice/endpoint_creds_diff_host.rb deleted file mode 100644 index 925954b12d..0000000000 --- a/spec/bundler/support/artifice/endpoint_creds_diff_host.rb +++ /dev/null @@ -1,39 +0,0 @@ -# frozen_string_literal: true - -require File.expand_path("../endpoint", __FILE__) - -Artifice.deactivate - -class EndpointCredsDiffHost < Endpoint - helpers do - def auth - @auth ||= Rack::Auth::Basic::Request.new(request.env) - end - - def authorized? - auth.provided? && auth.basic? && auth.credentials && auth.credentials == %w[user pass] - end - - def protected! - return if authorized? - response["WWW-Authenticate"] = %(Basic realm="Testing HTTP Auth") - throw(:halt, [401, "Not authorized\n"]) - end - end - - before do - protected! unless request.path_info.include?("/no/creds/") - end - - get "/gems/:id" do - redirect "http://diffhost.com/no/creds/#{params[:id]}" - end - - get "/no/creds/:id" do - if request.host.include?("diffhost") && !auth.provided? - File.read("#{gem_repo1}/gems/#{params[:id]}") - end - end -end - -Artifice.activate_with(EndpointCredsDiffHost) diff --git a/spec/bundler/support/artifice/endpoint_extra.rb b/spec/bundler/support/artifice/endpoint_extra.rb deleted file mode 100644 index 422f65401b..0000000000 --- a/spec/bundler/support/artifice/endpoint_extra.rb +++ /dev/null @@ -1,33 +0,0 @@ -# frozen_string_literal: true - -require File.expand_path("../endpoint", __FILE__) - -Artifice.deactivate - -class EndpointExtra < Endpoint - get "/extra/api/v1/dependencies" do - halt 404 - end - - get "/extra/specs.4.8.gz" do - File.read("#{gem_repo2}/specs.4.8.gz") - end - - get "/extra/prerelease_specs.4.8.gz" do - File.read("#{gem_repo2}/prerelease_specs.4.8.gz") - end - - get "/extra/quick/Marshal.4.8/:id" do - redirect "/extra/fetch/actual/gem/#{params[:id]}" - end - - get "/extra/fetch/actual/gem/:id" do - File.read("#{gem_repo2}/quick/Marshal.4.8/#{params[:id]}") - end - - get "/extra/gems/:id" do - File.read("#{gem_repo2}/gems/#{params[:id]}") - end -end - -Artifice.activate_with(EndpointExtra) diff --git a/spec/bundler/support/artifice/endpoint_extra_api.rb b/spec/bundler/support/artifice/endpoint_extra_api.rb deleted file mode 100644 index 62e2c2bb93..0000000000 --- a/spec/bundler/support/artifice/endpoint_extra_api.rb +++ /dev/null @@ -1,34 +0,0 @@ -# frozen_string_literal: true - -require File.expand_path("../endpoint", __FILE__) - -Artifice.deactivate - -class EndpointExtraApi < Endpoint - get "/extra/api/v1/dependencies" do - deps = dependencies_for(params[:gems], gem_repo4) - Marshal.dump(deps) - end - - get "/extra/specs.4.8.gz" do - File.read("#{gem_repo4}/specs.4.8.gz") - end - - get "/extra/prerelease_specs.4.8.gz" do - File.read("#{gem_repo4}/prerelease_specs.4.8.gz") - end - - get "/extra/quick/Marshal.4.8/:id" do - redirect "/extra/fetch/actual/gem/#{params[:id]}" - end - - get "/extra/fetch/actual/gem/:id" do - File.read("#{gem_repo4}/quick/Marshal.4.8/#{params[:id]}") - end - - get "/extra/gems/:id" do - File.read("#{gem_repo4}/gems/#{params[:id]}") - end -end - -Artifice.activate_with(EndpointExtraApi) diff --git a/spec/bundler/support/artifice/endpoint_extra_missing.rb b/spec/bundler/support/artifice/endpoint_extra_missing.rb deleted file mode 100644 index 038a12610a..0000000000 --- a/spec/bundler/support/artifice/endpoint_extra_missing.rb +++ /dev/null @@ -1,17 +0,0 @@ -# frozen_string_literal: true - -require File.expand_path("../endpoint_extra", __FILE__) - -Artifice.deactivate - -class EndpointExtraMissing < EndpointExtra - get "/extra/fetch/actual/gem/:id" do - if params[:id] == "missing-1.0.gemspec.rz" - halt 404 - else - File.read("#{gem_repo2}/quick/Marshal.4.8/#{params[:id]}") - end - end -end - -Artifice.activate_with(EndpointExtraMissing) diff --git a/spec/bundler/support/artifice/endpoint_fallback.rb b/spec/bundler/support/artifice/endpoint_fallback.rb deleted file mode 100644 index 554c08f0a2..0000000000 --- a/spec/bundler/support/artifice/endpoint_fallback.rb +++ /dev/null @@ -1,19 +0,0 @@ -# frozen_string_literal: true - -require File.expand_path("../endpoint", __FILE__) - -Artifice.deactivate - -class EndpointFallback < Endpoint - DEPENDENCY_LIMIT = 60 - - get "/api/v1/dependencies" do - if params[:gems] && params[:gems].size <= DEPENDENCY_LIMIT - Marshal.dump(dependencies_for(params[:gems])) - else - halt 413, "Too many gems to resolve, please request less than #{DEPENDENCY_LIMIT} gems" - end - end -end - -Artifice.activate_with(EndpointFallback) diff --git a/spec/bundler/support/artifice/endpoint_host_redirect.rb b/spec/bundler/support/artifice/endpoint_host_redirect.rb deleted file mode 100644 index cda5664be2..0000000000 --- a/spec/bundler/support/artifice/endpoint_host_redirect.rb +++ /dev/null @@ -1,17 +0,0 @@ -# frozen_string_literal: true - -require File.expand_path("../endpoint", __FILE__) - -Artifice.deactivate - -class EndpointHostRedirect < Endpoint - get "/fetch/actual/gem/:id", :host_name => "localgemserver.test" do - redirect "http://bundler.localgemserver.test#{request.path_info}" - end - - get "/api/v1/dependencies" do - status 404 - end -end - -Artifice.activate_with(EndpointHostRedirect) diff --git a/spec/bundler/support/artifice/endpoint_marshal_fail.rb b/spec/bundler/support/artifice/endpoint_marshal_fail.rb deleted file mode 100644 index 2a5dcdc2fd..0000000000 --- a/spec/bundler/support/artifice/endpoint_marshal_fail.rb +++ /dev/null @@ -1,13 +0,0 @@ -# frozen_string_literal: true - -require File.expand_path("../endpoint_fallback", __FILE__) - -Artifice.deactivate - -class EndpointMarshalFail < EndpointFallback - get "/api/v1/dependencies" do - "f0283y01hasf" - end -end - -Artifice.activate_with(EndpointMarshalFail) diff --git a/spec/bundler/support/artifice/endpoint_mirror_source.rb b/spec/bundler/support/artifice/endpoint_mirror_source.rb deleted file mode 100644 index 64452f198d..0000000000 --- a/spec/bundler/support/artifice/endpoint_mirror_source.rb +++ /dev/null @@ -1,15 +0,0 @@ -# frozen_string_literal: true - -require File.expand_path("../endpoint", __FILE__) - -class EndpointMirrorSource < Endpoint - get "/gems/:id" do - if request.env["HTTP_X_GEMFILE_SOURCE"] == "https://server.example.org/" - File.read("#{gem_repo1}/gems/#{params[:id]}") - else - halt 500 - end - end -end - -Artifice.activate_with(EndpointMirrorSource) diff --git a/spec/bundler/support/artifice/endpoint_redirect.rb b/spec/bundler/support/artifice/endpoint_redirect.rb deleted file mode 100644 index ebf01458ba..0000000000 --- a/spec/bundler/support/artifice/endpoint_redirect.rb +++ /dev/null @@ -1,17 +0,0 @@ -# frozen_string_literal: true - -require File.expand_path("../endpoint", __FILE__) - -Artifice.deactivate - -class EndpointRedirect < Endpoint - get "/fetch/actual/gem/:id" do - redirect "/fetch/actual/gem/#{params[:id]}" - end - - get "/api/v1/dependencies" do - status 404 - end -end - -Artifice.activate_with(EndpointRedirect) diff --git a/spec/bundler/support/artifice/endpoint_strict_basic_authentication.rb b/spec/bundler/support/artifice/endpoint_strict_basic_authentication.rb deleted file mode 100644 index 905a519f3f..0000000000 --- a/spec/bundler/support/artifice/endpoint_strict_basic_authentication.rb +++ /dev/null @@ -1,20 +0,0 @@ -# frozen_string_literal: true - -require File.expand_path("../endpoint", __FILE__) - -Artifice.deactivate - -class EndpointStrictBasicAuthentication < Endpoint - before do - unless env["HTTP_AUTHORIZATION"] - halt 401, "Authentication info not supplied" - end - - # Only accepts password == "password" - unless env["HTTP_AUTHORIZATION"] == "Basic dXNlcjpwYXNz" - halt 403, "Authentication failed" - end - end -end - -Artifice.activate_with(EndpointStrictBasicAuthentication) diff --git a/spec/bundler/support/artifice/endpoint_timeout.rb b/spec/bundler/support/artifice/endpoint_timeout.rb deleted file mode 100644 index 3f60471c90..0000000000 --- a/spec/bundler/support/artifice/endpoint_timeout.rb +++ /dev/null @@ -1,15 +0,0 @@ -# frozen_string_literal: true - -require File.expand_path("../endpoint_fallback", __FILE__) - -Artifice.deactivate - -class EndpointTimeout < EndpointFallback - SLEEP_TIMEOUT = 3 - - get "/api/v1/dependencies" do - sleep(SLEEP_TIMEOUT) - end -end - -Artifice.activate_with(EndpointTimeout) diff --git a/spec/bundler/support/artifice/fail.rb b/spec/bundler/support/artifice/fail.rb deleted file mode 100644 index 1059c6df4e..0000000000 --- a/spec/bundler/support/artifice/fail.rb +++ /dev/null @@ -1,39 +0,0 @@ -# frozen_string_literal: true - -require "net/http" -begin - require "net/https" -rescue LoadError - nil # net/https or openssl -end - -# We can't use artifice here because it uses rack - -module Artifice; end # for < 2.0, Net::HTTP::Persistent::SSLReuse - -class Fail < Net::HTTP - # Net::HTTP uses a @newimpl instance variable to decide whether - # to use a legacy implementation. Since we are subclassing - # Net::HTTP, we must set it - @newimpl = true - - def request(req, body = nil, &block) - raise(exception(req)) - end - - # Ensure we don't start a connect here - def connect - end - - def exception(req) - name = ENV.fetch("BUNDLER_SPEC_EXCEPTION") { "Errno::ENETUNREACH" } - const = name.split("::").reduce(Object) {|mod, sym| mod.const_get(sym) } - const.new("host down: Bundler spec artifice fail! #{req["PATH_INFO"]}") - end -end - -# Replace Net::HTTP with our failing subclass -::Net.class_eval do - remove_const(:HTTP) - const_set(:HTTP, ::Fail) -end diff --git a/spec/bundler/support/artifice/vcr.rb b/spec/bundler/support/artifice/vcr.rb deleted file mode 100644 index edd2f49a91..0000000000 --- a/spec/bundler/support/artifice/vcr.rb +++ /dev/null @@ -1,158 +0,0 @@ -# frozen_string_literal: true - -require "net/http" -if RUBY_VERSION < "1.9" - begin - require "net/https" - rescue LoadError - nil # net/https or openssl - end -end # but only for 1.8 - -CASSETTE_PATH = File.expand_path("../vcr_cassettes", __FILE__) -CASSETTE_NAME = ENV.fetch("BUNDLER_SPEC_VCR_CASSETTE_NAME") { "realworld" } - -class BundlerVCRHTTP < Net::HTTP - class RequestHandler - attr_reader :http, :request, :body, :response_block - def initialize(http, request, body = nil, &response_block) - @http = http - @request = request - @body = body - @response_block = response_block - end - - def handle_request - handler = self - request.instance_eval do - @__vcr_request_handler = handler - end - - if recorded_response? - recorded_response - else - record_response - end - end - - def recorded_response? - return true if ENV["BUNDLER_SPEC_PRE_RECORDED"] - return false if ENV["BUNDLER_SPEC_FORCE_RECORD"] - request_pair_paths.all? {|f| File.exist?(f) } - end - - def recorded_response - File.open(request_pair_paths.last, "rb:ASCII-8BIT") do |response_file| - response_io = ::Net::BufferedIO.new(response_file) - ::Net::HTTPResponse.read_new(response_io).tap do |response| - response.decode_content = request.decode_content if request.respond_to?(:decode_content) - response.uri = request.uri if request.respond_to?(:uri) - - response.reading_body(response_io, request.response_body_permitted?) do - response_block.call(response) if response_block - end - end - end - end - - def record_response - request_path, response_path = *request_pair_paths - - @recording = true - - response = http.request_without_vcr(request, body, &response_block) - @recording = false - unless @recording - FileUtils.mkdir_p(File.dirname(request_path)) - binwrite(request_path, request_to_string(request)) - binwrite(response_path, response_to_string(response)) - end - response - end - - def key - [request["host"] || http.address, request.path, request.method].compact - end - - def file_name_for_key(key) - key.join("/").gsub(/[\:*?"<>|]/, "-") - end - - def request_pair_paths - %w[request response].map do |kind| - File.join(CASSETTE_PATH, CASSETTE_NAME, file_name_for_key(key + [kind])) - end - end - - def read_stored_request(path) - contents = File.read(path) - headers = {} - method = nil - path = nil - contents.lines.grep(/^> /).each do |line| - if line =~ /^> (GET|HEAD|POST|PATCH|PUT|DELETE) (.*)/ - method = $1 - path = $2.strip - elsif line =~ /^> (.*?): (.*)/ - headers[$1] = $2 - end - end - body = contents =~ /^([^>].*)/m && $1 - Net::HTTP.const_get(method.capitalize).new(path, headers).tap {|r| r.body = body if body } - end - - def request_to_string(request) - request_string = [] - request_string << "> #{request.method.upcase} #{request.path}" - request.to_hash.each do |key, value| - request_string << "> #{key}: #{Array(value).first}" - end - request << "" << request.body if request.body - request_string.join("\n") - end - - def response_to_string(response) - headers = response.to_hash - body = response.body - - response_string = [] - response_string << "HTTP/1.1 #{response.code} #{response.message}" - - headers["content-length"] = [body.bytesize.to_s] if body - - headers.each do |header, value| - response_string << "#{header}: #{value.join(", ")}" - end - - response_string << "" << body - - response_string = response_string.join("\n") - if response_string.respond_to?(:force_encoding) - response_string.force_encoding("ASCII-8BIT") - else - response_string - end - end - - def binwrite(path, contents) - File.open(path, "wb:ASCII-8BIT") {|f| f.write(contents) } - end - end - - def request_with_vcr(request, *args, &block) - handler = request.instance_eval do - remove_instance_variable(:@__vcr_request_handler) if defined?(@__vcr_request_handler) - end || RequestHandler.new(self, request, *args, &block) - - handler.handle_request - end - - alias_method :request_without_vcr, :request - alias_method :request, :request_with_vcr -end - -# Replace Net::HTTP with our VCR subclass -::Net.class_eval do - remove_const(:HTTP) - const_set(:HTTP, BundlerVCRHTTP) -end diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/api.rubygems.org/api/v1/dependencies-gems=bundler/GET/request b/spec/bundler/support/artifice/vcr_cassettes/realworld/api.rubygems.org/api/v1/dependencies-gems=bundler/GET/request deleted file mode 100644 index 9674ffcd5f..0000000000 --- a/spec/bundler/support/artifice/vcr_cassettes/realworld/api.rubygems.org/api/v1/dependencies-gems=bundler/GET/request +++ /dev/null @@ -1,7 +0,0 @@ -> GET /api/v1/dependencies?gems=bundler -> accept-encoding: gzip;q=1.0,deflate;q=0.6,identity;q=0.3 -> accept: */* -> user-agent: Ruby -> connection: keep-alive -> keep-alive: 30 -> host: api.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/api.rubygems.org/api/v1/dependencies-gems=bundler/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/api.rubygems.org/api/v1/dependencies-gems=bundler/GET/response deleted file mode 100644 index f553bc73448376ad5d157239018e44032bf676c5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13565 zcmbVS%Wm6N5N(0Njg?o^FCe_h#-#a@_z=AC!cK%XO<^0^WKmpER}vA4WJ$`gn(ywu zXD&rq1=1qNK!G9>M>BKg%$d2DetUcS`mhZaO`(FlGS+u%n?RHz~)N1v8dseMf zUW~15sp>|z=bLtJ$Af!&UaPgX%c{-GqDifri+7jruP1LNzu~+4rm?HKY;`8zrj|Fh z*5yo}PgiC33Ev-jdH9KIq7-^bACY*Xj$)~?D`o^4ZWrsrz2YVD@Ztk;cR&0mkL zCad%6@FQ#4wpEj!of&iOEYxP<=mt-=+m$}B-9I=-&W*Du%f(8oDsP;uT#v1Mz4+S0 z|NhneZ!Btcr&?8u?f%35*@N%KmU#Qx5AULATGi%R7Xn}^0HJw$pH*OQ8vCaz*?tlmtw3%zda*=AieXK-aoBxv>4i{-Q}%+rHRWlL=;QJ1UKTC00oE%bTd zo?6vr3cyjPTK~BbPx&mhGVN*=#GyUXBi{})H?!kt7TI3t`&p=_k@kfa^`>a^HMrwC zt{a8J1fOjb{H!Y^HeKPH$>sUwY@tuHWnHfIxrZmFD*L1hc)9xHTIH+88itM+j~vg% z|A%Q9276Ylbg^ic;FLcc`2&?@8s)E5vCv@Qbld7?FjFnuT-Euh<;T`VRfFALWVuP| z`>7vTZ{FPw?sA3S0P*isUF6MjfaLK(5{n~2-4OSa)|IVR`JG0Pjjr$X%$|aY9eBXk z^TWWty1u~I=Cjm#JGt%uVK4I*LHYQ%U{a$?yf6uZ$P2>IN!(E!MyDTc+|v)2?f`M% zhcCK(E{m+3<;CLkN;U0jYv0`bI?%0Jq}GWa1X`;&@*{vVio$3<50p2H@If?mXYR?s z#0h8D;KLj6!71y-VDQ6}kKh0Oq2}{20u}KTb{to)bB~JU@PN zU_3tl9|PYB7z5WyoP;s(oS@6=8$%K#0>>p>z`_Mv35%a3DA%cKO@%g)PP1A))DfJNkZj0MQWWe=1+AKBL#MX>`j2J4reBT&N`la#Ox{}E6ha3?0r z#8KcdBozyv;wR_^^>?OFEQ+S6?1&2OIYJYpSpX0n0hx4<@JHH|sVUO&sQkOyFeET8 zn3%v$&m`h82!Lxn08Dfpa~MYmPnd&}G7JR@L#lUR5K|r`laQ+AiymmEI>33fBN~IV z5LAF;3EJ_E2~a%sgM^8&Z&b5beB%HX1UoViy(*$DBNYr{;sX*1yb+EJg(A*?+gK12 z)(O%@Kq(Z;xfg0uLou`&fB{$X2$^R1B5Vd=TuEZ8sgVV@55d57$Py-03A-LC#}O$2Weq)G0P=7v}-mJ3%DUw7M{A@oT-!P1(I+HrL=&0za%g> zF8g%I)3Z1uPtOpR^zp3jU;CmKv`fH7B07$nr`1T^dSD5m&O&E1tK!vI8w ziV`Rrjxlj{9Ag^B#KcswuRIkN>d3vTKv*#)eJEsq(Zocy*FUn338k_o8%F(Lz#Tkb z5Kw9agCPa5bgxV8^$?@|Ei(x(EQvPhM4u_UdEZ0{qzgV$(k0r>gw%~lrgeq8^pc47 z#j;GFv}0=9L1f~DyOKc_al&8#0Eb7Eo(d!T<2h3sIEtw8*yY0TMM8VbBm&eppUXQV zqG3!v%wA!TCIu{^uFHOwJa%u`9Fc{fGQMkK2Nh4qf z*N8Icw*y9752?@OkCDH-lAuB~)X#U+Hi7*1(51mHX0k`20i zi5Pk!ncUl~4l(AI2Wq){L%`sS2{WRO<1mP*(-OqL*A`}09+)xhe_+Nmrx~=29~f|} z`~#sGH(1TOS6@s`ADBROfhZbNA*et1@An7`C>m{2rv6O zGQ~HoM$4bsODOJ3LL_9|sk|E)423}z#Kc$tteDcJhc00z844+X$iN-^&7MTf3$tA? Q7I48G6JZej#|#_%0}3WH*Z=?k diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/api.rubygems.org/api/v1/dependencies/HEAD/request b/spec/bundler/support/artifice/vcr_cassettes/realworld/api.rubygems.org/api/v1/dependencies/HEAD/request deleted file mode 100644 index b085ff635f..0000000000 --- a/spec/bundler/support/artifice/vcr_cassettes/realworld/api.rubygems.org/api/v1/dependencies/HEAD/request +++ /dev/null @@ -1,6 +0,0 @@ -> HEAD /api/v1/dependencies -> accept: */* -> user-agent: Ruby -> connection: keep-alive -> keep-alive: 30 -> host: api.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/api.rubygems.org/api/v1/dependencies/HEAD/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/api.rubygems.org/api/v1/dependencies/HEAD/response deleted file mode 100644 index fa6cc543da..0000000000 --- a/spec/bundler/support/artifice/vcr_cassettes/realworld/api.rubygems.org/api/v1/dependencies/HEAD/response +++ /dev/null @@ -1,24 +0,0 @@ -HTTP/1.1 200 OK -content-type: text/plain; charset=utf-8 -x-frame-options: SAMEORIGIN -x-xss-protection: 1; mode=block -x-content-type-options: nosniff -content-security-policy: default-src 'self'; script-src 'self' https://secure.gaug.es; style-src 'self' https://fonts.googleapis.com; img-src 'self' https://secure.gaug.es https://gravatar.com https://secure.gravatar.com; font-src 'self' https://fonts.gstatic.com; connect-src https://s3-us-west-2.amazonaws.com/rubygems-dumps/; frame-src https://ghbtns.com -cache-control: no-cache -x-request-id: a7d87e66-6bb3-4b7a-9d3a-89ee68784d0e -x-runtime: 0.003648 -x-ua-compatible: IE=Edge,chrome=1 -x-backend: F_Rails 54.186.104.15:443 -content-length: 0 -accept-ranges: bytes -date: Fri, 28 Apr 2017 09:22:23 GMT -via: 1.1 varnish -age: 3103 -connection: keep-alive -x-served-by: cache-fra1243-FRA -x-cache: HIT -x-cache-hits: 107 -x-timer: S1493371344.878545,VS0,VE0 -vary: Accept-Encoding,Fastly-SSL -server: RubyGems.org - diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/api.rubygems.org/gems/bundler-1.12.3.gem/GET/request b/spec/bundler/support/artifice/vcr_cassettes/realworld/api.rubygems.org/gems/bundler-1.12.3.gem/GET/request deleted file mode 100644 index 4402e11851..0000000000 --- a/spec/bundler/support/artifice/vcr_cassettes/realworld/api.rubygems.org/gems/bundler-1.12.3.gem/GET/request +++ /dev/null @@ -1,7 +0,0 @@ -> GET /gems/bundler-1.12.3.gem -> accept-encoding: gzip;q=1.0,deflate;q=0.6,identity;q=0.3 -> accept: */* -> user-agent: Ruby -> connection: keep-alive -> keep-alive: 30 -> host: api.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/api.rubygems.org/gems/bundler-1.12.3.gem/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/api.rubygems.org/gems/bundler-1.12.3.gem/GET/response deleted file mode 100644 index d2f8c67fc9ff93fc36c3c22eecc15dab2e4c1552..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 280896 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

cWr=+W_*w|gM&cZ53A^#spjd7mvW-ug4wAqT zA-K4@6pG-i>modU8!jCV^s>SRb=LLKxEzUX*>8*$)bmpMK->}C;&ceyq=%L0 zmuc06u_aA(zx4>az3NKt3-DgAo zYnsmg4f&tMW!4=bBlcPIzpdZ>?w*(b?ZH?4|1UTHr()QBAJMMn%iD<6zZ8OWCKlg? z{3Pkc7#bdRIech678jU6R28(-KmDEmPqpL>g0A(@b|IK3eN`Ha@M;8T6d5 zq!bgjcrU+RQFG3Jr8)SF`CsmQckeql|MP=&@#yRM|K;R=QBG%Ujl_O-mo~%&8^+gMAEL!mH+=4pYV|a@GE?(DE2oJ2W!up3+*!a*2cbh6; z`I(jNb$YSw$89g!vrEZmLuD^ScX~jFQWfa-x`BfVtg{RE)9HMfFWt==0 z%|(S=BB+Oq!G0a(q181~YIVahh#GZR+>2$-R*e-$hp9B3)X%F{Ev?nkkkdpnNN~-^bD`BRErDx8w_& zjKd?eNhSSUiGbbLHilyOyZP;a0XlCngvl&7I|CKZJ#^^LaM0As^eBAe9gdEI zb}*+q#=P$8YAE1LW)uFlv_k7V05ZNq5IhyCUo4N@t-{}%sk8>53T}xpc3{AYb}Dv?wan$cEF;)?z|PIkqvAzjyC`)&G3S`hU4l>J_Zs6!jSi*MVu`x$(o!w$XyKNlhZK3VX` z(vmeAJm@2IB11!RJCc-na&;=x7w2wU9N4Q*b`Bo1n{!uU=JAj~h4Cn^w_;ol@mz|2 zyo%%mwH4kec^z?#K8e6*fSpJ&DGxeyKu#&Ms&tg*e$3!}&WTMRs}^#_)E0Qy9_OYF z%8sN!|5O|!1{&nODWE`cYC5!Hl|chyo2#qh-pMBs;2Bmr2ugOjchLtQ9cY_VQ(zh7 z3NPbFEvN!XpbG?4wk;0OVf76$w;^~G0v`#EV_M}jz+(hPk_mM& zJ3~(KvN244dpQ)7H7GAFx_jx5X~Z{y2KA9=k@)ijd`Vztm6&i#U6(7@d^gW-IZKf6 zduUYRK8+{{*NRgTy;WPKs}oO0vGm)GYs>bFahu_0Bhr`L(ozKvA1Z09zTQe|N#SZk zVzIR%fY|%+#g7{6QRfdk7gyCk2K7b7nw7(p281|TiSqO`jp8+N zKA|;X?YJ1qeO=#IdB7pED?ejriXI-caBKmphv|@YNZ|p-E;CVFZhCp0vBNIn+m6K7 z@X?DyRHIA$`uKSo>dVg;{&oR+V&ydU2UnI^R8Ap#ap`Uc+A#^;!|mwRt`~cNi1L;b zlI86%8NCRDYcM%diAlq>Wm?t-+HDZ~LsZ0a=@N{EJ3#xyH<&g#La$0gqyJKdM6&`>`5b2yP$(_+dP)Bn%;}35cAXL{N4j4)IyE3rc;$m20yeRR7z~cTQ&UkxK=nvei}W+{(3CUdA85Jgb=wMTW2Sl({oFO{wLg zTaynY5@Hl5UfZffZPSvhO>+)GM`44XbvhJmC}6j#8Jq!UtEq}(V5V6JQAo7T8<~TS z@<(J+NB$eV?Asfck|QJM5> z>UyuW1f``-3QmZM;UdtVJRpf*J{f@2H{;vj~ zc;_#&|L?7D-22Yi|Mwo;z4vwhe?k5~zKd9mcTZO=q6W{NitJEIs}C_C@XS^tH#x>r&0k5q*k~Utw#A}``PXjZSOqb z8Gej^Qm12?HqY~`$}$hy-bobV#Qc*eN0JbVJ3g4ZZCR|b!YOMRv-qhHAg2UH$~-Ho z3Cl9^h$WZfg|CAs>#Tq=ML7mWzkuX(Ajws~pdc9AnB|7XcoZCaqF=x<9tI|b0}O{t zsE<=S4#gnXHUcRP*?b0KLjy~+%`@f+T8Z1-CW0EE8!re4&dS!6!8Wd}GO*sdyb)$hun^UXzzS7Ms23fJ{Gj{!Xjx&eKz}EDELI42^%pGNx2Fo(6k)u%pj+O z^0>JYlsIBhY0af6Oc9#6Zr|2&1QV5Mi+T0D63QPyKUQLhika5KH3>t;WhrGZR2ZzUe)e)~F zoR@vc70h>sXd8clOTQgl=Fo`JK&lW{A%43_WW?w&yG$BAx8!zEb5d?qNuW)--O2ch zat+5}j0?-%pzdl4`Rp9(l42*SEIi>*>m%Np$>r5X;Po>&3Fyn=B88vuZ<{&W;xpdS zB|GGm{2Utr8xZp9a#J1+q7oYz!Tf z-!`R`H7)bNil{;xAL07zf_@f(IvhG@+Pu8HzwulVaFkUV6LH}VB3#hq4D4*6C7w4G zG!eATAz?~(Jh+O^bFonnp$ZNGGSOYkC-p0)m@Ou^2*)&28CVcVAi~_v&WV$sQL!m)^=w2Y$j(JO5Eg8|a zL=&9bidnEMn-n4hd-1=Ij`3nObxP628>6+$*n1J6(senuI1G%)!7?Qy?OMU^Mag;C{eegd|qkZ$zMDrhr+w5JRmTq7xxYk59$A1A4gV zEJcK}3WM0!)kU~4=EExSjm9^V=M&U2SvYdS8PM%}aoDHo9X@(i$19j5%t zgWpLpLCq!lF$q4e9fc0hI4=-2QghKjLo(6g|1uKy%CU81qmvV!tU;1e_o_}+WCj)b zqt!!&`pLFUkf5rmoE!$lxmcqJ2;vuxu;?xEpU&Ev`0v^D7>wm>Vj~SI`fn;8-x5+; zO?{HhZeh_|HD$z?jh#KJ4L5z0qR!tgwMQvGotoFWSVXvv#lK0?wA{qdTjP9G+Dk66 zlup~@(<$77>Xv?r)ig$vQmD&M6gMnUYOo7gKVTp6Vi4HPFqV26<9z?u(f-5H$Y+Mm;v zAhnu~nMj`7UJwrpjgWn@qg`qz#tGWF=9KJy_&_5JX2sE_Q6BPlEsp6}4lp&EiE}{< z$tFh~sp+FESPlX_o&&`Z(BTASlh;G#U5V;NDgee8>oT$_vC)R>}Z$)0N_| z@`}F5`UvH?k>2t1lK>_x%G;;YY@7`zIZA{KXJ*{ zb%F#xa5a!9E?)pQ2oO2)=WLDtU|>1&k&!auHRf$cMB~6radN;h#a10Iw0`0)#UAfg z*A;fq+w)jWAYGZ6Lq5Q2k~Wbxsrop{<6?3=6+2^6`*p;g9Czuw;qzezTaCm5j>Jd< z^9GhtO~6cq>h#LBemQ%jyONgUQ|ndZJb6c@FS@X!x$6oCFG|gJQ zfq{c@(hjAmxVktl2d+}WzC-`q;_473E-Ls`#1N+$tNgp5V|Mg>?WNps&I#sOf<}pF%$o22`)EwMkp*?F7nVCG%@Om ztj;+O?^`hnnySY!eS$VyOVPKc1=FVDnic12pwo!uR`K%o3a7_aj1aX}K^sO|GK@O# z+#z6m>vca4RaE{Fd@M=E_Bb{x6Z#!wbImAB;fBtbLZ(MnD~!rG?@z@khjI3JCS2qf zr4uR*k92&r<)#UIJJ|N%1^g|9B^C$G7790ZGrrmVJPcYuej@XX0{gvk9(P_pFQ%5B z7E>(<5#AiAuQIGSu4XI(zxiAMmzdG)t-Bpnqr@T_d~T%+kZMT3RXABDAw{HM`7oJ^ z)LejaiPDZ_3}!=$r4lPa>Sq%_F|4O3r%$3#Bog~d(a&Ao!y@|eFfSw7hn6{DzA=|u zlIomkgb%=#Evm+m(?{S3j$F-*E=-ykEUBLbx(2tHyto*IKHNcJ{PL0D;xE)Hhhj(E z!X>XB@<)KpXFq@w|G(cP)Me_C()hvLW4?L_?e(;Clvqt!<^K~h%)Bfx2j^4gdVBT7mCPj9~1}r(U4%a3|Bcwp$N~}3|tGZuIegnbO;}5~mcUG?PPa#*# zn2Dn1o<+_})~IIsrWMOssgRPy{su;Gh4V~Fe8X&?ZbwGi`uDiGpxE8MX*P7U>NAj- zG>@5K0ONw)R?4rDm@4KkYhFUI5HMx(C|tR==+ShZ!&JtC&p5ZHaTdiPa&Di%&n^0a zxwqMRa>4Vd{RGlAM5p2e&6I8;zd{EfNi&T@bUb6UMIT%P$XpR>K^#?(x~!2rx4QG0 zi+;h2%DIr5?P4|dI!U%k8k=L8MfXDMAVAFwxNG;OpcZNqQX*V7@=q}zEOmnCp7F}$ ztrc5I8m3{kbjVd-v&uiediByZB+5hsmHdEJ-V`LO6pQ(6(N=NJ@OpEVTigN zQe!FC9W5kjH$B-E?Ums!jUC_%RNlN3)LDwfMt3?!v#VGOX80?FB!IzI`GgLc zz=y<8qPJ=7#+9K#(jlK9fAv|Q<&8&j#~#wbawKs(s@}MeZm76Gwc9DCHyKV01_-F` zl=fPwg{^2DMr^6MSyUxSD?q;*AhZLuk6WF5w{sOD(cEY?K+lIji#o=F8r1;_s%71P zYV{aB29~(487Eo>Q;=sI?{j0%bbG98Bw_HLnO;4ra@I+&j+#F>spXg>s-vgC?u?f- zK!2UKuF{SIVH$QE1~f9sCex~mrh?7rPs>hVsCkQUL*hMq#Js!tV%y|Pj}_4)1Mc1# zn0Rky3*NhvB?{;<7>ov!=ZkSq=!3?385}EQM`9>ymiQiA*SdANPQ;$1Wo^FlJIvJT% z=4?(SU#nXe&AiB zQ)ICAnlqBl-3Jbp)y4nkEkyX6sh*`(7fi82tSBzvBS#M(i!1&~Hp$l1AL-c-oYD_c zYOd0TX%xHk)?=~R^mxv0`3LZ@|HsGHymRYTbZ8@52pW&zS8xO3$<&1<-j3{}55n>2 zO?NoGI2JPkU%VT*KT*uHM~7vyK_AE@$GoN6#I>4*uNvlvd%OWgw6 zpt-rwu2cHJg`}qJNYSTJaK!v@Rsj}+n`po?jY?YNK^o2Aur>7?dK4_A<`P4hO$jn% zw&G5l9IhWhQ-#>@>kZTmp(TgB4x?2gPw^>b80NTDeK_=}DBvwcvHcd#2yt$pTB?tJ z@Z;94m0OTw)cU3QU|FkB$9VfF!3Lmgn8|kcE<5&*a0L6fgjH%wtSeOXS ze1Oi;?8BP<)@oKye`sP=p^H=;Vu)_D)xzX)pM1Uo*R|#2qx_lY9z7EWJ1hD%%fh&i$h~A$;1)+l^P}f#}k7 zsbb!pqG`VvTY0a(rfT}E_%C9jM`babbSusc{&7f{dHJ92Y}~c+0A4_$zh5@)+<)*D z|K&@>e_FwCUX&ajL)LoG5LvQAWmHa2mAX9Ikqb-Xz^Dhd*ddcWSr73n*nRd4EYdqq zy3cnG4z{1}0N1@c7_5S!O>~C`v>wJQ4}aT!{!Gxh>YYRUJ03ZI%dc)JAQp~5^Bj&^ zmGL3~(INxfwck$1&Tq(k%R90c%n)sAS?}0$R9IKjix2{g3UTR>7J8BN5~g!@--KkC z^@W7vK#EuZ5|%gcBMTZuVsiZ=4aPnA@;cno^@4Wnpuw=ZO*=I=S;sIfq?oAch7b@; zaQ{_Hze|kEAn^ifXf5?ez#9vp8QqNWkHYyJSJ16Wu5kcH>1Ts-h!{kfUTJ+P{NY+B zFJ>7|FKHM}Ja`=ym4OR(b2$GbNqI1*}4#7Ad-kO-1B8|Eb_{2kmv-Ajj)BrsyA33^X=;-vgGEVo1 z_l$_cf9!Mmgg*9T1}S~iV5QCmQPDPA<|3g9L9jKBf`4D3b;=0)|MgHizcj$clvUdrE zgq8-nwsrUs92w%w$J5?XM+azFdT7MdGHUAD;)zb11ut(b2&0s@ziD-+aeUqCG8=Wf zEuf+A{LsvUe5~%Sy7-#9o-gSjeSqOYgx@u*R3(Jdlc`vOHkwl?R@u7G&0X$(4|t<= z0-&}v-sgf93cJR=Ghy)HFmZ0f2&2P7tavf5OnIapiYa=>9RXD(#p_v>YB|9ukU<%g zqVJLb*?N*6KrW0JY>sf3(UL)2927+nb270q2%JE1i4$i}A2H(DhG!f5F ziuX1>G}9MVHObZSA<2q=T!qO2|a3QVRok1o2m0%UAu6 z(f_>rH{k!?xqt88T@U~F-dFtZFA@J&UufdM%}*)uQYaBPsxBa^5dObA8kg^{>QRAr zq*pZt%8f+_T7`xzD9RKcNz;6*gJ-?TFG1OvKrf@7OK`~_WTr>&%9DgbC=Cv6o$OJD zd)RGzl@zLFZ7nQdJfAVM1-Fdum_$d2w~;tG?wJ1@rZUmUjezR7`(lsTv3Qkz`OTmT z>2c;3m-6{FXEtV`!cTXecYl8IdvE>eB``Jhs9tEET-;rD-VO)&dcpr zKU?j)ghIo<`tT&5sLj3~z>d2fKDLAuA40`X*2$5cFCHn0rS7 zw2m(OV7BJH@aD##KG!spNL%=uAs7hXpt3hk^zatyv4UFpS9e*pGpEmupTS_QO9wN6 z^sEMO_@eYJK{PE??z*XC$eNHgL8HCu#dKPQmJ&>%4c}cQ8o$~y(xzP{QnW zKg7Hq6A}?79C?J93+C-#>+Gshf$x*CbHlD&@4x=>x30PXV-|tUUqoUK*VFIKBmyN| zs4Yohf9KiG_Q6i~$@Z(AS)kkq%t`}5Y>Z?LaU(tc`Pt4dJI`jZl}5#R>(NT0Lq$SH zX3mb-Qn$37vdZX>wizBLBug()9Mx}s*~N*R)5ki1K>KrPc7`$&bUNZT#s9nn_L0;L z#h@Lj|0F4|FIP`3k-c)Vt1JuLvpfcOGHrACKPL}6@}Ew$`6=bVIr887y*u~a{7?7p zJoqaAeX;p}nV{lZ%+UuZWUGc3?Z}|H8I`nnfjMT4^N=Zpwqo^TNuMb1x>80{7c?YR zqmUHxxgxgKUeYWJIn__c7n5<0iO=;TQtSt@$sl6K?_ny_m#4ghBXVN+Uf%C=7KD=s zmGDxThbq<-x3b6hwY=BCRPl3&)E2Xd!OXP0bkCd)mZ;hPg>!7xH3r7ka_di-rT9E^3!i`dh0H$-;B?A9A}` z=RYP^`1B^AIp_a_yZ2oF|Nh+vU(f$9_xzW?RlN2AdP$C%SglhzvT)QEM%bEI4v68P zh(#v`_nJUGXUxjj77XThZ0Wac2}jR7chRk_B_8YhQJ1C&FG<%r!1)Lt zB!O8K4DwH)k87Np@4}P%b6K9xpV+@RmF1^gsNwZHZslS!zs2=+r?-lA#j|t>%r5Faezh)4{>83qQ}s z)tM=19l-x(@9UTO7y-J&%OG^{5U|2X*XvRWqNsz0c!PS5IsYQ&1Ng|V<2><2^{mI- zF3~sdQK*iBV1lEQ5+cU&AQha?l%}zYukRd zp#+hanCogXzLMxFE7vp!GeAAZS)IM*=q&Lr;%Y%2j=>e74O}ts*Hb|5j-aO9(;1t4 zj_wl^h(SiUf@xfTM{L{;T@upQuy!$7Hym)*T^)=byyom8c-N^VhF+rvd<|~FZ^5`F zdLeeZ`1;g|q5|WPO-Eab-VEcq>{9WMIyfBW1ibJt#v@l$o9cQEns{;2Jc9p5bL-M_ zPJ_^W=@`2S-ST`EEOFR04o)ZbOxJ(Zd)`O=ExQ;TTn#7L`_J)Feb(jU$8z5r%c~r~ z9kTJ&eoj6}YDms8_^;fr2LQY@mhB_0iR@J&Ht=+)@mC>b)U8U)$muESe$D0O0LBVPR##$@E(CWw77W~EaMd^m-z8u5yB{k5qnq?6(fEFd{J(MU{>B4W z{=fI#-LLZh7wG@_PHd+V;~#;`uK-AdxqtRf3-*gpD#gC;1COR3|5GfvkT2*;^m9ge zPyqHDK@64KzRp9U9N!|XbEfm{CtA65S4}4+-s7Fekj$hv*%eIv`?eW_T;^*%dff%w ziubWo_eps<#5kLApk`mc^r~qYB2-PkbgR{MQFd*KWkgZji2{8?p0=0>)}=hB;}vIW zD6yIVV^s8(0qsc?Cm5i*2eh>JUz(|{X^k=(N82xVWlRp>Al_TQ8?`X$E4o?{5V-g} z$7Lls7WtLLhXpoiezQfzqB%^{FU0&E96XCoAX^-Pbme1AhGPeCNvTe}qv!cgqQcZL zt-9eb)SL{FVj0gQ+Y-f(QTGEbBiJaV=z}ixOk)xp*HD?IZ-#h{I#`K>A_?HFJxcx# z=&pbZIWEAOiplyevf*kmToui%UKD+Z!4$k$2ARu_rxTanMOjVM4NG9KbY()KA00&t zJ$}5+J6y@&KbIVggU>C6nXm|xC_4r>HT79INen)53EHtJu$fn@YJlLEy>d7dx4H(} zoFW{jpxTb|elfA~`?zEk3O$Ak6BI6C-`>(NxVM7vlXF%aZmmq``yj2z0XCzC+%GTy z33f4Cc?Sl|a?VooG<#~L!3#)pYZe@y6tdkwZe9eRM!;9W9f^|-I3{%E#=}$fR}e?= zGtoDeI9W}g*tR&&9&H7yiV=wZ+@cb2Ov)xgpQaw@vs*Rq5vI=!9@wzx z(r^EdpCsG0{Ry5Q&YG7IWbiq~Uhj!oKr0(m5~Hxtn8uMxV%jh1xmXh8=@2naSRXL|{cna9`($?Xh0?#8F3gtnM>%*@#q-sS2&MOt(_FrJjs~K=avgnc>DT+aP_zVeXMFy8NYS5Sz4rAZu_r(lhSQM9*OGlbl&5;$ ze=hFI>=h=+z*kZiF9vm>iX3qioS(LLpPBE>5g>uZ>XJbiRzSlk*sj@|ZJXaa3J`wy z(2HO0bmX#5OUZ>0S_*+ z_g&cao^KtRSMB1=8`2=tt0G4rV3n7^Py!}7Jw#PY23rg6{&JWrS4GnV>mLF8_)W;y zss%`u4RkLv(Iq%b(cuF`2Az}@DYK!~QO5Jm={Z%9P`rlhQtjdIKp$Y9Km({0MF%A& z`0JNlaV&}+fmeCn1$k;ZLO4$CDI=Lw^ni~f3X&0o+3SEy;<&K8k!Hhkcy$4LzN=oc z`v4_CN(mnM2o(m@2;Nx$4+s^!Dz+@T$rF$O!2cbw_vq-#l1O4$I;gFqcr|7a4JuRm zxDe&Uv6Ui3Lo2o}M;TQ3e0%@k=j~_RgO@vxyH9raXGGRCHA~0;tMxgcv7oE52%J_g|134ddh%5gEw##fN+JtZIw3p=DImY#H~?Mj1{99>tw zLJUW{r%AXQvSQ1nnKb1os2zaOA*A>vVFXEfT=uWrtb8)Ef!q8n*aFP~wUJTB1wfNO zQ+W_jBqvA$M9i@H84w-DT4NwK7V;Fh@=(npS+rwubX|cAiAV~7J0KX6;`9u7=gZXd ztdq`SC|_XwqD)J#q8>?#j1*u(KYvfM0zd7v=QBc&;%RZ!5*?!~U2P|;myZ3|hjJA0 zBQ+^v3$VK`NfiqvI5<1XvYvW?Y5VXY+M}v(j1o3`@t$^aW16&0Gj3EPVRj-fS4pQM zb!4e~2N_Tv!3=lBaUbynOg#Kl&Lt%^Pn{72cY&&TXnglHk?O2C0eqH8F)$C2Q%$uT zi2i)~rQ^w`pZBLD<5YOU!|o{ivclKJyG+(1PfFc;XlGfEvu_MhxaFt|ILXgTnOvW&m~C5{H9he#@5#X9Oq!T0Q@fq)5vgN=JcgD@7q4! z9v?sz_=WI1+u>GlOvE^Qz zM20)?Zg|*eiyuk+9J1Ds+ab1*n!GbGeY21*brX-wlK==lOgBGYnR`=8s#OytO*HIq zQ>D%iKs7M*WvYo`m+JejIYQ75VGGzyHCX73aDG4N(2eHq+E=kOH}5#)v92rXjrQlyN<4X z`96|M&+_-Jza(C3LcoI!DeKZC0riREtVl6wX6gN8oOP#JP3{4nm}=)|8^#> z={!-#kUCA&Z#+wW+IjW(=N+wQI1!u-9t(YDT9kKE8>FFxxjgF@K*3J}YulBcp**(CFva$G1?}{pB7;TSt_a8sodAv*S zd&RgX?i%*~VCVVv%b#ED?@)m%7vJQp99w1ny0iDU-MxeE>-}d`>i2wjE@p|B`SJDc zvnM~k_&XIq^t|KpJumU}MfYH5UmV2FyBnSU%i^ApwrguPM259d^v_=D8kv zY9Cu#7fm;@TM?ITXINTigmZn=a%A*ToR-=ALq3)d{YX*7rxaP3-JgEzzTDZ_Pn?$E zlXWq63~qR8r)wV84(0>afjFRY!0t4#CG#tXx+zHLVg3F7o$osxCJo@JF4}P`p66E) zulVwB`ITTI54QaZ))0Fb5T5n5-gQ$sxNvQ(RlF1*WL)SJRn=kqTHJoC+i-zl4r!0` zt*iI?^P5IiEp#;bU)kp=a4 zDnXYoJ?Z*@SF7>oi}4LD6l9LX&$gp2HK;#|H2y2r(g19H*EjG}(tt`^lqu4xL`<|j z6L7>ZbDJ#wioSEFBb9qQFMg7Lk;Ym*RyaF5ub#a4bdv{L}(g!1&ULcubMMe^O`ZF#j=2I-+S^lRU zEq=)ALI1x&aop+rI6X14w$D1$o*n9NarQ3Q7;~1zyZ%hcobyDK{7Gi25nsFGKoTh8o5ENLu zy>>elr$9%|L5Mii~n=? zyRZ3wzTEg&W6vpRi^hGFyyL??<-Q=T>wb`|j;*d|I`mZ;l7&mJQo8eNauzdelP8XbK)sEml8Sa_t;m*hkx%`o}n1 zoz81SP8)YR&x;CEdihs8gfUMY!I{C#6)8}pfu7)Z1;=h7Kf^+UHzO)OiB*!do2 z9IH0Xurg6~sfm;HoCxQ;5k@+Xc-?0~qPK0T(s(6kqR~-hBDWCB^wa4OT@bKiq%}*t zLh{Qk(}xUYD7xL}Sl#s=Ew>fPg}0-byE!~5>R!)E^tQCXzdgmIE*YFMW%E;oxE6}s zOXPFFy|BBm672(A2Chv~x5!hyLZI>TBwACp={7U;f_+|E8!$g3?Al2QK7@`d2DdCM zYhMr1so>Hee9kVZlfcD$T7usP)CesbUOrB<>C2_k`n z=Arp9QeEh6P{30KWjDk^8)O&9{R|lk(xyudziq4WyikoC`E6v?OPq_4{j}ZZ;nS0I zjC6b_hgou!<^GoNKmP-h;!W3RyF+vOq0{Ek6>DQXDcO7N+hbm^fdXuEVutF<$n{W{%N$p^YVYK-~Z0h|92G@wfHpehmp#1=0_9FyYF2uS5Y^~bzW0;YeI0S^7 zVpBLMP|16E)Q-UIpTb`BLv!H>4r#1Q8<`Qr86l{Is2UbxP@WR*ealc`&Nz|zvDqRi3XAPl^CZxXiJ`!gh`}z|7$+Z zw>IszAuV3nla|yhthN2DJlQ|v-j@(O(aRW@Zb1TREyq0>XBv4 zrF+%~HyCht`!|4D+f45q+aq)-+ZszMjY`6J!1LKpTr(r9vSb<9etY(Xy|h(TdC!cD z%M%fg8RE{_vQUH|S7zM!2z4hxB72ucYZfg*&xJi;M>uzK%wlc5-f6nHTo^6}CMPk$ zT*|z?+4rRdjOb3v-TE(FWt^Sfe1^z z5^YOK(RCj^*s0r^Mwpd#6wFX7j z-mS0Mf!FN!Eh5?|oZ;@>y#3+X&pR!kjGakZj~rit%KJA2m@gYS7m54vo6fTf6h%oS zLn3O0RMs5HVLBhj@Q{xDE>yrW4SN9%BbhQ+s8_sJm}*NGKnr$D=qeabH~v*B`}dOn zJTd+)-B&!jr0rml)|7nl|$VGnTb$0YsmCJ1zoXll~pra^)j(Fyn9V&*(QUo)Ukj zKUb=hpS(q+v|As)L;jeoH!3G05<+ODXkQOP=``KshP-fCv5hKJs&8RDpVIV&6>AKo z>pEF0m8j$_%7?~oU2;gf{h_vD_b-n8%1NNXV^IcN)vi}a-|Sc=e5`)nK1kRXu4azv zKSGD0pHub}!pW3Yg3VzWxX50VU5Xs(d@MYver9)n#ZFBgmy7DVMzT==HbDO{3GtxU z#w}CFHkz*HI2UhR4ud&_A4P3j#zDL)Rc*3_hc!abP_Pn4xS%Y8e&u;S+^ij=f9qqA zS@Q8x^AQ#e9zH1vH7St|k&=uvQpC z=+UHJWra2>!UIr?WgX;qfzL;U#gc>5ry+eV<7?=6t`YG=)@@_0nXG}d+UfVF$fv_< z1Mw$2)Hs`x?vZ|I)V;ORK`dj1OdQH7NvPBs9RfC9wUTE(2%d(LDFn?k*E5F3qfmAx znE6t4LAn;iW_NLdi-+>7H1bLO|ChpjF3JDjzyCwg{`39!cfZE}{x`D!xVRO9<<_W6 zH?Rps5TM>Z(O#gPb>JD+{lG2JmR@k#FbJHGUkM_JZ=@>{jYQ~7oZ=g%_ovQG^X~-I zdm)LoL82vo^a+KNER*0xw@K8^fm?WRcYW<<%w7b2uT|YIS5+12(brP&H9%g%z|TIt zQ`Net;w>4wHl7vi2^{K)tO@}VV;P?DGca?X5Pa`{B>dj>0rVNM&{ObSn8}WbXxR>=Y8hkRJovi+8Wl4@O%=J>r4}+Sg82cv=ev++5 zWHNWp+X!L|vx=d`jP_$awSk?P&oac9n3h5+vzScHf+PL^5|>tHD(JIFJ~C8EY%v7FXYqvAL(y1A$G(-fT-zG?yu|HZDMvspwhtbn%b(mVH-Pu-5?!wMBGENaUh1=YSi- zASamXZW)po`fQ%5#~kaI8t0n(S@A-rYM$4z^#uezA41jc-2XpRYOj6~SwL;M6fiQ$Krb zT_1KZKB7b>q)?fd6!P2Gd%HjHZM~$(ZD@3(;F*jgNotL&w<}e(WAZ0V7Lox^KY^1| zXp3J1!>+kQfnK#*rP{bGi5Re2oqkvgKWoBzVrc3fW^W`JLdslpa;nq2OwnHGr!!2t zwG#Sieo*Vo2K}uz#ezElzAC3jEkxRET$yN)K3?kf_#NszTD(i@8IyZb9ERg~)u=F*zY z#~_qp%90Mob##l&-(ExX4Sqf9CRTSzmHQ75Dz!(!;5Ezwu(n_9Z*c>!*n$kgY zX&9&rA|aDd{tXbr)EA{_?v%nbqxA7`>G^@u^$OSDDcqd%E;^YzsY?ILGqL8QPT|fd zN98p0rI(PBx!Mw~SxaNN?^?Z)yd> zdBwQXQ(XRn;7Ffe4pNFtE$WhOpWj#2rJ)SaGK{{2RKi=P@KJF2eNFNDW#xZVvY(L` z-n}L7TFB5DO5CPM8%LD!{MENE1ro-Lwba8Gb+=bb@KDPo=s*9^fI2p=>19O3!bgjbdkGV;?BU(8N}JBIUUr^j!|!g(nvd zVd9xLZs>7x=rzIIQ@F|4n4xBp#&NQNK?ciTerSGYKMPXk0OLh+EBdmhGfWMSjw;wD zNz0DQk>ai74HVko(f^p-fyemw9hAFo2fGGq1TlblYKmJvYq?{h<7?%}ZftHkDd|bX zG-3mV!WVv{M2#U&3TBXEq;In`F=#b0%Gw}ef!tQjdr9pnhP6&)rdMx&kjMZuo6J!m z!!6R=DVPB-QiP#-XQiq|9&2a|D@*G)sV)EaH(;-i5 z&E!xb0v_X>9Ll6L-4`3D^Uk#2?!k|7t+_a{gLYMmvLdaG^3*gNQnzf)VzlDt$9^5m z+yGQcdEoB~T5x@^i_$#=bh6fHpnZ~!lW%5&Vcr^@1MO^2>Jw|u zG_T*4PBm8)Q%F)!d5}%@a`eagis>#MS17%9`-6c4)Jj25qFrw$1*2~4YKf2`Wf_PT zX%?(T{0^dsCWXbNe3)(A3um1C4K~V*gj`RRH>GHFUF#c<+c2$d$Tz>#oTukpu#(ecV+*!bHw{q0#cP}~f z4Shbs%mwumjH!lh>E+hkedU7ddL2KITU5Zc^_wv6Zt1N9NnOFp!1d-lKNrj=6eczP zV8*$-u~;iIDaFR>-Yv-Yw>RSbI+!UVC0{v+8Bw?%r`ZUI92Bi0SXx~R?F{f8k|d@> zWV0g|(F~UwIW8tm8%N`#F|cGluGETMN?4c6gBGP zK#ZF9hC}4n4S%_4M<0}#(X)=@Pm*p5B0cMV`<`1?OIx^yN*osb{aAvL!Q#$PoAB`? z&uzVS;1t|+nRBcH%oc-(shj#j?0nm*MXo_^!ky#b!Wy7?=i~&oAu2Cd@oBAbxPDwQ z`@WA0t6Sylg{!Oom=A!ouC5A{>zD1V=ZmU045F()(M3#FJIU%OIjTvLJ40EHYK8Tw zEndx2qEEJfTQ|}SI~4|;qIapxU67J3W-Y-j$w2>LtMun2%Cj-D7MV9Q!hXd#Z01EX zU*TNo9buowKF69>Y5&eoVuY3;(JWN%9t9u5S%dRVvC51FX%P)6erryC>!0Z~E8OpO zs7pMj;J&EA6^>CSmCn2sI>UE6S!eY6VxP(i=O;n_#gz)*NJCx=iQms)D0H6%GJ>mGr^4jVKtlw)`SvkcCIUNnpt<8Z zNEYIccmI^8)T|W_w)9v?Y*66?Ppuh ze%U6Q2_{FMce7qL*^uPE$;&y#q3Xp=4NG{d?zKr`BjDm9JcO z#8~N34&3nldleP9x7XM4{ewky;M;|D%*O*{1Ukdj5zO>OWsf4?Ev)zb_YbbAG5BI} zU4Qz%{ROMLrk+22Z|bSY?RA=t)9IjBpEN>2WP*3;1i9Rx=8cWLH&6fSl#6y_9!`!U zv2)u^;9KUTT+rRf4h5)R9btUoX3~~U*oaJ%Rz_)K=o9=KuJZaf{Hr&aqku7?KioI) zBkoJh?SK3j9ZAf4p#+yk3m)~bG;eLvfVDL=lVde`Qo}_tW`pb6DOdZIU-(~f|A!8o zze)U`dq3PO$N%}^tN-us3IA~e2jAPtR==M+!1@V=93XUd(u2v)M&uu-VZ|A(;XL@s zI;g=OR~XSjp;Ga0`hBqbe0KvVg z4u6}qJ>rxXL-F~6>mRJ3S-aow-uwPxuXpcm_uk2$*6+70s3q_$P989*w@eYYAxRXgkt)#@Xzb+|GW1}{-599{Tl!M_jUhw z&eJu9v#dOOvHSGt_MYk#878n&#)^7%QfGWhR% zCH(ip^#@<`|NfrNKXCB1N)R`08&>D-ZN2`5yx!ot-w+4XD5y9cziWzhh$1^Qll&~Z zaL_f!tI|{H#YnP^$tx{QA-U1iJ{cogNgs1)|p(QGwie z7=Y4b9P)*smqdhYnzJ(m2^MC|6qa^yQ4nhs4u_}G)aH-Cp{ax1IncmdZcNS@VIj-a z;lxIZ*%1UMr`#;8{|H#E_OR1Uhb9SvZ0E+px$q0tYsZ(Ya5fKXw?7oRaMiy3!ItKS zwPMfgCvvtL*Cqq2+VU`Qi_F||BAix1$<__X70~(?xzXNeiKOGJX5Aa{?OI)+#X#N49cN0CF~lw^y^HL$(w?CYai?6n zPZsQwa&S(6Wo`P&X`QE+rL~W264NMLg57M`&Zf%Lz+bi_Kwj_)CIwU&Ji)wZ@oj2# zFf=h%O|iJ4)*x?p9@h&=N$tc^cab?*To2)PG5Kz>c*17tYJ+T(y1(FPz}bdS=UU>52WP%F z$>WXJ#{(#6-Y6%Tl)b1FElX)~87cKzgvmQ}jEO z7)iuuKpR8yg*DImX`WIfrMs<%4>^I@son3VG#7^(7byn1Jf?Bqi@ZO{#xrHAPifM_ zXSJ;XdrPDiFiD!8T+2V6l0l0`Uk?te zFl8SKCw?QJU5d5>9YkS?hiSj$^|*o0d)bhq6xVJ){m-ZW`TSw|v;3?x@s)M6_xEFU z$pp|x>)!{juUeyYdYaZF%w~|Rqr%4G51F4LmKB;T=fIyIi?RXt$T|^)lVMLFQ=77>3k}7)=UROh|5fO25r#ebj_u;%ewC7ejI~ zrX^%l_@Z29R3kYTusR%dKS4OT!c-PBuqVFNNT)AHykS0Al6}=Ozvz2lQ$}_ zd1@`Y83rrYiA$$bp19hZvEU^fct4R*fKbhG30H~M!|be~?ch{@^aR(5#=~$F60C8l zT;X5w=l>ttf4+3yhb8Sl>pwiWU$Xx^{Nbzp=l5p+sWJdj>V_bK&-NHd&J^L^#;pg# zg^`!HI_#nzz^S0cD@@;A6Tb#E_-H)Vza^bw2u_6OS0694k<``aHtGR7o+gZ`BU=G}ykWS-e{Ahk5E5+4a@ zljBqHkEk=_v!F7(H}TIdqXF#$0%O5Mih$BFRLeraC*$iWlZTskP}HjhtM zObrYZ5F#&@oe{pj;Ye+4&rmr_1)p28$La zaTu-_z_`Lt9MGx5U~V?@nVT$l!R40XA;SeRaR_ppSkrOWYbRIG#qgM~fsNt^QMy~T z*x}|N>jJ$kg`W=MPB#+<2^Su|==}4t@JQ3m2ah=>vz)LlXSU}~HG&|{bk)npl*b&t zrJy(EZwqSKVhdg|9NXy}BR`$Io@Vc_E!u(yVeyFW9Al7R@LLKrLbL$!?3!OI{?Rrnzcs_Dy#Baw+q|Bd_=v(@9U7R z!?DAVfX=mc5t zw^qDbJT$zQU&Cq+(^=XE8UDk^@yBFLV!H-}bQczXD@u6!P_LVY`l3e;-8KDk+?asI z;oNgO6s+Sr>|5NX-zfBJJ|6s|-1;1S5U7VIg~~ zSCqI+@tn|_pux9;{LFb^FDd|GgfXX$`?!$*E~0K;ToR8(#B^B?F4M*`s^SaOJhlVu zSlqO4@MWHUqTSUNc9W|qhlwe-SH7(#F=6fHG?lsoOIT>cW)H^&g--sRY`jY}7xz;! zIk}@mqvQ#Vh(|x951R?cKk62q6=!D{ zrW#$)eut`CIJ?A=2?8KDB!>4oc?UHX#L|M-trFhA^={I-3DDpM8uU>A`*(`w`=wRD z*XRE&;s3w?{;U7*?=k*|DtvjPgt}ef=*H;0 zEV$%Ozer`U{vP4io27AyNLQEPMdC}tIFb44NJZ=k;JuH%+nwv-6~B2@Ns4{KoexA7H#@5G#myxX4?hzlOxLO{9_y+F&;I)QWf!9rmu*gC~+P0D0~ zwR?HsKX8sQY;K>i+IO1#!!Q2HJT9^T_UhC9Yyg%_BIw8zK z;b&5#_z{#|31roS0fsEjF0PX9CH#DQah7#PgSVWe=xU=@EFGJbuegGx`9GYtFAo5? zhW~p2{9cj&yMOPi|M%~J|AVuLngdSB)=z=^Bg;X@UG2PO@RIEiT0F^n)4^m$sd0eH zc1!?tyq9j5FKSBu=I&~Vcb>2<19eGLH1Sb{{npBDsNl&MBSUY4yh9anJ%e2Hms8e5 zHu&9u ztnM}MlkEbbf4FKUe~|AQD}E|XPOv1A6kAeC5Ezt63g0++V?Jmk9}*WrBFHjD+OW79 z{LL7R{bQ|ugF~>hLz(gI@j7sN>)mCuVZS}ivY8Qu*lbwez{d?qgXo9@JXxFMry3v0Y=OaZPqD&6O9KT>V~lQs!P!{Ny)N_w&E9 zlrZ4(gzM0X?DBVw|0A6?Z^&7R{F`BalWZ^uQ%(gb!sdf;j&_7@xOgCSJD*L{5E^Qk z>WH^MqpGG!hRKB`yodzSDZzr|`NxWk!?o8?$*OK}O)E}Ha>;bCfu467rYDjjQ+$x^ zg6;7mf_>0r`_VOg2^0+GPT|LEPZhL99kc0^-$~W~hcqy{IN|3|-59nkdtiy-8$IP| zdUcOCzVgIh`Tv1CLBD1Er}ZBmJh)ei|McK1{`dEU|4k9pUycT8fEaG`)XI^dFxOr5 zg)6j%{2%-=Tv(6)9Iv^4XPAxCg`c4+z*JbR&z4V;N6Gg1-C&xHN9vIn%QISt+ZerX z5OqB24o>IUJf}2`s#3bup=c1IPa*PR^04t5$4T^Aj%Sn-+ zG+_f?dFbVV-=lgFE4hvNummTSY03wjj8;+Y&-ZruzP8+;SNH1xY(SI0RI@ptSgQ0L z#`4evJEfP!Ie-f`m;oMqe-13N0L4U1?5RW`Q=t=rxDV7K(r9JyBs~&#!DwG~CV9_s z8Z$~8>cFKOj1(ak1bpLKIQ8OS1`;G;QZW@G%bKFC?5Hy}Z5ggggkk1>nj~$_lD)sY zOmIXq92E0Kq;3nwv!C`d%%0uE5;TO|be>Y|aB3aQ+;R%jq)BgTOciQ6FKiQFHKqgA zdJRAMbNk=KEhf&mp$^-+?P%!vESsPNmk(xh9`pq#;(^WZE*)mTGeg14WIpK^?Frra zj9%f~s+Z;M)eqQIf@22Bf4L!Ua;O2N*w3TsI)rgBK>MAur#ET9iua&{ZtS9(8&ty;eVG+YTj>9<`ERvJ2QcQ=vh!-Dn>mkVM9%_zQfG>7df7-dDGItD|9pwtrDI zW?O3_1u1Qo(I6-738R!0t5x28KMhX8sTYe(UV@b->446}>};CNPtRZ$+0{hI9QLAn zDGA*IB0^5{pScc+q zlR9^UB5;!iv!C@y;lkt_C;SX!eVx%U7WT}sAIJk5)**7M^AxnrjkVt! z3XaG>Uh#FSdh5C=+;@xCl0^4BIesyZn|78PElLJK49!Ur`#hGiic7RrN8t}=o6etr zrJ}5(X+)1}yEp0|J9Mo%>BU8|6$UuWc&s=Z7tBH`v0VhpnZ3rCIrvUs!?qWuqzU=v z0NPZWtPcKN?6ieD`q3A$-=+O07(Gr7iu4J#o+W}r{w}jQF;NIrObQvilNz2}L4;C9 z+?niMppWBLtvoD^&(69v9LvXYzY>?R6gq|KSQ>MniM^_Fw~rk%&w7~A*$XSNGtsI= z=e6p_V2j>r4mSIA6SCZkpr80TW$HQ%*VMdwX;SzWejc1mw_2H>(o&`>3UZE zLw{s7E}wsA98qc>Ju3u7hg+k~$yuM*Zh!ElO@sxgRh9s{__%Is;HdSETEUj=rPei0 zM)l~C=~ux;BM$PV1_@DNn}fr10gHV1haY}O{*e5OKAMj@`FRO*;eZmbCyC1Iera;1 zh}vqc(PGazYylzpjm2(u3#l@XGbC6XX^&qRKMwI0TVHhM_s<8D2_+Wg@`rbiuLKY@ z@a9aZyB1b_?G*3dSHeF|Es4iAE^4Y+N!qpenJb^X}q*Tf8s8^yQLfOEO@ z4UPa++SF1|;uv$3Ogg<;*x}`dDitp`x^cgn-vL1oZxgynfJCBG5u>oQ>$EAFI}aOHH^Ty^AgfM~NRk{2wH}Rk%RX zTY#wACs|v>M3Ee(D2crr^i$F);OQW@VGQF$=ilikjMzTH2x|$D7gkYrPEI6EOsHW7 zF`n4OmK8+v&Y+KK$2+LznG(j?Y5LeX55F5Hm|3F13K+EkNHswl(C5FSKimFp^775I zUy`4;_7ArATBs21=z;TQ`Fqwy>b)NR zJS-nsd_!4u2gz!(j!q`6QRh8wX_#B5+^5~bgL@oGZ1xp3(@f%m7xgcaF8rES3_d~O zC%O+F*D-48z1Di`uDLQ?2#La#R-*cQQXkwTCqek0o4e99t?#QR2fFaw65d@d@#kaoY?SAsH-3Tc^^|7O8F2vt9j zfEz2JPNhZKZ!Ula5j0=IDZ2?_mhRL4gY@wibwGuq22tm(ID61zaM^I$p3Zk z?)N{ef5m_NZvFq@zTXK<@TK@{2-Y(f+6E&)Fn}svZSY@j!jF0FaTV?xdpmltDc6aK zEGsVGC*sy@f(kvc_=6BefZy9z{12CbM;qin^s#F@&Y>yyfMP}4bR~xVkj}RC#sh+; zUl0*<&o=^uWx$IIkXhN2qjDTYQ*`_x&d>T=?EQTARil9d=Q z@M?Ge^|OE%D55uoFTeyE*$K>6r5u>G@5>%k|Z;caro@71B zWYQN0PVZfD%`&r$<;>)rF~bRNH40^SMm>Ot7lnuPHW4yTI>+YxSbhx5+sr?Cg>yyvOh?JElBH| zO6Zf~e*6Whr9Ig|MyK@EKAeZ?V0Ou$xPGyCD?6>33a9Z^4yXHW~PE92IfsiLR5tQwecx@i3 ze$XtT4yt@3YgDjhH&yMp^5|F{l$=(T|K(N^V*O*H7m=8Xu^DKQ;C0L^_VFu!2{fwD zYe1Ua*q_pfHL*ud13evPU5q(T0tll!M)Mhv)qY|8PFSb9X%5;@RbD>~Ci)m1BlHMF z0%cXw(S#zYP2n))1V2E9XojnZTO;{tn!@qUMkzlKOc)8&@Tay%5^jzy?@-^JGUfv!398%LFv3K}+?;{{9FlEnoXzk3Ar1j!1AIqKTC?* z3I*2uFXXhIsjzpDlD?3A6^9pIa4%F0PKjaHRrGpN3TU(&yn=m{@?$t@$b(4#ARyq>4D%Hq*QcSepEF5Drc zk1V-viyOvR_lNjoV1TC)-1W}kp+yh(S@^~MLLi7c?@|g40(bvKXMnK#AxrSo`bEbw z5+p5CEwb?t0hNgh2U|Gb2AlLPW&OlBZJ0nQ>6`!yo}drN(bB2bWNOI(anm>zv$pvUg*l> zj*&A>9Hv#L*m}7hghI$ZO5Y8#c|NqUT5=otKW|}IRhug`&ecklbf#&@i5g+UY^Em# z-m)YXRAh_Ly;8y1O1&PFX*Mg=943AUcWof4d=2OITj+oM1@I+80bCpZ_1?Xr{dfKQ zum1nPU;FQV$k3Hi_F~S>m{Yf7^E4f*qM-vwhJ@1+c5Ndm`r2TwLuo|h2+pwBXjChq zm&8e_qL(rJ1#A=oKoRzuN6}F$MU*K0MY4^pwMn_uFuY5*)*!Sf<3tA*6-y!-EBJ(rBpi@xjPIYx+?1TFDy3eTJ8ynAdU;VW6^WjnO#Zm1zT8n^sOOWO}t=1g_ zS@vb|ZIC^7b{1f7UDf|l|8}D_ALnO-lUY(b!fd6CM4%^bI@aiZtz-uwzW8i9$%Y)64Z)j3;(Q3g8K2SC34AgOqnz?| znm&8$x(TAxz5I)W#h1W-az5{0i}(e)!?u!>|0`@5uf)pAKU2pGZe@f*_BmQIG<^IIM7W{H0QUyC9kDORPmR z#6^Bh0}T&n*<@Wnr%v;Z*SI(gDT<6}WFr90-KtY)YO+3i0^`76t2k^a#E1y&r!4 z_6LU#JQ_z==$c}7t!xz@x*sUTBpIj3Yz;~tRuODLdF3iAZ$%I3bDqqrXn)}I^7OYc z<7_&W49e}QlcVY9L`6oK3JV!BIk=}K8Nf{em77IN|Lh~SF+H7$At&2 zat**RMvu4S=U`OrHsw2|5VNtJ5Q8#=r-&*srwyw*EYL|Mt)5=mop6jw<+FuS6?C%W z5~fB6#gU=fVpObaY*U(vW@58pO7_swMI+%cW^AZ8d!V0Orn98p6KL%QhI+-?k+;R_ zU8d273m+V=O~G@8msGyA%f{83G`_(CQ|#8taeV>CH{kz#GLUKh1*3po6aVx3A0GTr zJ9wkQU_eLKo@)q_gd8~wG90= z9p#9V4rlKybISq+a9lI~t-1lvVq2{WlP->6{#-fGn*RQE=irxG>tvdyf(;0;A@HI7 z9enuu#n!=3yL&J9rAGHV_==bw&-vEqxA-ClAL2%_AHwhO{r1c7{r1bSJ6i|8*!TE5 z_+bC__OpHSf#mtz2tL|aFh@->z|l^!?p8d(XCA zZHLg^CibyO9XZxI`P=PhRBPMkS8VURI@sHN{^l7h!DjM7ZkK>1WpCGdjr_k6y?khw zqUqmdZOklR)MGNU`eeG{Y7l%g| z$?a3zQZA*0wMP4IB;(-CAO5fzJZObk zQG;)hxvbu}CM5HqJD-IKz^~a6PVjJq&0kn$K}7rWDD1k=5$e0}$4ygH$wuTqT$s8r zOmJwl0J)Ha<6?^Dr1&DxC(lO>o=($Kw$5{|Y1Yb< z!%8TvIwyEe?7Q}e|9#x#e;efRf97MB`mb#?iR)_wy*7 zo)UcGWH{)-Sp>l`j4iP@A17~5HHb1woWE>uJx^9wKff1m6ABxMP>|CUEhjxp+e0(g ziioeS_Iv`oT73;u;Z7ePjT?VlGsp}~QxhbW=j+7bPwV)BHTQV1d!RdF%Nno{ntnVi z#||}=VF#phdwoQ!_G*)g8r+o=End)i6$>M6j+UduKJhX_*rUam>*F7(GsUSj#!~T^c z;${vaAc1*ZOA#%|a#QAHevRxI{l;hXZqM+7*(`n+ljH3$|O1f~@620R5JgQiWsCVtJ94>Byp@SU5-SGgK52BCWla!e$0+6p! zh%2l>3z871!Je&*N}^vrKRr!z4$c~@Zti0tQCW=ZHj8x%!)Z&G$vHb#nF0@GPHulF zY{{#)Ew4ab77lUn*ViQ0If(OJ{;ec3Gogi_u*$krKM9FpEKK?|3|1Mm9c!JY`H)JY zIFgNsLe{Ax;k9n=iLjQiMHu%NY4A2#EheOt@6Uln=^<$~N*WszneIgHpyx~qZHM8A z${lkRoD6`F{IN zYWd=Bb^3jYMpTFI8x^fbC!&%Kuw|*=qJ(g-i7$XEzP(p^L~eyB{P6EhAZhTVR{D+t zuY@1cBNJlxJiWv=)>kZv=IMf0HaxC>2nFo4;-g0VLs&U#x+)-RP-o#wPuXl4AsoOt z1!SXSiF~#7a$BWKsQXU+@i$4M-umuw19fbaTf4f#L@IVSYC>Dr){JnhqedOZ;$@JWMFn+`ShW+*eGyBti z>$w5XpqMQ-8H~pi*Y?{7kq;d&Kw?g8bP*s{x3 z-fv>SJm+g647JdlHdOmDdDk))EXCzTDT#c9E!=&+yOF%f)1aL59~2knd1IwyP$-mb(H z4k0bSDaHLH>KYQ)>(LGsi}6X@SXVgM%0>?g^+a~tdLs#RG>I5is#>v%o}eYJg8tK@ ziHXYhq0G(6x|3{s%{QYHZ%-7&QA3pg0 z`-1)d;e#K(`v3eU|5`^irvdA;c4aRckJsMaZT--?zk;tZfBDAR+9|x7cQN6>+7z?e zU!G@cQ~Y!WjO?0xzS05-U2MO#q_$qeSaFvLI&{IG_`mqgK750ethRD=@|1Vn(aBzN zv`P`46Hi`}mz{Cvl)!abZvU^Zc3=(*D+kN?R>(%q*@M!gDb(|fo_Of9HWR-ry zA?ap$3ct4Ye%?RUs-AD}Kik_OS*W(6nv)T=NN{y%pfh2zj-D!oI3U=nCNx8@V0n^>s^qug(r|heMZX44XB}ap%Br-((VS|d4(tZlR24j{lrE+-9 zeZv_O!I2j6;5Dv5Fx^mO<@I!+VHmRcY%-tGrb2Z9eG-|c@$v(r=d zIdMJJzVIf~g@-=YLvUw8hjC|ge6a|t*ZZaK=IvDg>pW^h)X9KtiaarA9U+?X_ z+}iuAX@UD5>X7Sj+rZ*Td+K(6)LK7koy|r=9NLaa=I9)ZIU!&7GBWG1Jmvw#^1y0> z);WN5p>ci~wEc$DXBGq4aAv$vf0&0YOgg=Dbkh!-kf%W#ulX5|q=o860{0|>9->iF zusCy?d_F%I>O1ILHeI8zdpH3uFn8D^48Ke>W zFqZg|N|Of3Z)4q`Zw_`|>>MC!rc^IkDYfEsmQF{=$-osRc^A^ez?Qj-r3DK7#W^U? zJLs530jwGl2I`TP_c0wH5rPxH_jNsD3*c+Xp{T8eIB;g?ZIav$GDkpA=floaLi`)* zS*lgdHWmHT*Ei`Xta+XdQ>_sxE?ylwdrv_K$aCK5OYcC_Rm}0kmF`X`v22(TQfp0t zRA!M?$lUt>?Co35?&cOehFdv2E3QvNw`iv7VyVg!Ik#asCaLO5+4jZnD*r0HOD^XN|q(BwranPna z(M~|7WKFX{7q6Pj;++<5E5rcETs_0TbId+FACusz+tUQ#oQ6|F*Vl_TKkwjO{VS?` z)f&{%Ymaq6gBSoI_rJ#f{CAiCj#k+RTjank;Jb&*NP^01u|&9^&K!-4 zGFS@)!^GEg2-F%0k^W5-7vw*(4@VeeSlJ8Ida z=hH!o>9J8-3_o`IZB7GY*|0iGp=(EyZ)eSosnGxxoAW6#bIvG23p zV3q%hS2z%a0_PCRFxu20!wBappE7@q^f@-mG$rGV(k_jV@09#b6BO={0fBpl_%;ta zD9(grZw=Wa9?}IFEEqu%6vFshc{;nkkI5t413z+CUBAc#L1s(h%}Uja@4xNDV0Pn1 zlSkBsZyc>8k=8^k;tqL9@q}Wx>a^v0Wy0>vg9)QG=Xj5WNs>fcIqU(x>npYal-@Z> z%z4p}u>%@#)4tM5G3VoS(C-tc+UFeP`VQeVX@7}%LX7}NNRLe!<`4Ip_ztCUe3vd+ zEuX7TT8Pq-Tz+=r=XS|1_fukA3OiPw&PpAC7P}doKItwjf=s2@524quDB%OMpc-(} z%sHwZ+*F+mJE!H2N-qV3MNB)>`u5JxuXgvg+f4DXw=vR0Gfl(bj9mjly)tr~Hg_D&-Jhw(yj=3>Mbv5c5rLJ2F55|=UOoNBo$ zerzs04KzrBT71c=sEHIJR+O`KX|@t7j2C5w0ze0atEO&^(PjP*l!RE?5{*Ni?4tqu zMVdjCOeuT^3wMEb9_liEma*odevw;2!QTCvVBlaE)H9bqC`$+a%U|GO!{8D|a=~t_$85Xfucg87T@EyLZ+B zQH2=<4H`=UsOirpF(vq&&c=*nAf7o?;v^FkxU^)qlMnLf421ib5>6bo{8W6&S=gfZ zmMW0W45!tMZN@QWiZPopy1NEKSZEtzXtGnY|8bJsP3q4V6RS6STX?{dKX3mP4%xF{ z2cApxNbL(ndPF}(GCytzpkkbj2ShVb##i1eO8;0#z|-(kCZXBK9)M;nIcD$(5zf2Z6uR3sFzNW{7FPM!*7V@#hVQbD~mvDN?=Zl$DGQd8;`@E z;spz>>WO};b_|M##=-R#l%8th4aBg{6cvab%hVgyMs>oph)Q80Sv7s3tnR$>>$Ih;5^J? z+e}D# zmK10d2#&hp#>VXj_hR?i){Ay~Z|m8g-2jnxyx7@4NOpfpw*IoU^J44ii*2DFVVre} zo@Rxf$TSGS7{IZbPbX*%YbAQs4^xDqldaBiF7RPCNe$O`!=3EOztMN0q7G-K?njOo zWE2WFXj=U}HRhy2eCMf=Dp-1Y>Q;O+G7&)YBCzwEx;_69F{B&{-0 z$sNt%Mvyw3WblA@6*~ch{I^$PuF~1~jDf4lYVRlLT z0^L+{G^F-TNikZ7eru1B1(lid_mxv`l;?|p$W=T4)L$s3Pp}m+!ld8-gs>9R4ap63`xHiw zoVkeO#U(rlcB@_kR1@?rLkh7(hTy*a;^l&Y92I z)(HnF=c;JRUT?n)kPfj94+n^3tLpTN9rPT(rsG9%vy=SyQS0H||4g{@U{rW1;N5k7 z@5n^aj?nLCThD$eQgOd3UN!@IzO#=PZTsb$7Y94+&&nhFRak_ka;tfC8>lodnm=;RX8Aj}SYr{x@r=BQ zNZL!t_z1WjJJn!eoUH9|A?*ue6gA4r?fw0&pSSmm<3rVImiuJsT8q2>NTG>@AK6Du zAdXhg@u^xpkx2D{#sHaSVua}_lSt26sQ3r5|58;d(ea>K`?4^Kz3qd&zZ%-<)1M4R ze9KWO&DS|jXGmER3H_XxDfs>B)_F^pI`DjFZ~NIntPffwXT83tRT^upvo8O z!OqKVccEera$q`%MoO!a`xHv!E=A^UxqhtQ4Lah)>YcF|a)zuGkUNQ$n<)jYk>tUo z60kM~V3p=h`ji*M{)^aY?%m}DCI@?29!aEn0F@(@4VE#CM5Q^rOeD2gr7$2YWl={a zHz{fv@HPc`=p>yw2mmp#ERB*19A^ z+M zahk?>pwsEdG&ASPKAe5js1m0z@yX|^ zQahasZ-x;8OBfO|n3A#pA)u* zVqUxSJ*m7@(B*nXv8n`1PclZ}XY_B6(+v7P*=>7~k=}|9IVnFhK(-?#IPBL>^^VG{ zi&T=`+lq`jypwdNoiR!aF+gwebg>kYQkrZgdPM8FhLSQctV=bW&Qu$;8{M*^;iF(M z1u#*kn*nbvJA>y+69k%pqC#bOfuJgtMU*(Ql8Kxzq$g?#cRJ8cuSXs?ge&GF%sl$w zgr-{yIt}eW6o>(V4*F)tzs$k#o2Y7zL^R7(H||@fWp_8jiA$|5C|)H4KG_i*3v=zf z+}YdP-P=c{6*}BA18r`fd_KVpRJooN;noe?3>$PbAbwfbDZH#yxs@jBihR_{rl%?r z`^wxQQX?Fvvd?EkYUl=|*W8*PZ74icQg|+Q)Z!tw-|W3ec<}h=GIx->dZYu$H3lO( z%W_V1uykJpL{q4y@NiYXhL_QPlGOs3TaY$)wqEQfKke?t7qe<%dcgf6g@v8Whyox{ zeqB`25SH$ci`--`P6a8{F%u}gUBo38Mi%6k-Teb%7T)Y{@8KUCuebL1f8E`CzU1Oi zrZ+lzW;n$Bq{R01hMjpIxEl3gC~iMExUBif@nj+tFq^}lK=O%4#BpB`M*))W^$bO< zp2T%wBfonW?Irimr-NC=_;#n>j+f3#Bje-=QAIV$Zb&9#-Av!(flj*DTkS___`sj8O4@@4+a6 zKglKpe;*%X1qQF_>maVg0XLUHZpMI{t6Ci<7g`Fy$+~i)+``pa#F$oBUmu}?JhYF) zFqcDe20%{VMM8A0kNy>{wi3_Ta!&9b&J|`;^G$0n&yM$L7>a5-m2mebr#(;(mWCjln)xI3}70xP6C83*F+2tx?q{Y z4N?URWdK5K)^ByOyFBZOPeNZo4wlz^K-_G;Va69Z&@v#f~`ODDN_{2boRwc?ePhkh%?3 zxkIZ>OxVXLjMQHV9!=W9t1kd&GA^tZ3l=|KEIk-~4bPJHB>m$Y`LJuRr zQim)RXsMyD)aBB}O#{MCt&c1Wl*eBQGWAE;A|7cUJM=;eIi_2jov{EfU0sF$#Y4fE z%H<)ID{h896HKbAOS5Ti1S$ zFhcfTK4`6zsSYoFr&V?QG3~2c#@6q^rGgn+F)`Gbx50TSz)Y`2nfgm})yfY32F3A} z0H;6%eJ0QOglT9TZc5{@lMjWJ)+1H0uv3pZT>^9(vd5)KkI!>8?v#M1zMmd{>i5J! zY;RR!P}fHeV1Asb$ zU16YY0b})<2-RDJP<5C1O`)n4NLAl$B8hCGgl=C8S9Nn|(5gJ#^-&zCY9;2I0#32wpkjC;DMzTr&j7OCQsxY1N;MYoti{=7C~G*sjAZ2*u0pbU(iwJD8(kkM*G-29uPM`4KGoRWVt?#i=6mE% zI&=wG$o0_%Dx{Xcu$ncG;#kAhflCP+e!3&`a4m$DXGKLhxD#&4B@;oihR`2a1jMlh zWQ@Bb5Z1zE2!z$2fMp=8)Ext34VP~z5G#)mVXRcyXF^%21FLS|OIKo;*6Sgy2!i0t zT_^npz}8?U3JYK$t%XG}kXBxZYap$w)U{=Sts%0NG)0PSrFu&E)@a8)v^COqk8EAg zf6B3Tixo}=-FhQ%Yq4t{*BbW9!&?2$HtQy;JzaiUf9e{;TNmP6od_(@G~Q?hcq>(Q zEyT4rnhG)A4=Vz0rSaV&3eFlg$SFa+w#NY|U{AQa|W9BTnb z8jiC7aOE|u1h`T!t3a+dz_?O9WGgLoFGRUU4mU$pgFz6!)ezPye5(Rn71c@IP-JJ3 zy5Ens%{x0Ow$JcZx#*w|x3~|ts_?DUauHiv?7_oG4+PvAwlCOLKLbl)TbJs?`d#jX z>&6a>k4xiPD`BlpeYY&Sb%98RWEOc;t+Rk}btUDQDJj|tKgph5#_@at$klL$PI_>P zgD@~K%F$lJF7ANN6KLPLRs{1V1 zt4r<^nu!_y`Wg6Ft0Z##Az}UGep~>8t-`>r_-uj#g)L)YZvcf|aWUn;1R~Zg@AA-C zPwVuoFAt85VPpM{P>Af!5wZ$ZEi9qY^O5K|PO8DOi?FiMZGkm@0%8`}m|MWbxOr#f zteZ9)QeJnKwqH^3a9lNVm+`hYhudm(*Pw1I>^uBv z1<yfjhZ^}L172&SLYZhR$(Lt1pRv~5mV7>@CR(kU} zkXZi5_&6WTuo5lzZ;k&%{pD|z|6%?9{q<7(&j)wE|BC`x!eT@jt}SlT{@c2yuyt(4M1oTusJXq9{xR{JT(iHEE97`;=~1C;~*E{+Q- zNIZezDG*`QVV+7Oqb%^E!l+8~z{0xzIw}dCv3?`KiH) zp}k|&rlJHyI0K->K)OdMsmPtD_muJ&;s0A3T~d0Uqt>+Ry!olJ4zvApNzt|JP-u$S~RKOo<^JXXB$)1atHe%tUOPtwcN8mjqz?G-Lkc*A9~Pt zCX+VWr`9+YO(QT{_;di)hUa%gML-%C`if9W%uSaE-b^?G&RXRz#&zVhU?{zCe{Zn; zac#C={bgrw_ti^ab(5F7&v$;>dA23{vwR|eTH)}F4!dB%rJZltt0t$?juAhDlOpTR z$sCuj7%~ByOhg-jA?Rm#uGsev!#_%8MSbW z$Y5m;BG?G0i(qVU?u<)y=(Afliq2@Xqhc>Q{XXyGsd9-fTpusXx0uHd2%wLyAbZMp zJ-ETDx-R^ETFMmSFZVFq#f)vvqpXitQl4nC=#AnK`ie~$W*s7}CcltFV?-NsOMz{; zOg$L?6i*IZsu@|ZyOcXVJ6g>qxJ(_A2T4=ob171d*5;%WRsSOw;^K*2wg(iAFL7jjC#(pT0M4)dKV&n$fiSv2Mn%@6Fk`}GNvrlqlAW#4(pJA8M5+rc zKF|`ij=Ll66G_dBZnyiuRpKTUg?No39MZP#WqsM@n6U*ZsoT(wI7ldXJRn`520+@+ z^QJ^7`H%M>u8259E;OA0Rfp-_XXexgD$&pf0om+mCxet9wBga_>C(0oU2@FTjUqvt z(vh^GU9<5?RsjBvT-#fOsMDeQ^sqvuX~IcOr`mc1mXAw_HpwZY_Ct5sqm191QJQ&- zn-QotegXEjI|U}iCH_FJ5yy=vkQwlNKFET*G9GsWSMZ9 z3PBUq_(NP5!y+BE)|iQXYZ73_SI9w)rx_-W%Ng%F9*{K?^KVgbYMhjdX=f6gWg>_0 zKsXHNs&}cjMZz~N^v`yq=Yez8^`kqbO?GsrQT&*4p;dfZ6*&NJYE*e8E;Z1WJ92Ev z(>pYo4CkiBcNf3>%PzDTFiI9n7Y9 zh}{61vK7dE1ubM_vPB9J6SiQKr^9z_#%E+~kX|wxCfc(gFl3Z8?jE%sN)T)<-WSI5 z?|BCI>3o{HoDN7}&N^}rXy#aiL%Qnx{MGT6SE__72ZtOR!txyy3K5wgRVW&hq)|9a zuoUQg>L!gf6H3A31CZ%=olYLH#pOq{7CR?_q8xKs677+NNc+WMCw0`&^Csi#$|n$y z%u=IiO+9XcR0qI^VKg{BW7ojpKz)gA67zzw1v=T36;ASTXOf>~v(mSbP%&oAG_7YK zwE}}tL^gIVW0d8uw9xNT=ey}{&%{qKh}92{THn(pX?wil4qx%x`>>6kWpsy51MZOJ ztX2h;-4Q)SKA6o3nZr7s&TxcKFL4rqL!vq-G^&Zcf^hc3OSO=>$(BuqtP;IY;*;1Y zcofZU4qJ1oS-kVq9pJhmuX~+5a&R z%xx9J*>S?O0A}y_Tq9`uapfq~3Q94u+DIT1kkItF9j&HG4P@Ay8Cz_wO;j5$j2OAT z)2LO2>YwS>zC_kOpM}~vUMF@=o~g1ZI65bsywVSa=`5XEQ``>K`PaZ~66eMntu9F* z=3~9?;8$Dn&@^C*zsBsI)1 zVcZYmxGCz#4UIL6Lx5j&upDPBmV(nONM4vFwDaUDj;#U|I&EhyVq;A4(hLrj{Lta<&GZJLp3At@suY zrl;gHj~+_V9Vsp<5_P~EcPeZ<)ux@6*2BpEn^}0Qfk*4Pxt&LX1_UOaRcGMwlL5Rb z?J?Y1jG&|WQG-X~U5ycHcgwjw*?p5N>+olBV-!;(RF@Hv-&u>gct|QdAmp zU011SC&C>P^br_rzDV3|yJh!})k?4`_!iJ^)IBhP7DA3c#J7!g5wsH{mLefcc-t+S zsGFOKsC6x8Aqp0O%|mjJqL6}Tr)VC!);hE*-cC!|h-j^hiHJzW2_F-*5ZV5Td5ArO z#W*C3G(g6dH<* zXMm7!cF;#BoKLeEc_48r2ce+T_h&-FNg)m&m0c~FD{nng^O5oEA$Jn?o&IDylAAzl zPP(}@>CTLi^M&4dqmp1v)#;>c+hE2lW=x_@I_?`1#zv&lblzgtfXUmEW+dmYRxsc! zZA=n>9x*2ct`jZ_-6z|Xs(M#8FBRuPJqDMV^yh==5;i5_oI|^kH!Ix|mzsWLy>4hy zaz{T=K?|N>b54vi(_Cp=DhxibCzWkPcN&qe$)FVdmc;*}?a0u%S>laIycwM0U+qY$ zJNI@S=C6${$upq^6{YaOF@w?r^ddsP$_jfDb;Jilw00%mjPS@eGAcRRX>CiEy))b# zU)`SFYZW4R-Pp8ri*|yuEqM>Go0^!aV@EkoMvXMBhY~0&Ffy%=oP|KcMv95aZ`vDL znqW!cxZ|2yLsMd13v&spC=o!GG&)6wV-A-Yi8DL}YjwTp$yR~Q)DS>$9@oRRAcQ$m)OvqrTZ#B5ROF<-Pt!PoZ}8Ka6WR;59u=IrYt2%j7y9QLrew9r8s&{q))r+=QFqE@ z9_>&j-rtw8J=s zEc*Z4yZ_*;{pa7_{|6XGasToDa@V>42)g!Y6$l1*3u6T^Z=U4m7?DO|iIb4Xp@xK( zEb;)-dQWyVQiJ>y6@Qh-kM<%D919%$$yO#8Jv`m(oTo1Rs{N{k6mMb>V;sRsT!L{h z%o5`(ZEc{w+?M%=OG+HO{qXfxLRky#;sQI^V<(y^stS)*55%pA6;C;a^nq4&g2|)R zT>vgO$W4f;!nsmeBOoc&z#RONq8p9jm?JccUoyhWpF(>kJ)JOPu+~NI!$!* zOy5t2%xiUF;1@@&#QXX%xI^*_P-R5lyEd>I8m<&ZcPH0CC50gMsQ&c9LwsaJoY6A2 zT;SkvDtZwJzrGy}W((fpOq$mQuow3$0`|ry%|2S~+8^X?f|c#N(7he64wAdmIm*Dd zC|Vd3S-q1BsBz8g?1pX_zka&qWE~ZhCpEH)N*18g@5`1EkFm&Mz<3aY6PyUGh^<(p z#g_O}q_7tg4sR+yCx~z7d0BbRVO@)ZtZTrFJPGHqWC{)TMWfh~tTZVLv8HFc&$rvV zKVcyA=Wm`Jz+(5wM`hrXRNIu!r4yi8*I=Bydnq>F*!2p@gv(q(;qj)~XfksOFqj-T z6_@BSFVQ7BA zb4ND0oRaJbOw%m&4ha8l+gIi`vVDtlT3$^qd$ZM?DIaB0}4yFJ%-o#doWs+PX+CJO(dg z$6xDM?;6>qJ@e#BiIYf|MA>X?x6!}bzDn&vrv1U}aC7_l&cW{9F|OtABrS4WrTN6Z za1p1a5kiz;eMqKGXuG;Okj2rj2D$NX+-q}P+O2Q@va|nY>jnK}X5m}+fp;C<-`-BP zUhMDIioA+)=R7qiy?#v%_rDqciMcqw6#VmA`TzcU3IBQb;r*}j|8I!@1Zw2rpGoj= zA^cOo4xc2fFGhf3%@5EZu7nb80uKxzuL|_JNMK)gwYlVG2&GVQT}(InjZ$X9=qT*# z^JI1v+I@)0xa{tAvnaijISEAZ)dNA7exmShZ1hXZ@F>EE2_+T?@f^yuo8B^Fyjc64 zAa4?Od4ZlKdd@thkRTT6ub1fyme)^}>`O7#QK&D#t@t@`fYIkTo%o^>I0_P{%M-BL z^?#z!?(w5h(Oua*3v(37*2?cFz-v8ZM|NU7;mWQP4K z7{OXp%~oM?ppN3=XpLp@DeM6V(7HHF3jMeI7I*8Qtt}(_N4Ddvyd6mauuuaay^rn6 z=)x2R4wT02%7_jCv%8SEioBZJpm7brs?we}@?4m^!0+H=b5W--?!)UY`yYW?s z^KpayuD=zRPRdF|qa>`d>{>#b#0&Dm! zj)SUr%F;u_@n6U*Y08{s& zjm>ws$r)94_x^f(%&!O*D}PfUyH)askSCIJYg0U8EN&4A^++%QvM5x z(cW}v%Yr>=9A&8xqShtbl!@oDpd-`?ABB~`e%LwAKhZDaIhX7$V&v2_qxuwuAzgjf zOkNNkHswl-1gp9E;FcR$wCf8xOqwut<*^A{&1CYVh!ZUy8(z;+GmKg;RKr!U9o0i8 z32r$Ub3!wed^A}&icg$DL_BO+-^Jik1R;UsyuZEom#u@HzicOOUO$IFUj4j8j9E{= z9y#v#M>07*Bi1-ng4PRxQ2*s3ppp`hGNd7HzLdSt=>;)oCYzn|FhHs}br@rs_;&Dd z<&=|@RD{Gu6r5>VeCIR@zKw3j0e2-pri<$?5#T&teQ=^XL4!L{Z#iqKM`gK}zT-{f zU(E^TjV+k`a?52TwRVtYgEr9#$bgu?(e56V4rF`vjRulwl%);^WrCLvSq^Dy4RYr! zDCC9r*HiE6d74Qg7=^TQUIKC45`QRly9r~!F;RW);^bjoAIALhcSG{hC7}^VgB5mD zX{TT8xw$H_|G_aPAsXjOLHb8`lC9S}=(@mpW^{u##MkO#O#U9YJLztOb*cMKbwP9% zCq+({c;XH{jOTSarGtn*7NUh8jL<7b01d;=^i&r?mN8F<{cJSU97CuNO2@F|Jom;n z9S&J}fk*NOhOAl%bIzU=vRsQBY*{W>Y>GXp9b2%lgr&@tg&0U-yyQHek33**QU5eR zp@k5@X(Xi*E(hoTGO4p;WLUril3A8k5FfitpQNiZDMgDDOYGF)BX&P$vWC+->bxI} z<|E^lj`>}O!*m#K8NG?Iny9UO-BDQICNXRl<1+&`Yci80AY(LlNR;*f z?Y(NJ_e5Yc6i2GQ0VLU@S6KK>$NMea^SZ9~h<8Y+JovhOrlh zm!-B~9@ylrgUmhAI!$L(iJ+k{%AmANsqBLjpx1YK%aiCHHmDv?$g zFqfks+L(^EM2T1#u=xlt15UTXd@b$RH!gU*+n(gmWijIOd`?jZ| zp3*)JH0{cAJ_Ke~G}?xXh$S(Ei&-OP8Lajh&8)9YhLikVx+1WFAku?c3y7=h+rDA| zP%S7@ZfU-Zy5tdVHC~aI5*tTpwSqld!a_V9EDDehzQ5;j-E@yYp(&;sA5lnWm~<4u zD)ZGF3Ub!TCANr#13Dl6i16oJR(v7_!zAUw#Uo;#hEF*)kQ!IPT9^<(;{Gb`eVVd3 zX#_&JU^(5al6v6Hp9-5bH%cPQD`kaS4t;0wB2QTQ> zWHP)Aqaf$7Nv4AtX2HbouoeDGnoltWC%?iTkM(l>1!UZPDXRd?muY`69~Gaz$S#VH zw#X^S`;z-|M|BzbqbI0$v6B_PVT0?t#IPifCTdu(`K0UCO zUuuR}qx<^B?q4;&*miBj9DT>qAkU0t85)Kcmf_ZqIHNoC4Rda0zErV!TAk+Z_GNJ;<!t7@NW4 z0GIEVY>5%O%+JDZk^)}#3CYYP%vA-s=71XNv5gu-kQ)7z-J>Zxs8I5bfR+=sazdL0 z)>C@86Rcv>Wsj6NU8Oh<<34MEgJfgIQbh9p4)iWhr|(E}fgzVz0}QV#2d6<6+|=#Z zNpCJF$m$>(8(dl-wvhBi%cv3fMxA~dwT|fI-KWX>nUoIGG-Ri}=;oOLJQyNBvyMbl zx(L%)aX2P!%^*>30~+%R$B4)RPy zG@@Fpksl#Y7u5&OvnymfDb53?LgkuNjI>?FT-Z26Br#3W>1dGW1))yqyG=SEIE#z4 zo8abwCKgnLsssw!;s&>cV_--}v%EKxGM#hWob60(wLM=b7l#?F(tYeI>_Jg3^j$_E zLuEBxk5!BooLKkYJl{>;>~H;ySAqlBc`+&4WukOWre&v8Bd6N<_?+O7qGsexxxBK% zs=+8OfNdi2r7INR&3N#hR-Jc)Fz^_9BM{)Az0;JHLL7*fLSms#Fr&CUZXzWwS|=xR z=R-JR(vW$dawlLIR*(C#|8+ywWSl=`8D$%LsF3N*%Xt2lk(y@2MTUnp_1G68zjCiVReLrUR$7`xgyciMNuo3eukHrMpBzhnRf^>i=(N>q|l~q z1!Qp_4#0VOnU@0V?`k@N+1WIeXfI;MzQ8SklMl~;dTEHiV2(J)UGEG;D(JkABdORg zc1Vx}ZFm6Nm@V4-^TB4B_L~Wm$E9l0?MQh_imd>r#Iinx;xvcHs3hJYQ z1cStzL3OQZzmPDLb|e`lk6NBq0cVXH2~OxZ`4&-azwEx;M$)P=TFF4D2^cNOtV|_p zc3`CIY@;riPR{+2_UHIS7-%u{W8_PTMpHb^Cj(^h!^4c^Q7|$)uYP8r#C}L6qg|Gy zP9A5V3RL==+5K4Xr}RCdIiW*Yj=XPg*qI7XZL>N#LxRlcFS<*Vk3zQ%k;!Km7EmWj zWjjN4B(#!t%ISwgk<#8EqR?jPe93U6eo_5G)3KMp()o^x;waEW8wD-3 z(sUvKhapBYh-_pojpeB4)YgneliU<;hNp^};NEH~NXP~7tqY!?o*qkDM|@69oj zV3A{zdOk;dNX|}LYJy?Lq+v|7Z2j~$t8u@O^5n7@(aXyoM(pUEcCe>93d}btJ0-&| z(?LaYy$Z84fLWfy;*Mvj5qOABA(t_oNn$7sZYe>hSdQ@$o3^eBU^QVbRgs?)1MC1I zn=#%VP7lTgWOjpuFXR|9X2bm|7?YC#Z^(K@lS|hrY9c#xL_vU5IzvNLHWTLqS4k-3 z75mP14=2Y(nuCVB&?U-m!B}=72@ia92a$pK#@bqF zR=l&ag4-GHKOlL~5N0|ClIYJkOj`p6FCe;%5hzH;hbNjq-Q#yaHE||CgJ@|;oV~ncuZ7>;B(SE z5f(nYJYkrkx+x3}<_Xw(y@M`H-s<`P*n9W>CXyswc>k3@MYY&nOEa=S#z42NJ^^lQ zcoEj6L!yMZYOS}*+I8g3b!R*Qv#z%mL@>akb9P*wdfZS1RE#JggUqFX@#S=w!O8>C zK_ZsE&*amUPu~ozHT~cU;3MyD0Mtyepc|w^V5CrPVUfK}x+JbYM`HKtXY&^jFnN}0 zo@y8lL5&lqDdPvMAMvH(-jZ3$7oTEGkQwGZW9H=;`!M$J4D8e+E@vU~IjhGYf8;@U zM(+&4OqntlE(EJ9;z&x(Y))o5Y3nHF{SIn@XWhaZKPJ>raL^box2ciMbMzs$jnH^1 zb-{z{OgKN1vlGPjcb@J*%5$7s@{(J=u?hK8I)6Fy+g5Tfb1??%x5gp2!T0+!*I-@SS6DonzYV( zp~y5MS-IdjYxpB6S;7#^6>1KmQrMm4CDoI#B`$4=X)BVb6N@De{DX>u7fC&iC9$~( zadRzdaEHbHOT!JO8Go8JusfhKb|R|^Z)!KqpPN-7GTYXv$8@gRdVX<+pp;W-_dFet z!+6XRJDRi3%ENPWR7~L%V^C@_Bmwbc{EaUqLtnelMj2-_G79fG=riVYQArx^%!?{P zO*5cl>Kt!1P&?cfDyxkWzNEU1QVAU3XbH{RNSkmWlq=Z}OH{!v+HFjddCl`u;w(dQ z$hq9ku`rLU{BpQgc{NS`fRo0q2S+xZOs&2@iWB4McD#M9g*xS#YEypwuf7wZ- zdVF{9`QyJd7l=Q_NHMTt4Vc?Qz!&A?`$~t3>~xnU-cl{%OkqH}=Nu`-SGnt>O)7dy ze(MvmLR3`al$mq!6bK#Wlv|iz-Hj2~wbghu;w;r+7jG6`^w|d^%Wz#;j7dxLqA?vj zcu?11I>~eExw7;2FKaVI$psDJ3%QH}e&i9}r%4W_$>b_+oq5*~phEHyf~CYzUI=3$ zUo_Q>R%KVE21@ZVZ}XuShUo5aCF8)3k^l*|+1me1%DpbP@R+ zd(3?QEJ`J0D*?M+-f@+BYzs4_B#@9J5%0>$lp-jw&IpO{!b2hxv_51*MT7A?({=gi zkQZFM#huT&dXpU%-B%ax?tihem!Vf~MoTJ6B+3(5=fsfjFA(Ch%6vrb^BYq9Q>5ez zP)=8kYQDOTrGvjUFSzILj7&6z%{DWwrQsh>DCkRd?n2Ci9<8#@anJOa5qmsXJHIzq z;2@8+OyolpP#);AWCUP4fLIe|ZUBE~iw5~&i^o})kf38D5so3vlAqm?k$4iv^T7~| zINnpw98s_zfJjRY2gytcg%ZQQ4Lw#Yfp8yUz5|XM(SWNWd)4tJ(&3!s?B&x4W5+k<4u>=uA z3_-C*M4IbBodHSI6VVL2GrF5LQAiMF$@w9ZCrXwT2Y`YL#fYL};Z=5zyPebxKbYkn zi77>_j80cv)Qc7s^jZzZ(V40cL-HcyjOb!>;}%)K3Yw)Be2Ez6Rb3EIRMQ!Y%Hsl# zD7ZD~c8kv%4bIj+W*Wmu9#Ck;931%|(9I?nHhU<=3YBwll7{;V*M&HNc>3ZB1llgF zeL$yy@aN8sE$m@O<`_!Y<(M3|LlJM2`T3hNu8&SFIDb?)VnVJicPiMmpggNsi;wVK zt3Jb>i5W!K=4DKchOn8ta$bNZ7?B!K(N3U<`78)$E(%i;mk`#dFT3lAl5?6KjaYaa zi1dM>)8x-dIa|-G3V-%t=E;0%X6=bIHOZaVraj;R9i2397Xgf$0?HurrJ*0F$6F6I_KC_oIh~y3 zn-)uA4#`U9VCf6nUEgcRX+Ai~Z{Jc5TFA1@!vSLP&5K5npzhmWA#4}ozuXK4>;n9k zyASU7Li`u_=_~%rm&1SMC=|hfB|OdWQ6&hJ`uG=bq4^6gxq5PX5<$96Aa=FL~d!A zzXZ1h9}#Yg>dFUiq2C0(r9poc(OUrY7XH=k0(y(;4bxo$1eXRp2moAE^9DcVM;27q zzEFz0yA+6v0%rp}F@!F|d(oCK14}jDns_zY((z0N4McPS5L8>V8trvJ93i4hSef&h zz%CZL*T;A93ge|^(^?kaWy!gh!MrqZFKh)xZ3{0>bRpV{_oW6F$P#3j#lSF>Dq#BofS4|k5hBDiaHHx%#Mo|tH?IQpCU99G z1VM@^0gB;Dty0pIaAK&8reHhjcj~~!n43z_V*Dl!F0~Rg#wR)jfGXxW=_igK6Mz}R z1*qU5$B6=wA!e%+?;6!GG8VJ6HkwQqAXBAIHbll_TZ_M3169WV9(RkokE#ZiS%@oR zY3GUnGlDPUXb^#Bu8uTgF*qZDGyZB6;AY&SECo7aA;kf2lwgr9(kgR>1{H)~27d;O z7LH=BheD$eTSG9KN-Ub<&5({y9VV%c{fCF8cr^aH2WT|@s@KJ&adIql=Y!=caGKtz z=M~$9@lhfzfD*^?X;gV@qw`X6<`_PK<0=&xHD=BYcd+=NBvdk**VBixmBl4EV8pDU z?FI%6^c2Ib@nCE0X|U)u{uiN~62Y$VSIkN7ZhE_8bECQkbi+dOr}Q(jkt(ea@id=U`aN%meYlEbYpVBSMKMA3??O$5WU%B{$U~ zWSkHf$NUtMhv7>cTGvgM0myNbp5nCb!L~SkFFCu4#@N+DHPD86h zQa>XJF?70`b1Z|T(;NNkL$156<`%-}xM|h~)7cnNV^{;k(g`@8M$*whI&P?C;B@GQ zL+#5))3G%UI2qbU)zQiyU-WTA9e&Zfs<9PNq3?`RUq`??_zKnIQOcbyJz|Nqh_KTe z*$&vS5G-O5UdK(4Kz5R}K`gJa9Li3pDmbv6dRRNw;=}!bUmt(RS}P76e=+Kg*fHIg zX<0B2Z$i?g!9z}RuL9s9b4#RnfDgyhogOE)AV?98CxXVK^cW4wQwNjBOn@&{!xK@* z(1Lq?ZsM6M9XOBsP=e^8#VQ5q*%;A3P@aom^hjrBt9v7j)WcO4e4rlwQQ`DRse=%w z2djih-%#zqdvpb`9xGo~V)kr683kHa@WB-p)kp17Ye@&-%FsQoWQdaku7Xgbwj%_p zS*wBKW3$hl<)${hDKwvJu8YW7=KI|NuM6xGt{T1N*^QP1_*v8NKI$kgSiyx$2ZnzS z$7)zYgdRCz&O#hF&f7A4P9nAgze8 z-68Clmtn7N0QU#`QP@8X*bBZ&FboN`FAx8x#Ej49Dx4x#cY^;i2oT*YM)7xis~(y3L_7uWo|SLKj?+*} zPzE1_eL4Sy)r6rArr5bL4!|M?sSD=H$U&ZF?-_os4;=(Ty1fx@2tml+S0Rv)(bfQg z$9zILj!pO?>fdC`-Ua3h+Kv4t3ndF<*p4%L_!DXt(s*CFp+e}6XjafayyBE$z4$8 z=tNFols0BLMF8u-60& zliMEMwgoUp;IN|Lol>A9hjSF~v5>2}1me+}?h>ceRX6nY@Q+qVsODs|LarHjqgUw_ zI1vJRBtOM)j~e16N)YhDYu#Z->w93*L%9uty<)Kg@UjTU28v))?_YQa$ zI6+a-NqiDPzdb-aGB@Q9(vRk7DxWN(aESX$pIVeFLY48oofYP+mLVTiPMKkk6zY)| zws!^aBfvgl5ez)A_QnSgBo772!64N}LF%qcch;2D8>w}I5H+MBa~I_7&^`^AY&8}V zYG@7($;!}xhXl*v*~loEq(MTFws$NIjO5gq`uIq}cU=o12^B$my@SWBqhh55mCuPDp^b= z232xVAsZ6q3N&8=tK{Nm19YX31)&O74zASoZi*Cgt9S_P#FZOOB8#PF7^5JPB7R+KM8Tk;fq+9r@5tmLe?;AE_P zbXC|(t~+ssCxc2CjxY8D7%IWGrShClf93Z#CP&ftVavW<2yxHgn}SM__z_2r!{w< zl*2u#54kSj6Cpm?L2Cm)RpLHrd29*zCr@reo`m|K^tKoWs?U>xRtq}H6R{-ZlHsEy(A`6j0&9l`kix4y1d!5Vqlz5!*h@_q zse;jKSvV>8g?rho3QvmQq$<&*mNcU{n1Rcf9gOjR?Dp<1V3b`*MW{u zHVFTwkTI;agR%`QJcegm0vE9rqrz?jU? z6c;DEU^KvjGUKglA~(e3AxU-b@KCfM8b*pA1vZ{QJB7?r3@u?7lY^3y^VC2>Z4j80 zn}#>l2Cj>W9$W%Z%43%?D|9VrscX^ZU0AB_^rRMf7RW|g%Z_4W#L%0R=#cDN)|HqK0aSX211ruSgS>qM;L*1xQMT2T8ba zLm5N7#oB|@Dc}%p z{3~Kj1%hIu7Ti?yD=gZSmB+3GI;D4>w4Yxl?=2~^8(E=GS@@}Ne>8>1pr>q~%VAJC zvezh7@oS_G2o-wa*PMVR?s$twRr+C`(iH)tD*9Qkh)Lx~k9dm_fu<_IQH#h_;n{Nd zRNV&=bgD#M5&5Jj$yqCjTh0oUs*utgcaFhS1#j0ysZy#=ZLlh32H?RJT$K|N5VXp^ zYT=r~6c`4rGCyyUTx8R6`REC7)k5Sdt7w-1Se5I*bp1P*D3ku!#w4)VtSn76p{#r) zE6sW;0IfCzt%l{>9)ej(bhF@Cxs{&KDFR3wp)^3pL6j-vzaG+5R|^bQdWe8o5tfx6 zqz;gk-@SveqW>^#&r_r5uixq2FU9bwhyMgB?~P#$RpUS1xx0REBfx*UztOw@760i= z{HJ@=wAn=*K)yd2k8i)bV;J$>6?iN}Xr9fFyC;*;?Wwsj(#yA#+f#TI)QQ{t`bzik zm!wHlceI9p@JX|0{`)jF3?3=735aXWrhvx*oK$ngl_g&j*zKb=i&=7;0_^Zcg~w=< z6RWB_Ru+$raimnYiS+sk;PmPAzotI~=m~2VK;EMJ9S7P%=q6X?*g_vQSN6a#6vsQV zDB{x4))eu|1kg;jzW)>SfHkFe&&QJ~%deRI4%|TIa@0-s9Z=2KV#uoJhXO`u!;iS+ zyp?ZUkk%PM36f8c(?`NG2DmsdtxB{3073PjcM&o)p2k^;G%#@adq=CBaf}wnNXbSs z0wN309S_FF7^=XL2P>fP1R`@zVu%8TavDG)up%$uAGsh{yp>G5gTtSmzdTG7h!TVk zGpGucc^vu`H@(#+lA~;C7zGqY^chhmn>U(E3VR4(P7g>)#3Yt*9(FsH;?+EA=&>t$lD%j{IDw+w;2XYoQ1UiB%o zq7w{OYzdOR-GjsA`Omx%;DyG7-j0XHAP}Jm77?-qmVB9ntR=%NWwfYime0JL9Bc1$ z3<1`dG%_reBwu4|2$j~G@Ey|7DHL}9WQsp}%WiTKt4L#G2|(c;@8kSHg~k>{+TWw|0mRO7}VqL7Zq^vL~B=<7HvMc{fuDM#5(4T5XDRGtNf?sKQK6_=h+vr|J}R);9e;I-FdM7RsQ>@ zxBtD^e*Bm1Cp*>zcv;H;$h5~cz!&rv`RzH<3#=5~b1d@7si+v56_!M-vIn|BqL#hK zkW3BN&BT^n4Muc9XTVV59gSRI6Q7HAD;KRR1zw=;(8_E*8H^p26qc8=wP^~gn@HX+ zg!ZAUoS(tln}()TEwxQ99qWq*$61arkGTG{_(z1d z=m<(1a`zhgU{zu(Ee65O74u#5j$Y<(aiPZ9d&nbV&*%w87@k|D0s0}In(d?1d|F(? z@`YQo-Fa*1VFwl$%LaL(R$}diMg=(=oX@9R?pIadetx)<{JeAc_!q1VsX-q&83VKU zF12^B_W5A1XK=iD2ZH88z~1pX_E8-;0jagK(%MSL4)7d7b5Gq)LAXkmsSSgHe>dueH!xj7dY-g_ zu|j1$d;KzUGX5}}uJj8tGGsW*PTq_u9s~*Z1aeNKs`-D=VjA7nLMBkf!N+D2Mnfc6 z7_Y_?tc0{QYvuvO=uPQ>kKG=*tC9F%#?w)I${{t#3XrBTNzEPrxx3xAO0`9^9Gu8# zv!CI6FtcqqF#5gI3ZnaTgh-F(#bG*4T5uOZ8kuwnchVbkZJWKqn^$FkntA_iU{2h7 z(q9$c&m`F!jOQN^sRyIxBTb(l{AWosTW^-g_U(A`9x1^G{K7TjV{{s402msftt3KE zmXsth528y1B_Vnw67A`;Fn=e4OmZf`g?cn{0KqrnUWnv@B1I*`dOoIX1iEqDXWLwS z)S|HhggR`Y6~Ix_ATO3tQw#_bq7`Z0@TfqSO852 zgJQC~=yeI~PXjln+o(|MY$R}?q=3%u6Qu#VPUHeqCsGT_4s$LLk&8a43LVh*XCHI~dOwpl{J{BQ^=1WQUpHgm^Qz#>PnLgNmMS zMk|!=u!C*^$L?5Xyu;rb5RU2J9)QGw&DA&vwKc^c(YvTH2EZ|ORYuuUpQx_z0!-zD3Ha9HG~O$ft8GeqS@bGTa}DpJ4pP2_(ZR&P10#VeX{aGbMTjA z0J2Dl4P0Hd^fC$q4Kv2->L{3njOi|N>xS>aZ4_3ud>D8CTvgu;meTE5wbt2Pm}{W) zg|Fdt|Fr&JJ|ADg|GU2NAk6=GaJP5wtN#Db@Bd|eX;}xb7;nh~{L>&ezg*_-Ix=%G zI_2PaFoe138$5-`=2_7Jy#Pd2#BmFkYt*0~#ud*)|($ERzox}@UCbo+b-Cv(_ z9pI>;+ZWyEuHw%1TsT;Gso6W~es|QpD=r;KBVNv(qn3gTEG68hgQAe-@o_Y%uvcvA zzv^W$SL|l;;oJND`x{4VLy&X$1tTM%i0Bk+s?{}Splhq5Zm#?Z3u|#ZUN##+1VSdx zTO>`D=`Bs=o45-BWwvwlK?%xwqaBSbZH%Tc&Q7Y{dH!0Yl1LPM!swO)gUucp7ghje zOd%PDY+9fj6o}Li(-9`iI|Qj=HgnSC;H59|@cbW06WZ=CtG$=%RO!1S>mpSHgaFv_RHPbt_%7&)zKAi?yg$b7#VR? zeED@9sXA^iYi$7_%b4>b)w{BbH@1eg))#lI|FU}v5^@- z%}ZKtyudA~a;55pcepE>IIekmJR=Qx#vdrr&K~^jAhF`CkMF{a0_)N#&#RB>Dp0Z8TjP0uwCa&!wxk1;+KI zLubPZ?GCTDP+=v+q!k;-uL2W>Gl=cVEC#<6M2Ds@;38d+cJq6{9Yzp^=VQM=4;?l`Ne5B3d2J_oxMMa+ZO_gG&gNbB%O!sjDU7LQ6yr z=7fezDJBWU6F8Ag*JlBdhPj$ZuEFEwF+JRw!gU^_1Z4JbW;*_3!*;w_dAztJ&lQ8& zkph~Xq-tf8 z3{{uRh0&wM*Uu2y5*i$Jzg?kv^T#gj<-t++zW?@HqvV)AHiB+0Cd13~p*h6nnc3od z`q{`V{L$L%^1=`-jC9Y;P(L5^z8xpj=epl+Jm^F46{x1>`Td~X?C+q2@Q54h;a454 zjVAN)Oj>RfpW{I>kIjT0cpV$53eYlpIH#WXF|#*@m)?Q?f~5)YA|09Qmol^6gB)%xH5pZTc3#XKat_sJO`Wm)#E4JjBR1@F;BpVDt)q&nmN)ReLh1gsdSVYl- z=8Ie?qjX}+(Hcf+E`3{RghK;!g;DO(xM%9Vq2z&xIE!*f_JMflm3gsaz7Up@SJb3Z zOg48yFI{25oQEm1cDcj0G1Sn;yp)USNvx&-1#1i^RJ?B%DT>&+a*`Qi2jaGlv&}p$io^VVL!M zg5;*9w-9h0cGOXZh`#9@uAyA^`V`PIPFTtna-n0IM%U>7U6?kJYfrLqIvq@;c+g-3 zFaR5hMK*;}Cq_}hl zCJ;Bz;smXd|JR-Uz3mq-fJA=Ud9m~Cr=4eycXxaO89{04iy?2Wtt4DL#$0*3pltNI^)wNL2UcIuRCyvuWeRq}6P76QiEW{Zc&lSo<%31LsfZ3FVK3;;Vf!DKI0Z*+6@CEQmK8Ujd;*ZE<)c z-36Uai`8Y_`RLfX6XrMEcqhboo4vTlvV9DJY|B17{90K(E!q!eN2{1V4wgjx=Ai!8 zqIuXzC9~N^Cz;OpyV&+&?_FRUBvwUbpV$T!tVUdBI>GuL4pN`0O4@>tXcGn3S0k$zgUKC>Hwki84ET1S-TB(5Odlyup0+V8p!d?#!%6 z8LgIuCRM7NibZpl`~r>2@%Z`Er*P^1l>F`a{$GCHd;YiPigqp_fk;&kGVG2$#nG%a z<{{uSrjCM7!Z-IpcW36`_F6b<9naxvAk_-hTLhdeT}e+^b5?EW!j z|B%24A_Wn7ExpYS0a=jg>8T$K8jge}MXMrC<};~KYOBI2y-&Ltv<_JFtLlxFxDu*$ z20`PxYZBim)bZpPdS#c)=x0zBid9BIyVUCVGN1Sqtb&yDVRN`_A+yte&>rqCf3UbT z2}HL*I;1%xvyNj%N{Q9*FuDLX*KR4Wt#F+@*AZ~P$mC;Mm1hd@ysd^<@_}}?R;bSq zEEAh$bW3SyEpmKK9r+`~f7}oP^rHBW2M^Z6{Ez!z@gKfu{3k_fc<>KN_^2}aleq`R zel8!hQ5^xweQ!X;Xbjtcn((jI{Gg4sAY?;>MOVj+@^n=_(<=pS=n%gpVmBf%ueMr~ ztA185h@&J09+t}maOin16UX6VUHwRoaGNO8w_YGec|4#F;c!UFO9XOsBN>*`4OmK- z4Cn~HQX^Tf6$3kP7k|YPhcFaqF%7CoZY!5jKMlN|W4%$l2CwFFQ6AD+G1$Wgr1nBR zd^l31Nw801=W`u_8v|&be3la%GbCDnr z2;vtZq(G3ckea{3IwAzHWGdm)Q6ZDK5JXm{z>qqTA$kR}G=LtLkk`fGAqZ@M%z`6C z8uEr(DNNsAj0}#M#y%v1JGe_ki@2QeYXpt3-$9`eTs3;cEp3hXktGo@T-*p3U~E>S zV-O|`Vshg`FUP2T)iuCgUm|3L2nG}4DQZOLG?YY-@WLz+GJ6B)CHB8mApqM@M>WtT|Nxgjx5o+FaQW6=oD9vCh=f3>IRj#vY;GSf)}CT zsoelCtFcskNkrm4bOj0g7!!|!*TI`Ys3>7Y7N!GZO@iv_mx&HH0q)$e@h0?Y5OESP zZylH6uD^KbNijERVc>}xkfz5#W7aZQK+;-#!8u6;@3D;$+K%Abs}qGnpG)6MS_q~2 zxSd-Zj?xX}FWo!B z4To9z#N9rqpcn21VqUP9dJ!+7y0tLOg`!*n`O!tXm|ONvyCA0fu`b=-dR3%L&{(2f zjNsZU^laCL!d=Wseo(hx4tOylez9AB-F3u^nZ@o z6Xjy%J`8pd>L9Tz;c%C(gVBs~CHO86rBdULT86}%k1rb8M(?$E0@XbqiBM_K5rLPS z!C{uL?aOpQbda#rgbDI$^GP<~?oqmF_*lQ1JCtm1PzErz8a5T*l{SOU+=29iVODc< zbAag;u8lAhrg9$2Ob3>D426MjY`k}t9hpO#sBoB=a8$F*w&$k_WVjFVYXQIb@D2$Tty#*ua+gdET}FD?blSRyY8m$3&j z%Pb_c7dB(#W^gzOoWZ-j^qUsLcr(UvF@Q#yWXaWY-AEe8aTW&DSXs$xi&u!IL6%yG z$m~4ki#ew=0$^vq=7qT~)8pZ#ldujrBG(Fh*|E77 zAZ~?S*!-Y7K#BB>YWP|ir7=NC081(;c<1R1%2>dd!L1z1IFh|(nKZ-ao2TVr7P9Vz z3fSmcL?kd z;z->b7iAH`&D)AO;q^y+dzABXljHb<+l00Hl7| zcY>ti&E)``jw&|6D`6DhAln%@EQ_7FKo6`aGqW*d05Uf?nL~9yWjHVE-0&q7WGiPY zFD*4~u!&BFncp!mZ@80o_kT2sXP(nRS%Pfc#Lcny`hE_zC!ipJ4!M!evr|w1ZXUMsL8j(gcuPOHRZt(ZAuHFrDBaFipX%s*6Rd%~-bUPRiW@Y_i{U60- z(Ewl$)QJ<5WgSbIjaen{_=AZgJo}GH6Sf1QF(#i6sMHEpa8jD2*2D{(moXxJ)+^Yd z;kZixT|lD0L8cZ6aG0e&i9Cj1a&yNd^D##0c|JoCQq)SB>vHeqlig>9>Q-XiNo_G_ zR9gm!3+eQf@UjJc6q%THP69XU_@0&7l*8N3z(oiojTge478@<}#IZ2$5aSY0!;hb? zea{p7!5ND(zAy$xNxVpNG|xdC6uNB8(VM1*@14(yGrHm|0~VHkJb1phbEw4LLj*B( zvIbN`IfgSoqgo$qco|R3Q8EhV6iSf5vU_Ty+b*~kX}e0awonrPLh=9SEU?`BmoKIN zZ9KSpKdk?7-~9Yl|NE!Ke|)m@^yl3@0Dinz1Nc!gtO)UOJ0UK|j25K5V+lp{#9w$$ zwUeil^JzMYKtFCLe)rs+i}LV$v=T1Hud}?F=aZ8GE)EWMGC8&QBro9Z385hscXhGFY z?8)BqAGi0CgXb^zAMYF_ty?4nw#`&2hy%hKCuhZV=%D4%h&3P)s}kb-f*0Tb2k|cB zUCGPrZ(iqDfo>>Cs)t+Dng*Ra1ELZ~BcM!Nck_imDm=6ftRQ@!!@L+yj#Gp`q-ntC z4GDZR*#Xsp)`)O7?JJNg{^Qe^2ZvN_7(};pI3Pmj;C3->3&|f)v^8FTsDzja!t!!C zN^v&8lD*01Q?rJHlicn$qdV==euBX8e1G@wR|^r5N+9CdWRB=dWaKbAG{(Yk{F(Ft zfgo`KrU%o*`*cde3fj*H+D|OOHK%xrz$b!q%RBczCGzB08<;w`BL4vgnse-=?M+cU z6&n|`Gj|JNlTeK;14F%DEu=dMSp$Df3i(AxYjE;U)9I;N{SHC=50b-!H<@u z;6rOVHuIli&Iqg>h+FR`(^In^FFmMNQlh2Ect%G!+SHc6l%d>e4Q31mCc@|lLQjt~ zE@yax)eupi2Jv}5Lsd9sh;kifXp#Sq#g+3m%NP<&eK^JW9cLJzVRnP4*zjLq4Z!`( z{{|kAD1-3UfXj_r3|2E$T!>9sfD(oQmqQNQ!0Xa6g!(ok$@~J=3qEQN9RK750>=@Y z-Q3k!=QYg-gw4j4RLQ@b6+YPaIRFDfEO+L!OxG{>_iFJ$@2egaKf8=IJ}yqkjm)|O zc&p5@IDt1|-`_#xt7-=%W^pPk@hND7mp}e$s2o^zTaZ+JyB1S8_?+y)_6i7q?FJll zhKzEy8DS@$;YA-%TOo(8L`K5(eYI9G0geK^&8Fid44y*9-0eNYd>RiSm=d|v`$4WU z;oPzQ>(2gxX^^x;#xdV}=qKb65G}jO;;Ud0TFMp)K#XT_oM&8T!LH350#9ID5J3)44tMu2*mAw?+tRb`oBbWb22d`8$qkf0K2>X9U*y zpqvO^Y#%=UWpC%NJ9}oKFJM9#1G&^9yJi)0Uni&~n5TOm=eWL6Hb2s*;5IhQ6K-K1 zHbOLxp$K1D2s%gk$v#8jS$3X45$-iD&q;3x|L^j%k1vJSTOOguGmR4s~>9*oxr)LpCW`RY8;? zbF>q_+_wnP#kR;i96++BEFzq)SM=*`E>mrG`}UiGyvQwHQ}g%P@yN);K?gWRdf_xX zo}Zs*)8GwQjS9>?Ic!oo+eU{-qBZLitpBrs)M2F!&Z8~;ySeyugtV$BTJyEi?*U?c zvj6<$3m{ZVRW}o+f8}*3mJ_w!3@|f9pG4{d*pbbm;BZ6@*{`k&SQ;StTj3;~c{g zAkugQS_K+3N>WWZUQ*6%IMN_xTnN9ek1cSCVd4RTVihye< z^k3lC_xYth4PWR3Hme;>ywC@{#2q9pP!)eOWcZuwyInRlriM0sRcuzUmAe02EI@S6 z=CC8OVou18J5~eui+m*{kVU&h8JtzC#vK*c{+23CUi!9Oj$7_q7A!}kvvA8)XYK=3 zA2p8Rw@GXdGP#Q9+T)4umH^MA(M|k? zg(WHsS%iy}L|zxLnSDSj#c5E)M(7@MLb?A`)-wtfAKS5xjc!Wu&e2=sjAw;8BF4yI zX5rqAUerP05&rBV*N!1;n0rsPDPfHkO_Eu&<)yGN*~QFSwwk4 zdocyS1MA<2G1J1GyPS+k*&14B^5p#(t_sBx*Fl~r5G7S1;KcdaQ42Up$CEMe5KG^R z)mh(+g%+VJE`+oOW5Ng>-!9@e9mAJlr!JXPql@_H{$`G zqQw?=Q8UISbxS#}0PKi-56l z17IYi^d#GtD`X{X#C$Y}n=fn~OCScLiLn?1Wy{ z@JyZ!({pmOkqMGX8h9Fc5~gf*w;y29_X)aS>id^`zm+OAY6~(+F{a0)uD71<@3wtI z6kNUL#b?jaAM&@s*pPGXchK*B3w@aV6)T>3u>I^O4J-@xiLljoby|HFv|7KjuodW( zVXI!9R=u#*dYxA5VXM1!THST6Mu-raIo!`c; zd1)Je$+1nZMw?#HX1zw6^`On&8g0~KPme!TEjF?eS?#0+YY%6_wf|j?3>t0KT=Mq_ zrMyx&A|t~D->WCd-Sy-cY80&Ele_CjtBy&v(zj$fRy#!tAMS7T3%hfFW0~DaOdst?k8aiUAPZMc zweQt#-;1_iuibt<+Wv0s_IGW4C6wpnQVg$FZPf7ZqL|I$eU`ojA+QNKwC?st;{%>S zHch~3Tto8{+K;{Wh({JII$?jW_{9$QTxO{Nd+_8UBZ&nhqIZnw#rJe8E(gXW-%g3K zqHV+&w8bJ=&rnt20IZucXVD?E54s7&zFnyB{T^fj1vx1quoJL22%n^U47i@uetmzcZ zb8zobm2}d5U|JMw0>Y-6?-{5b$B?vd4t}soZu?P{A)vd(0WKUsgHxku+Avf^5gW&N zT$0O8qCa?_)6wzZd~S3$Tnh@gPHyq&oL$CUaca``nr0bLuS$wmyIbbfO5au(PO-?35E!zKb zc=)1q0H5U7`9$DS?`Tz&lT{^z4-S4Q@5}t}Bh}AlML+bV<^9x|(F@oRT0k?cj*Xac z8W^fvlTr(Zj`0!*3-D-8Cl^zQJ51hYmql330eWWs^_S;QcWxVAp1<+ygBTrY$NaLX zO7$w!G<_QU@N$1o`}Wg!lL7E0VDB^3?j`h%h#=40{!;C>F(5RN8j5*v<}jp?od?kR zMwNV%9j%Q9r|`w;Y-Wxt1b`UoIn9QE?PuPE8v#xVL@g4$*<@tK7=a5D0~si}&x{XL zbbzmzg(k3^*>o~KA7WwLvurwbY>Ue%ku!nsIH##f!7gXian?TiE)^s>KCQY4ky8<_ zE!{t32#y`<(kI*DaRUne<@w9KpX`>WSaS<(Dr4f|9pUh`VpK5!!rCz{tO_dmkRk@m zL25L@jl>0`gzC6A8(xU!3}$^C&6wkL5X(ESNg7lvldvUALP!OXfa zKBhT<%C?3b`C|`qQY&er2R1O*n}l?otKmHHt}q7@Im~VZTNuQAR=D*9!FL_&^nSbi z79J+KynKdbG0Dyx|J zsV=%s%P9og*NKl!VL)NneoWR3nbvv|etX8p_GU2D)2ElinG+ zyE1a&`x|D{`Er*3l<;S7EXqpYDd9ap*Q-iE@NbOBf&KJ9gt<}t&nx^Eb7Q?;`ILM* zT9fn12hP6c5b|Y?Al#cq|KnhRsR#GB*Uc*hA6(Xr#Yc8M*`HizuY4%wNM~F`y+p&a zRU3ju$LrMJTE`nLl<8#Qy$+K^M3LOPa4{^!+kOl6ImMCIzn(`+`M^1+*pYN;9$E%|%zfn?zI10UjvcP5;ENDG$*z)bq>BABl2|q|k19n$RJKF;5{| z<$(-dqYkbaY>uif#(APk`lk!}%XYQnlpW&bIs^}tQ$zGE`N3hdcp;ZnX72ucZ% z%>{3jS@*Whba3LJLK?P+p%;@nlUT;S5E=NuVjvUIK?j!2VZsybpONwZZgcxXu867) zSa2>-U~sY$bcI>mmcMEKd_ab%oGnpHktFa~AWB%>Cm3J6kTUbxLb?Q_COX1V7Otkj zavCwO_uqhyLtB*79&LQvyVtwFes^QNG(j-;w|}$d0HJD=&v1&C7Tn0okOD{S|Kkba z$KAspUq1fJ4p77KV0Jt=OzbKoVW#w>G+#&#cAy0`;oke_W>@Yz7I3V{i~k^|Ws_&& z!6Q2^RrkIU|8jkN8OnXJefSF{k-X79rb_d97{}uvZVHN&A&~uSNchGu2ALBXiXUi% zpDhyoBl*m*aH9c?&yDlU$P}2r>oTmxdQVDm$Nmg+alh*TPgV~-A^pGSS&r{z0}S%9 zN@=CR0*!0|zWpU8DzW3wPZ<+!$RVQ2cfK5B(xm$w9l^#XL^9xI+NhVi++7!Ji^-8@ zA8MR8L@)s=XK1X-gCxaSaqc)>W^Pt*$4X_4`i_fhghzJxaiRuNjPl`RNP9L_JlHed zb)02UQ3Oo}I~Bo`Y^ZZUf)HRlj1U*imr_M=Lizkywtr9(nu?NN)Q@}5AO9tR*g7c5K-ym?F|vFofwOA<3CRq| zVQmmzQw;o@iWz8fQ6$d~tS5l2O`F;sU~T`LiHnw83YbednpGm-Y&tjThR{Q;G~0;R z*ezhh_bg8s9XEIg3kn)yP3x!{$+LGf^{-@4;l5o|!X{?Mxej!ggPs0=4+pdCuFMM; zEXcc{6;6j@O;bH`+J^jjmcE4=0cAA9wd6CZYaoI4IHcPW5*X~5e1h0ua6Uj7a+S=) z?Nu(5!|me4x&qvUgiopyYCD#@t>Ehmog~FCv2IEAHI9vwjkM$6b@XRoP2KcNn<0Ti z4w)-C;>MJ8#8~A@Hil4^z9C7>Vwq?ItQ_gxX9tJddwc!epOe-t{`&sltZk32`%T^Y ztSL)ci;hO%GK2`<47F+Cq8X;6r!RIMQ`#wfy3LTcHW|2%esqRv1Tz$KWdW*(q#mlR zLFPF+34Dyfx1@rHl?1@s2j^*yv{9@!R6IPM2!TN>zT>vgJ*GT?ja?G6{BlNlG2PZq zgd75#SeES0C}smY)M*oSJH&i7+f3!GB|i_wKz<~b;(WtSfP~SwW2pFdh-zxdO+{9? zqptby*?t@5iD(tS&&Pyxk9OF2{MJm_nK(g4ausA4y6gp84wE#<;hrlghTVbE24l7q z-Xwp{|7Xila@^N=VD{Y=NaZ9nSDs)pEtw7&Y^R>EypRg`-pbvvF5dJ;ezJd{nOt*4 zwR3%u350<;3pf>9BOn=(JRy=P*HA^i>l$w%Gc@e|JSXEmG|>Vw%3Up$)3up2KX#7J zcFlkHZ~y7D?Ge;Zto%t@OvE>bL$u6}`2ajvy9>QQT#|~us8IhnAa>kn>#tI{Q+}9K za|Q7R*)h*{ZBmk$)IlA`3PzVj+IK?yTmq$Bvirq!V1&=vC53ERD@v~m4E4}Oj;Rl)=-42El2G?7p;v@}9F%`7RlWuSE&2%)`3tgPUL(F#M{tS$qOagi@=Fx@#|8JaGT z{lq&=emLHtwSpLbSP{^jd` z7UMtOUcE{>tFF7zr=qSs1w+dc)PlZX|eZ8p-0@qBW1kNtVWO45m@2&R0Nl?2QD>QEE^Uj$`Rk zUJK6Ae&bb99dU+b;mB&v1z<-X@Hv9(Xcj`^^`TCH59??*rxM>$k5RWQp)0MmJc^?N zakLga>5i{NGbf$^d==h_hN=)=!v!bFJMi7+4~S}lw29r7R#7FuM>b^hV|AkAC&hWl$gq z1X3gA1O6e_Vwt$IY*)pC^q?T6yQ?5VdiAxadaGl>W}z7z@*3!n(jDu6mdzA_A;pdx zfrVW0%JNDJ_ieS#dcvt z;_Y8y-Zfw!ONL^o$LW;R8GhY5w0~vy@8s_>E9h??AfP1vxh6T|ONs)v<4fg1DUV{1P z@6Xk79&Hy@SdaFlD!fO(&U{^rN5T?v7>}&VVHqx|LgT<5MrcYMNb$@kkJlwhN$cTg-Yf&?EaB@CstAM|dQ4oq74)gz@!&dP;B}9c|Rcdi06F zs;SnID6TWac#MENx`RpxUsS-T>KHGB^JqW26x-2*c5FCBo2Eks!BRZOhLh|<;Ic*( z&XLg^3*$IY!A3nS$4C!^4cNFcj$`?xZUV}&q0tJLhjY}E$?*tqpLQK;L3=5NRE|n6tEoK;`;cFsw!V>6y!wZ;EhW4T^hqN0^w-&$oW{+ zQIl3U7Y*g8_lPzqHeHBY^eVqu)mj5OMmRLm0-SCS&=G|uX_Z*PNK;w?_!c|63cREA z30~BIBI`mtx)1h19>ab2R;~);kw6~pf{v4$0DE+rat!lv8OXp;*|Jw?xn8s7dZFdr znl10DmZRwa_U6Ex){fhb`_dYM~c+di$Y7lw!K@ottJwSljs@;kdn2wjsPVi z-3Ci(f3LBe8dY+cK6>#!)|csHJ>JLNW%_W-d_{~&ZRA)CEa~ha=C1|Vk}*5dVth%Z zTY!M5Q6&?FD=Ald(h}jbp@q*-1cx81EF?>UOIr9L9duJ0WK!g}5Mt6vZofJai@+w) zx3VE<~0j8!darC6of|ZVSAmw(3em3wx>?wQwd2Fq1Ag zVp+6FCl%fh-lS4-ZUT1Fsi1YyCrO63_>+qRar`(O7x`o1C=IbWueRONnvj%MN2`lW zxxtZOG&K$fqd#m+m{N@#K&7V+-2_l&F)qrFqk+h0&=o|@uY*?U!deQTm5ysMYNfj! z>R?xf`FE5D?K(X;_yr`XMbMQYa%I?!`LnW{n)6u#y0Tzvl2A6mth6Ln1G=&|BIHT{ zuB0#z`(=RFVt(3$f3t3$u*sc2-24LHUK_fyt2E9!0G1H{W`{(HK2*9LaU4fiNUks=!HWcbx(wbW zdF&B2%kemlYwND~HlS+QOK-Zq$+ID#m&$N+L*SQguNPrpRzP3^H$V_fYo)4#hUqO2 ztb0f^8WPj34(wJ19-@^6ZvYolMY^C4&6HufXs|I%PpU3JroColPW50i15c=h#_Zm$ z0>+GUdU9&jgT{;_V~Sf$)~XITCWOuC`0KJm(Hj8~3!A9gd)WMjY`zl5$}lm#P-~%r z3Pemlc*=*y^k?OOF&$Z75gJq9d$gF$+h^&y$JNiA5CW=-`?%WZm?Ra6CsH~az!pR> zGR<&qW-gK3%|araFp#-`l*!>E3y?C`q_diknN`$OM9p-YMi(RoHtDT|Ng`&Z+j@-A zN+|sOO7NM~z2~`y;2QEo3HMKv7|#8az|o-WcwqPqaX1I;F7;L9;7znC%M%iVFNp z>684C7Duz;<7fsPrW!?4>9!FtO|6l|pfq*zQEf;~l)Jfyh7DRYk`^OsYO@S?Wv+=U zBWpULxHiBh(gj0o(liic6N$-oCt#a$y)K2Yi2$33uNlH?3c99T*#xlZ;cIGm%~gFf zUI|e%CLSygqq*WJ#e>b%+{*9EI_EH1bx+|mBS?9Brjv2l#E~AzrY%YFNTQ^HU>dHo} zYxHnNH48w8^ak^=Osx!jPP0H1C^Yt*J1}zE%qucD4Ps8@|+z$FVZKy|>)R(@B?t z%?!5wYUr7CbDB5p-d_VqQ}HF2g&6{BR&XXYPJ@{uShAGx7f04CVNDfinzdfOE`ut8 z&J2+=+5_>7|o9 zH-VQuZkM(iPSZITG@7RQ74co{&kYHUby9H3N2xBTW~tr7dY-O{tm!_Qu{G)2g22H= z(3%{5XG5PYEiuMs$;m6h)%5H`H-M$-cD@u;vp4d$t_o8VMqAA_apu=W*0k$`<0&vr z#L{e7CzFNKT-85XKu!7;p%x(p?J5A8eio_CMrZSrB@L!^`?GaFkYP&27AS{e>Iqxaqm%;D{7qIPLfqD4bR{kr~}6du2RI~H20HLhY^>v+aM<#{P!xroDLG;Ch$2eTTx$H2a;2r z5e>`fvEL#NX9!YoZ9Gop@2JG(M8l*=5!JAqE@!2P&lyM~5b6{9p$o%Y1)kHh8VXD& zCj%mA4@I(2-(FUX*L#C{4{!`T$WF*Pbgdz9f(9u8?36ydJeuSfNIfQ zIF^^uQw;-(*EHPJ1atV*NJ;B=diRTK)_eG(R9f9sA1!-wWU za#8l?c{VoM%t_1ZygSa`x8&`1+q5-}u}OyaAN*hV@Bi!Pe=wa+rZ;!)>z#jd>>q^Z z|K8pE8(+`=|NZk{IN(Ow$n)eNn}NVa*2`PTWBgG-U@33~;Vh;Liu<(gqmnMggUmQ%pcY$wm*#df< zdrZinAt}>TZ=E6JctRY*0nac*GnKS>^^TE)hG=a?{T9FdDLxTvE-o z*n&B?EhBmaTKN{Y1P0`u*arL$!_WMW^IxZF<>vj5pZQm`9?(B;CHok*lKZPpu2@+2 z`E(#5?6+*2pHM&rxr+r$^A<$VA|?|@uX1nZ|6|ChLzhf#H;KH2Yj`mkj2$YHL`_21 zYT?Y}TILtGP)0$4wd%@#eAD6uYST{-S6qeYM+(m&$pFX6Jv+?zHTn;jGHsIGTEc{*t8)45OD*}#SKOQVlGo5U z_Ol^fN8z#cl#l4nFJN?QlVi>hjLKrB|n9TRjqr%-wLCmTW;6FfG7R+YTm7 zR1l%OV$VS%u`lzL8W1Y|y5g^e{m5I%wthqS;bZaVId`@>lQCepRGoEZyp{t(Y8hsh zffWs$>ZI0tj1l+)d?;GX&lKyky)X+z<^a|>;sHgD$e;Mr&d=K~_YV6%Z}08>xc&Gq z{lnd-JI`MpnsvM5Qg4mwJ?&4k6c9r;&9`-uO_^<U6n&3I|V9YWxH(o=x~6TP^;F z;w9jz2)`2{20;?&Bu)6ArslPg1uNTVze7aW>wsU#{O_VJ@06`e>}CEJtkvL(OSQGt zLNmWxnQ!oKQZ4@d-|^HL{eXUiKg@5%smKc@Boqu9@CObwC9Fia{|XetZ}8_Zv!TEI z7YWUaiJ2nO0Q>#TyU%`OxIf!UW=5z_ zP8egZt;W#olrDJ9E-CADVi_hjEa8&$P5mKaEeEmzwzhY}mfA|ys*9R>>))my|BL2% z)NPq2pSpj3*lryaNWJ~===Q^Z{oL-Jq!)%-T>y(ax`sl&k$?L%#Nx3g--KxpXsBr( zHv_>B&OazEW&DEpZ-u;9$}#3}IB033C&`niln@o(2^As^9VS_eg4`9mogV2KmB?$| z%8z~&P=POkmLDlCAeiGT*`I?UnA){Y$CFTm?4NeEIQGbg>q4YYjdB#Q_>FElzI=#c zc8(7_qP=zG9?+uqadz%pf?NRt1LPPiwm+VX(d*sfUfSwq^Y@7%f}QDfJlWjb*?sn6 z|M`>sor43f!}sZ62Eu3m{d6$H+{iwS(JGr@WDFGa7`+yg=*)V9^ZCu>y=i}*1|Q)c z5TA4-8bw5azRs)-&F(($67E3@<*!%N=yiw0vB-BK<6k&f+oNlUY( zPZQHK7lqEqWe*EALwCXHbaHWlE}#?%XQgb(%GItV=UJ1SLQ*<-{QTK7+lgXe<@8W` zx%(E&l`7kepzhJEB|u^_HKSfkFm!i?ZmQx@zJ*VokF7xj)PAoiICL)+f*vmcICMaH z;hrTo)XZWq6XOE4G+K^nhpCRH|KF*c2fod15mq^yy`N0qQs&MXX3nv4G`M)TL2=6$ z@9wSmcPKNGmB>dtFRg0JqXfA?Ou%UC$xREA|1rtKJMVFE-R?z>Jr9%&9xOyvW)eesy#6;JHx%4i5Kswx4!9C5+k|(FguDxtO)2#qJBkR}Y`}%~^Nd zm_Pc@p8vG7xBY7;>A7y?UM8DLa4b<JHoHUxR zwIJeA%hZ8+g2yP8C56R;++rXJPFe$E=rDmRQPM@)(D8*1U=+?xb5>bREGq?#ng-k? z65Pb}%h(~H*XS*zPJ0~80}!#y|Hw}`_bq%`enJ=W7Pc%>Utv>LG?{mSRrlrV`h#%` zd+X3R?f)JAnE#vppNsqwLLd5<>1cS9UZ4g3U-bC|^&ju8fA#eBWD` zgxRT~(v@3`PO=Ifgh_(YWTvNsOQS|&lp8R*O9m*jld&Fbnvk%0J3cgT7pI9<*b9oL z8D8@2-lzF^RpBRhljr8gY&h&9H!?Ha79bjoZG*}Gy8U#Izkq5k10)nlTjVWqK6W^E z#R)1g#^Z)fb>tEx4{!sBhbEqU^|B^_*+dwLP^uR%aM~px1XBQv0JHV4dtPNc`j)9l@VQx8r5$r}6DZbjxyel-DVr-kCe zO%}VbYX$gyJbwqlN4wyu^02DM69g!PGQCB?e~f9Yo1DU@;9XZDW@L#v-6UoZRS~E| z+n;ntMJeF3T6kY#9_tC1$NJCE zocWCQ{Wv?DOl|H-E~pYStmlMPkY`v44TD!eO+(t^J`n!LD9#`i98+=#l=$FHv3;-{ zW9M%5HtoREgzphopwv6=4a9REdLX#(|$h5$8hM}k|mRvOoV&DA4{S<3G($^mN zU7BsA&LmrgE0aHwauc_BnB0hXQt8g+!AQ)}b7Chr;&hM$5S?tn_gg>sZbY*OqIJPo)MQ zQ_N~Wra40!aVJC)5Q+h7VMdo5MtWaO%)$j-bp7x*b1@~i3>E0Vi^P1(KLPSG`-fj` zLwkjl+>pNHEpk%`)Qx+1H$9I#+;61gsRkxF1617dykh%Spq_O^Jmh!s6d)_Tci z(tE8p*z;Q;y~HS^nruFO+VXFRE^%J?sZ}x2*X>39l70g*#qb0bmQK>-KaX zwu`p{nGyRuOiPkL|CCP8&9(RM$HTXZR}~2jOuruUq7EGAir-R3^gFE@s}?u=s{DN+ z{SOf^Zaf0KTK`*r@Zf$S{`~^v(3$)B%|(9`dLg?bQ0>k$FUA$VFh^m|u+h``N!B{RCC7*- z^uA3x3F}t!ep^Q{Op@=vPyS6lnQf(5N?^cn;4Js@6-IfdXpOz~5igzQ=FwO$4@U&U zNL}z%n>|w*mR_6z501bF`8d7E-w%Sag?{hh9u zPWy97KmN};0K%U(=LrVW!8h!%YP|kznq{gKoi){MFuqOvV z0Kga+cxSiZ_|ld*{SEb4#>n95|Mt-D*{6|Zd1m~J|E;wzGhi?on&WR$nUq}p1TQM= zmLQ)_reFr_Ft!oc7EAb|E-8#1@d68C0r;QztlF4Y{H%bX4s-L(j>xd|j;euE@u_;P zikuZQv%C4=?^*Iga4e<6$Nn9MI90bk#`^rcDxZak?|eASPB)_+SM;Q3_iAnZHT29S z5E#gZGugX-*MYEbwU3C86t1gJk-?2uCz^A6Z_hA}i11{zaYn1@Kiz)O#juyWJ0B1J zyL)Dq;%*FbV2f?uAC15-vyRJ1^fBfuNpjkP0J74I#nOeQNfLth%5^%#me#$>3dAE?} zoP1s^NV)~+pG+<;Ta#L=u$4@@>hJF9{35<4@S^=&y%x*@Bn$XBH#RPizcQ}lk_EzY z&Jt#oY`F!~!J*FTU7o3(cU`V_*gs1$rdzSz=<92k{{6DglFpv_cfrC@;oBg5^H^tH zuOKl5GD9$8?)|LV1@kjgu|35z9pHUFiY4*qyz+{=WPw%!QBds?AJd1CmyvawpWL&K zpBxfUl3{a!|H4aC>G$Dt?@Xg464A%S{Mhxmx{Za?1B zmUI+(=ttF;_7RAo@pk}VqOb^&%hk*DSQz&1*qC-#ks;QI-lCqgoAHL4dNEYqDM!|p z5aWZO7Jf8Luy6og8=diN2(HBv3bWnfaJDgNVy6y2NLf4lF*qpS4Btnihq;2_|7yL} zG645|mu6m2RINtZfInQxy$UBHOuPs#-jAQvv+~kpfo80R6=^(KR;cc|wShhcC8{t3DzsrZMEx$jJ;jGQ0sm#dkG zy`#gx2e;7RHym=#1}`y6OsJc{fKV(-d6vys-ZSS;gUnTftq$J6PKS9EkXS)J@OG(ulTDMs*(CrdgQ>#1WBTbd>tos6Z=y|c zH6A%9R`k@!ce_S>C0?YL5XjKxKSkwfd-pWQ375Mt0Ibs{aDh`e30}Yj1&C>J2*7oV z3U(*Sy6iV-mkjoJFh!7iw?7;%>js650@BR<3y!VW_Ub3eX7jVWLbh9o?P<0@`@LW;_wmrrL@1W`|LTJOhA)!`dy+e(OZVbri)h<-A%%-o|7OiWH(=TlFLBgG5p8$Rg z*-T+r2NXqmz2d}EGnbaQ6YeXyifvaDQi~`MNkG3LEUZty=Nwi+AUP zE-qq|*gF9#tMl0HHajYP)6da6o1qPTQP<7b?RScWhWmza&Q*d{p>1?{Ps)#+0?%5) zrP-!>mwYX$dk$NLF^pmr^Q%9KFK>jd~Z_&u+P*~dDoKZ*FwNYb+F@^vLdK;_gectGJTyyl#OT6`gPu@x@H zv!unUbIAn;cIt0Pn;l)uyn92vTOR#@O}+c1Eo)xJ*ywgNa=})h8HY^7=tVyOq+P1r zwS-KhHb$ERZQq@^u+m2VI2__L-`)?1n19cvlZW2ra;M<8Z&~T2gfwjb0DFv+H4BV$ z4r68RRN3QsnA?elkgT%H7wGO9n!oCCs^Jd#z8S*(+tXH`eJ?MdNs}FtKibi%yK|;6Ne+Hbo#AsqGdEfq`j3MoTBs z8Q2BD+RfDwMtB&EavuchG*|qC=5ZX~KWML=@N+_^aG6GcWb-PFy^}D{J{a4by2Qe0 z?o{ko)@*04>8|s>evVR4whH;0YEotzbxtZXdJD+4e$ zciwAmi3%dZJX>RYzrodWv+0@?FqtCYYbRQKI`<>_;5*ZfRecO?>%0uMoP3)^{v`$tIp+CF+~ zv>k@^>U>GLd19HFZsns3pd#C=vuOPM55xOz9{zt({{Q-eJH0UfWBty9ulXN;!2Az@ zNFBoq$;Etn0k~Nd3V4RN_=bGo*2MZ@7UBdj>s025c_)^4&PnRC$t)fAjXYqKzD*V~ z;7=WP2v!pZ{z{fd(tf#?l=G9z1DG0kZ2xRUT6ccZ;ULZX46?N;U39?5AM_d-kvp~n zs!D7KxcO=mSEW+nDrDAYAE0(J-X4r;*R|4>6Z6aP+3YB`2-0o{l0ELJR!(>FuXP zA_Lw!10;KAurMrNUy2ZwAL4y#UTf|%&$#tbTzlr)<0OO6$>|)Elxb^Qw?3-%>Vj(a z`Sz`kjw(O5K?cm|bbQ8tvHCGe7SkuK1 zW{>PA-h4)^cmIRw^)w%T+5FEty}J+Yg!ljb`(N>Y{)qQK{{S!sKjlNk_Kq)Ge~N|E zOziFAg?R$iGxPW*&EJ3t&U=0_xkxshHPL&<0U6({1bPQ3E)t%=5d`EFPBydgx%pq| z0XYm$>=i$Ijaf|oZ}R?YEqK=-E;fwqGBO+wqX0v~DT0j(mZDiTS@TRg!gN^9H*&|9 zwQU!*IsD9b=}u>}}eQ4pQI^BMEC>1{4-)$CTt}t2%=t*Uywe;hT`_c;-X$Ya0 zuRDd+=_J)(^%Y2<7XO!1_T}(DAKYKRQ^5axaPKSs|KsNWyW?7f8xzBexSQ0ewLj4T z4gTyGTB>A#@LlyNs!7?t5;c6n<0k%qZCkJGkV@!s;4y`Cf#Hjk0OWR3k=PZozNHEd zTX)yY7KR3^H2O9MXlJvHfMNc0u(w&Lz4j*vI!?zt$;2UIVTiH)-S-M$tu>e*)-(r{ zB>-ALrN3!Y)~|5ilKz+M7rw?#m~N?#{(pi8|B72h9Bpyo2Tlc>JY{TRm!w_7E~k8tZI z^V!9G7C0_oxt!xEXYS^<{c|&D4#wAuTOZwQNDmEW=e-UZDJ{h3$WXx&wLiD5J(suD zN^>h--;wAD)8Ei`)mQL=2`y0}Y07IJRpDn+X7FG_TDlcaa}@4_4XVt3&K)kcwk zeZ7hTG_*XT%|pn53((jY}0#pO4Puig+c&(~QWvXaBn#ZPtXuZ$H`_*El@Gkyq?D zYf&t0*Vf;uU#x2MdO<)*d=t4*APK}=W_})4ewoj*kv2&Plk_6c0mZPt^X$p)vmFZc zP(S$Ks``OSzSq9rTPPuM-vV=N&i}XF2QHsM3kOcgRx?z0I@WnqkIKB;u3V$nec6BT zQy4$S!yBmR_V~lXUgyU~rl02)nxGgW+ z_X_r(dtd$ke@Z|383;4y98_l7tX}QSxG%VfxT0eVc&+1qxrK zr{*#rpQg#?YHNkhm1^9DIOaY=*6aG;L!WkhRf++KdlsjXYhfeLvMNgDyQ!CvS`PjAu$D4E}%-?xK`EL zfrY(x1&+++mW|PnVhE`n4FWP-;JszegZH-z1d9C*>Gq6-=siZst%Uf!7yDtp9j=I` zceg~gVNNsU&LjP`%ho&m+5L9Yyl9wmm(%pCrPkyrV`*bJkc)xpZiYiX;c04`u;0 zlAnsLjyIw%(T)Xx#uQw@p5+zhT0KYd#(c6|tL z52Cq)F*-1UX=8fj%dBL=n&foUyMD*~9$BPvda_$jLS&FwURIciSy4nL%l>=#(7dp< zUcqk+kv>0e-Ttpfx6RTu z+pjf;H?Is3$s39SLxajv#Kjp{_|Tv~z*PL5l7=rnC9j&CBLk*7X2s3d3eAvW?PKY{ z<^cp$I(JLJ023R77%(X>(LLf9<4|0cpa0)^kniIeEGRW+(n;QZ0s@?%1L<=!`7HSG z2p?*@n<$SHbgfL4K4zVLy-*0qs54la7ofbdDP~EkloyxJeZp3a?NCy$Tf#11P=RsmVBdxDrV= z_N_2FC*K;jWZ-m&s#qX~d0*KMPw0LCX>b$kO5Y-(+mkWDNVcr$3KB}2HD`}~6=v;K zjQfx6ziwOCwuh?P{5^e_Hrs^)q|k!Ke|qq@-DmN(qx}6~e0M$492=?j_ctnfxW7@> z!~G5JWB1vUzr}m_@a_GzkvYrnTF1Grw-OYrKl_lK%&82FQRt`dr)C;05SFzib^zu_g-bU)uRF1DRtmJO!EK@h?B^?)RTQf3|!0 zd|x=j&VL^E_ntrgiwJZTO;!Q}sA~F@KGK>?iV+||HDc|N53B014_H^!DfY*OSIMIe zTOc1)&@c(~mfi`}obt#&f4VAlv=o@NbV90e$vZwiBCLHM%0222dOR5!_2{%4JS}Ot z)q?-quI|8WTf86Z905rto6hGUnTbUeLT z0O&jw&SE`nIWw1_gl-jwv|97)@NHMuL$Xd)N~2d>!h2KYgF1sk#jw$0yhwXcOBmuF z^e3zQ&m1myqbYx6=sbCy+yiXA;e=Nf9q=7bG1-x7soFnQ_R4kN`9u@n~>F zWrepvI5>jEpFJCVp!k1o9KhFLzdUaXWsVilR(0;_sxuwhq^bp9Lml|3QZ=Cw3IM+xMj8nunBM&275?pYqY`6KRbLaYR2IV2(Bvk;Ldf@!N zeal5KT;!KVXg)>jX;bxEY^;yZ0R}Jbd>G6unROBfyeL3Ot3yg8-E>*in~}6?uf=Q% zwQszXay^w_&7AirrsLppJWD?mMyE3Z@2MB)KnU!#^*nlCtm=Pxr*xjr4KZCNWH7@R z%Ky0y5x~=vj)M{!(0NRL-F~{45|%#vHNa9d7md+I%s02R=NcPEp9Sy` zknoymdV`jQp94Te#QWK5nXhu{Q-Mkdgd0okL5vIEvGBsrs!$x@DRRksu1=Sp+BLMD zV-ipbutY}K!y<7|q+kZXX@rH5w8(@6c~U&THg#xKKFZ_4N=M0imx6>9%8#+0#RR%b z-el9P3pG6_Q^+|3oC$!$#tE2NXAom($Z(X6CWF5-kQY-6&2Kz;-(7J4jPBT|6&B2- zEtpa15*Hgp9KxQf8D5pY3a=dlgtLBA{ouU}IOF{{|37=*{+C9Q_5C}4MTg98AR>sy zWa2xn0Y$}liT9{+nFd6eN{+@H{(pA;fpxN1dW+7mTF*wGRsnITmEV42E2Qeh{MMGpU86x)^9=ko(&>LlfdOg9g*I=+kYXKMmlZ z2AXdY(H`Te&iMO1ww<7d9R4E5;;eoY5=$6Tj0Y#-&eI0)lJRmr5xZbM=%bx11VILs zMT%+WS6)7X#kYwAVpB$~%UfwNzc@$MFbou9v^{bYf}I4^3R>{lZFCc$j4DH3DJ*nA z;PPZVla1cE4IgB4p3Wwy6VM!#g{?&JugqI3k}TMruVJmnOayT!uv7%_t$(FO_Ta~{ zmUAe*p~dO!F|j!_`IYLA^vmu+X#>5+x5Y7vC4-XQe!@XTk_e7X(*iQpcUJ$$Dg5*0 zH)fB_0|Vmry-cg0eJmuVUW}7jf7Q5o5doeq!&BH}sJs}sl;{VzAIzs%{~B)uR$nzd z3zdTft;a*>R3>Ty(~`rToOAwO@7$`qbSU^{T;ENs!qUg&(ceMV(`s-SZMLbMN8BNV zEmUjycV2HzEt)hcXma3@V5B93REJEm8_x_AV?d9{1(pwYWrhAA=8iY??GbiAjB8A$ z}=)87?^Nh*ZRBm);^~F$ss*Y>1{|?3s--Z!DclM-!)? zFBJPB#g|UA7BM@q!=*DiNw3i-nl+mr4SW)Zt|d{U#U>zC>Obdn{oW{aqAlg9TZ*nd z%DA!Lz?(fm%0$Oc8R1k$iY-m~B?w3!B$Gya5MZ1ToR7#sB+`b(G;dBU10U(~>?$<# z>Wh7yy?$VJIfJSqy+*|gyUv+&Z$Iexl#E01WQ(ho8D3~wCC8ieC{OJXbTr6fv38U6 z2UH7Me%2sDuQ9?1-L%3Zo1Y`f)Tl{H21spRXY*2Frjo}`ZsQhYYVkQLWt3_otSG~B zB@Qf!W0Y18bz9i`V;)Hff-lxl>=_J3eMFB>Yf7X@3&2(8`tM^te&vlSreicOcUes; zj!G333Op}Wa&Rw?dbc2hk$(?mC&a1wJ^~i0g>jDXH3ffK^#*=DUIYv^+{plQ<7U^I z?$C9x4R;7zw%{9ZMq-d`4pRoSHBRBnZ<}iN1iqGOWH8d%M}9HEq)HVP{J`vno`I~J zrtICkJF%;pJ`EXtcg7$Y=U6Z`mgJvi*RJT%0Su&X+To&;$yI#et>3RHI?7d@e8#tS zof%EE1I7(0EJGdY*4W`s(%s`};u5c(79tv$4O7wu;s!k%_Vf8ZRv3^=!K4n55v7 z-VG-uQj3^#_TkW|q|1pg+^l<*dpbq|U$@?%=XGjb|6YO0+3-UGq86oInOQ`&$n2Gs zkJJcLS=Kz*{_0(c0q)Gzx)zHK!EFnYFU*oFg_*3D%Rvhh5rgI>qdfM>Rb)w9SK9Td zWbWoy=JbiAtmE?ZD7g`)&9LMzg!_dCAD{XAit;8(g=kJRvY(k1HjVsK*%xMoJ9y4{ zjgG5YZcEXSKsQ*^*3cx#6xM}Jv_6J$Q5VGMdOWu{2S zM8CRQB^v!OQX}?84FT2@kqEM5q|&6Rz+q(VYt0iIvlSqKcS7(FWsV9Q0{#7%GINA$ z@PX8_7=%2a6v@bZ>Uo+5ZusiE%!hR-Q#|CIQnLxS6iOf>Sx{QLk2%h;XiLve;w4Vh zs*(FRuV)csa~w|{W{JS}gdMx~Kt&|F0~PdR#2lY9r6=sLmxW zX5QCnBfH(`b(QDQLqevKY@lN(+(gK7@F4mT5m}A+Wz2^4N<3LJOr zPF_R>jjo$Qd_W~!`SiqLS-go%M5uT^r73NWShj177EziZh&GH0=%d#Nvda^e<5Y}j z=(%0A5`jo*ABgxoN>72H(HO1a@Qg1b2Cu|Ykv9W8ij)h7b?0`JcBEPf-VE`Bpnl%c z;|8B1FHgL4b2Omjoq;L;3f(*|+G|68#+=GbW${|uZ!;n)PeXQ+X$|Wzueg1ALR~!S zlw*Vpb~KON9!xqV-U6};A}#MAPiRuyt|yh}49f{|3Nd?UDAMEb2IgqIb1}9;s@}El zAzKkSbFDfV3C<6_{Xd$c|A!x^#1-pjL{`RVb2yyL+QAa;@iW5U@Qss#Y(tHcHGISM zFyEcbI%h^9wpLOG?I+xcN0gZAIfjX;6&gF$zV{ZYIU0 zL~XAZNRzG79x6p+_fP~&CnpwV1u7*{3`A|1%#!p365p*%5QBIZKD%&A8U1jjYcB0< zbeIvl8VBf-_R}MeC)gv_oKc)62y%w7kv_(~qtqWMe33$+5(K@4)eKIedmilddps)+ z6edlrJHSLXh+RPfMnPo163M*nF@eegDYw!r$Cm6i+>y3xv3$Dc~(|sRPbiry2hspaO$QKR`fTQ?88(yh2fr zOrKydjCa%TGjkT7V!GxWN}UG+hTPSJF-@V@>M}ZpNpmEF^&$EKY7OmGHOj?*$B6m=Z2<4>CnqY@+3wH$P-Sf)QjevR<_DlPI2TwCT(%~6Bk zrWp69KAZLFAx|CZ54e{W-@KvFO|$JLoqS$uJ`Qv7X%Wp$6=_t50=&0)9c_>BtBAWf zSwJszipwds{^N-VICAjJVMj*SKXLeqn~%E3BL^Yel51_j_xlPAY;#`?iol0&w1ZVQ+&(6XNZ4wmsI8y`a&W zH9Up;lZ0N(X^4FA+|JmYgt98~Vd*}Z?Sbn^V{Rlbr)r#pJNhs{u6+OkBMG?3t=z&G zsc{N_4ViXIcsb{t5_G2O?6cl>5O&Kx-nxf|=Az&V6H&bM(_wIw3cVaW}87%!>HVED6XNBwks{JE(p5^d$uM*Z)PJ@6uYZWm=Z?OyUkjn z1>8~i#~bxvlN*9uD)vVzc7a~~W0kd$gF>|4*IcntAGMe=uK|~83uF+%{39GU8lYuk zsFTBeWxxTv6oLFKzd+9s5oN?_!fNK7bC2ovhkyON9L|PDwRAsV6~xbHIJh9rq`j_M3P!@uYW9!ArBj50!QADV^o%mbQCsZQGT<4&UsBll94&NsqcnYqPV-YORY-N~!6GwxO_ygswB zJkaFP#y>8@s%LfQsp-D)s>>yAavu(@6Wn52ZFs3TI|HTTiMI7*zB{NzZTQT620-rKFznxwGQHvpi6t(BpfB0rlxNh|uu)Hg{E;jau1Q18-)X z*hh=Z)_T|6=^I;2xZ|JVr1(rX#Xo&}^ML1RdpxN~thecokFn{QGXCfu@WP;TmsZv< zxJQTUWN*wUzK)WB9Z>@-D;xXAnv^S1$zV?6&Ysj%4x5-V_NTa{+paVw1bWIxNn|

lYMDvG(#*dOSjNPk6z?PLBIZ{panwINSwJYfoF#Sscvlgg)qV}xS4s2!h{ zH>yXKb@)-O96teTdNE(rZg=F4~f=rs7;{MedO? z*deM0hDNEJjFrn84q_SxFsV|h4O##6r1F^{eG^7O?^Dx8fF*MLc`G)u?2Ku*hhXZF z#<=Ww9b^?ae0;U!e?9^a+Fi#BbrhdTaWZ|HZuKQr~y6Y&2Qm)^ZI^FJ*wzghZ;|MwTd|7-d!FB}#? zj4e(>^rQU)oLHrI=MRFObnF(`!N+ZP;5E0s4lrS%hEp}_XI?Wbcj;V8zwowr!LN%+ zR|<=mV~*U5+HSv(0lD=%RMZ*Ti#LD9W3n$9oaq?SawlKUP)v%O|jDM(c2gBHGXz+THb;we@jb2*> z5@7yV_4gB^G%kV>cMP}0Wf;A%&yGD7nyK6q!#3)pA@f=1BD&zOL*aod`q5g?W8yT7 z@IXD&(>fAft?1E6t3tgt7*ZnnzoNX%{N(MyAtv;lPi9HAZp|XntpmT zNo;Q>AvZeFvEq0pQGyE0kELRmM0qL5zgLNd6losJu)3GdvFBO1@0Vncha0{|c`SI} zP6p0q!_(3+DXuCiwq?@sON7Z3$@~;io<(%P?t-&)gGSByDzPx=c>D_UeePDvudZ!i zF0B2G+D*=R9nE3Zp8ocnFh5XDRCnv0i8BOh%&n@803#{+0C?ZrV-{|O&crr~Q7>%! zH^Ypr<7h9?g;awBq+THCW|LWw_9Gs_4lB}N@ieRd;K(NmWU8*nII0|;R*x#R%F)rm z(XkU{GB5nI7dYXl(PrpmaEJ-`WPaYs%^JXt!`c!qIyN>k(a~NyC;r1}jg!+$0WE)Ad69A?90v%_sUw_H2I2_o|5%s<1 zieBqFe>3pB2T%39qNDt@yI*~WlefZs&aY+49ho&s#6c^!dt$1h@5*jFzV-Wb=SC@o z=oAe_prntmD-+?gEV%=v2`yEawT|94(6%Qz7pUCQxUWqwK}o|8{i zv&M5fp{r;j#K%i#HwgOD?+b->!AbZC9PGFwIM3on;$A6QeI=(7gZAU-JCv{_$0M)Q zd3qI^!v0IgWu{1_v%K=2rQ*fURtlhIUPLQqqjkcM*3}HaBoUCp@4O;oS%1eq-5v|O zrVoqW|AuY;<9DqUKAAGC*1zG8G$>sA3TQrSwpGA?c!;$4x>y}<2GZ<2x(P>t+K_Bb zmW2njDbX?yfpdU&AHpwkHc3rMP0dy0G@yt{@^Ud|17R^>%wsmC9N)H06lyTx-YEj1 zi9+&Uz5IqB`1mTXC*RgDVLd!shY&C)LMNFb+G_CK8K47s1PbyPyX09Yuer5;DI)u* ztz=4PdyGmHRV|Ju&+=!&xjhF{4e=gWCU{h+bdReQCi4)GE(0Ed~Ow?l5gvdj;=+mL! zfh+VD^MCd;eTB;r*O40Vq%@X_qx$;2o4`q*_R;*)V-TtsX8_Vm%*rW0i5h!MM_lbj zKsP9m4x}3lQBpIKNbg7_B~94Y1HT@H3=2&baIvZ#51DW*eG-52v4e?&UMTvu5ExBXqL3WKSH0#C*^r`V_YsQS8Nr zKghQ_K|PaxExqBh{4i1eQF0z+7J2U3yz0dAkYYY&EUkZ>s4j+~y*1nuSr5$PnVIVe z$CCsr9H_aKu6UpXn%pF2_O&@;J*{!nYy?7Rj({CFX4q7Zot#r!%i5+;RthHfD%$Qm zG2iP#zU2?o+3RQtF()j7!CH>!pj#WUo0LD3pWm$N1#;f*RGiw&AN<+xp+8Tk<|6eaEWC{qv{VWJsvv41b$*;?41*FtK9d zXVr-T;r24k!K4Q5m_~UXS{iD1?ker6H1mssNq8(kk-}>kM8?;6W+krFCrhqgTLE28 zs!c_rHvFO51apv_H2||?kD>F0(`&JgiBPFkWsFFeTvZP{Dn!KYT19Y-AZ$2Ea#X~ur!IifzZ{(-J?PHNHhI5PVCwc~vAeLAM$IVs*O3cdMun zji4iOh@NBBde*Mu7>tG4bgi1ZbS}0)bGC`MHI}UZn#E*kU>Fod%R|=t zx)x1kLs>aI-ztYi4`+(@_U#{yUp{-zM`-cc&Ud4BoQI~8#_%HYCR$4zYFdRfc2whqhb=_C4iTVy^Q%9{>j@7IaV|?k^+x7+&_QUaphoqj{lsUsZz>k z?M~eqDotgmB6mdifU{THM*}M{`mm1hlIiqV=&Rpj`1Z^<$Lrl?Wa>@@vFhNcx>e&1 zr7^W2y_63W_n0PnHuMUP?q|-{B=YTGXMp^K)ZszROi}a?KSm&vLuZPWSh&>aD+EQk zV>|llBR>qkGKG#`|D^ydJiJ!)_)1~UG~hW^p3XVx0{mPnq_1_&Ho68hf^HwaBc-R` zL-~abSFfQ@6QR$rQjMSo;&4U|N-s$4JcrfA4YIO=&uhn(Po<-h;-j5qNsT1Pmc5*T zs9|Ts1hBU7FM_e6Vv)=tgpUiiwcN)nr=HNmxQKZ}jIFFKAb}%047JHhQH868e13lM zn(O7Fa^e;f

p6=Mfzy(=j)l%*$`WMJJn9sENr4#*XJX!Ss{w5$7!7w6Y%T0Po4P zC|1wT0L^4+G%rxq|5K8%KiL6vy8mbK&AYcT|Ic^DcR&3<|3dzsqk*67_j%0s4ehY< z!NG3rW90(fTmClAu+|-^$#;ZWS-@9dUK6)ds}I~>1MUY>Cy7@f$p(^%+EDBWO50pKOgR5CVDuI^%KVS>bwuW86R8D_4$`Q38EMtCZjMFv%eF=`;AY zkRnq3n@J7B$+b2%Dx0O#-ILn-!Tx4-i{kNCSTn2taF%k;if9df78eLakGBdBmYv6# zD@+uul)-P%t%o1zk)k)n-{KvcL7v_a-jQn)`%u)TQrg(T#h!UuQ; zpPX~F?qW-bBbGR__&{;sjncxfe5bgK|#7o=LEVV}n!!_Beci zYS<@12s+Bzc4|I)Pdf(7W$ihP*`}~ejrC)+EtGSfw3mTG$c4G1q#ca=%;TSt^T6$Q z=a%x%aE3Mix)1^J^ICfU)PVEd_;mhI^rf~Sc~AHev7YdQF`NJ7JtM=J&gNV6utq=g z@EZemmGfZTWo#svb9I1WEfMx*paGD>ltiM+?RQ1WgMwGTyrR_KUgzfOmK5u3Uj9jq zf5{hOs$Z&RNp)!rie?eir$^O{2wawiNm(;cN7+p2*6w#LcIJqrr*3sc`Qe!S5G`ZeA?0H~d5@%m4U|9xf zx|=z@YQ5inbJD<*k*rI>08|rwqEU{CQTN9z=ADYKDLTsZVG}>5t%?+Js~hWP8_1pS zLJv@g@`tlaa(d%4Ry65r3452h&{BeA{N6bI=N}y3OVb9$MewUAmW1H=IcfoV)bbf2 zpHnpU$)$b#ok4KRG3(O%lr4oi6W}3NGcLNys<$3J$gJ=JIY%iFYhilz>2-tAP|{el z*Mute@-cu)eZvVA5LaRF*K-6rMBXpsi>w9Zb(Q zgYVSWo$C0k3(|cj9mi-73&Q5~h%Cs4bO45p@@1TcZ zP|%Qgg~w{OM_?5PA|1jyIU7=QA|uJbLxg0)6H~GtQJJ(@y*$BT)o}Z+Wi&5cH!ZsagxH+#Va7)k{1AhM%1J{z@_mfkIcDHNxc3SOjuNh|5Qa9CFs~M-*CW;t zm_qpcS`ApkQD0#U#mX_NoVHwMF2x~ml~7EiBgGp9#@+ahc&V#}YkR&;EKPRMXSP?g zwl}qoq7f8&!hG7cyH#OOxV{P{M&#@*6_O+{S_&l07^`FH*D6}R$VAesE|{j3pU4n0 zwBheJ-+RIL-uDFzve7Cij%McPqTH(Ws^~+a?~$^sEx&t2+?8$3*jA*dYti3o+O`P! zVbaCm+N*23yeC`M?k2T^RfpYa!i{weMSN(HJ!INm=#e;RdS>s)lpWEhH|MBo5(~Gi zy8>VpKBiSo!gthHmN$z0o0a^OuC|zE9~bD@MtXFM7p1T#WmBh?4ERoTSU>M2tRqHm}emlj>5>Qy7| z7`lUPFU%+b&Aec%ke#Z92PRU4b}J6PY?$fnY%x3jLE3;wua`AiB?ee3_>4v)C7ng7 zH`AdaszMq`x2b`v)1@iGR8)l%Ot$iqyH?N=sEn&>4dUn4*2%W)vNUNS~in^ompG?(#x#9U~jYVb}jp5@t1-4&zyon!AnLu{*%^>B3&|QG?A1OqSQ? z`kF7{94c%aAc@04=2iL?{CJhl+Fk!JN#&LLE!Wd_-4n;7QMWYX0t#u)anJ=Lcnlwx z86Up*A9T93+(q~0eU1jyV0-JT~ zVbB>3y)}bnEe%>DjA$46y)o`ucpu9wdc1BP)ANbUI!%na!+}LXchUAy)n69$mze!; z)c@1bUuN0=7K%&7cc%SsapBER``=&4{wKExv&gmC4U)nLoih1XInJPGfFT5Yom*LMx)z=Fh}G$WP#Hv9~=9F9G5 zl;F{S24(yC&r|-<=)ZQj|GbM}hX2Rn^3sAq|KBYv{lx$JE7AWx7h2M(7)&UT^4K*& zsF`kW7^dUzWFmS$!nLy$6G#|XJaRn&k}BO!qSWdsg~wuMX$ko0ti+Q{E5IXK>S+t) zP?!iwNfb2Z5W^qnIA;=&k4a&0A7KbN2NqK8NUuA8P`fPv*gkv3{`2~uDhA3q?_bCn)X$Fo~Pva%jvyO?Gz@ZHJTjp^bUNfCl zC3w9au?b{*5-$)p$24+k!{0ZR$dmi(`N(#xB&w&$e{={CmA4bEd_<2!V)k zLGt0G*Juxd9*AP9CIVyDsVzsgHPwH9-2Bm=BZg{#1~N2bbaYrX;P{HRX}h;EUIC6m>) z#l@2vB5#dv}B~}^D!Guy1GRjEU5k#9f=Nj~R&Z&^Mknus71{t9j ztW-+t>y_i<9RCTww@TIhEP4G?YjC%q$NSB|haq$(q9s!1h({&A zji=RSZSrOuoFfEK@S1sN6K){y-tG1~-ios_9{59{4TS$-+@$^~l;lQ9Br2Y>%jZgp zJD=n#kkG}PI+UqJr43&ezbEmgUQ$r{9Z-DQnMsYGz{CWIE{5>`s1=F#fy?!bK15G^ zCS<|5)>Jn&=J=FJ&FRYorMq4&E6WP;QnxuUmZgC2ja4zOl#-h$ zS~e~p%gv1|qHz&MzcOWk=pbut1}9x>#=cNbYwgp~!O4Nv+L=EXj@-_tK`;y&K}WV_ zReUm__FCxPc%4Z`@Sru8!CYb&$@nR%0QZ}G<0uG6dC9^?5~$Xqv<0SONKa3z8zI`o zIfnSyQr12QxkhU`JJl9#VIkSMSk;UyTa`T&+0%v(1S^X0I`jvs|LHFSbdNg09x`dc zcIG1P&cb6v6<*W#Mdm(t&}i2X8kjwok+AslyJ=()FJuHLK49^yW+F)Y5F)1TDdXT4 zwb(F3K$;kZY?WeBXO1M+nZzOS?)+e+Cyo}rPB#6Eu8jlkMzLH1opN57qvMT{eOojP zOr+>o#r0J;%kihmdhO_RUqLP)=)b$bZ#qD&`h8R#x%J?VAqEb+eF-Q!VXQyL^weyV zDp#wlX2d1)A?BpW7=asQ?f9-VpOH_izIslye^g#v_F`I38F>|Ttd<*P$#^r7ZA#3q zRd1Hgi2^gWN+MUK`_ZV&Rj%&WWSm%xTdo7mVWSX=S~jL0@fW{$j3rTandDh_Xt%e8UH=PG_j#JGkEP6 zaaR`sau*wXKZ{#agQGQjl9BpZEA`e)6%kHNj1m(POjDpeTTHC~J^FvY>vvpAN!Emk z!3+9NF#^o6|1K>r8us7Ch2qk}PyPS@zWzTc;8Sjt4Zct4Bt(yo5tW`!4%-yNWLyt4D#Dj(xx zKE$+e^-1RM(XwziO*LC-e9jp9Ii{t@S$m~T!z)UghIWS@!7%te%7@;Mco3pEay8bxzSaJZS+G{9t;Q2Tr|({^YApQ4)E2BfOPG5-6?sKa|o} zyts-f0Q_+_$J?1NUW>>0T}jr4{vg0pMvJj~rRS9SnWo214;i z-VOWrYyH)?zb-8-zyEva{joplt}eZe+yiY}1s$bwq!i4dvJ&QOF^9pK?2mAS43mVz zz|$DgYxWBHim~Un+PIL7ARLBPy8|T`QG8d;x9(7V+w4+o6QazEEeU6P;NM3~eKn#9 zjL{qfW9CB_%0^(_kk^Cdpzhg%Wfe>?|GVQmuj!*7rE-FjE@Rc#PDZKc%;O{^_YbX( zx;=denId)#-zK`2vZWs}DKJhS$9aWAp?SqI2xz-&n?%zO`lAjxu(4TrMsKW;G8?kc z*YBEq-oT(53=1RHf8d8&A{`p^)z@n!M@94krwU%uf1Eisi{dBZ=EE3yA!p55a8__5 zWplA+lqPV`C3S=EVcL|}*ZHm@+*-YiUpgnq0=uwq%x%-}@yT?!*Whk+RH9v2_l9H7 zW7Lh&KV`QmbANrM%<=Vf54-;&{*R+D{n-wHv;6;-i*HQ-zonn~-~P({UxeRNSy~N>!ZJ#4`NN!JEsa>)DVvu?l$?Yq(jysr)a!bf z6}BI0*tqhsUM(h~3r`X5Jg6my61fysWi~ZyrY{vmD9RR(4h=Q#Ul(N^il{!#fNjCzsSRB|G4 zhj8V4RFn_ED9WBHHpCA&*m#rhlr7)9Xe2v2x>dVeRIxO#$yH3V05ymeiB#iA;)Ee=J`K~tr?u6C> z-N(dZuJ}%~J(kYe@`dmaW$7=&fdrXS53|9Nf8|#7CFuX)DpU8B>k1vyq;O)|e<{&LL7pluQsZ=Fr0TS5BFc>%7v8(Si3z z$6#kTL&Kw15UUxPIEr6e<*)Dun*5-?e1<>%{&!`z`Qpd|{5RASd?BvK{+I9h7W!6Om#gHvV>leGyt63-jY%_(w>gg!c&4*)Z*EYNU`;`((Oj*-6&OZ1{r8 zM8VtA7R&R1YDh6piGz=0*JNWun3CjKo4hAL^Xo^Pc@wT^E1}Xmk)Q+Jy7Y8pKQi;i zHV5Jl7vqbRy0FBK=0#P_PYXGu9usaIEwQN4tPaih!hq=(es0JcD5T4T%h8(ml@c&HN;mwql>v*V5le=7y^iOi_htC=I!i;0X=d386q7>uS^}1t zXcD>4z)@?sSlUdQp62|&NZ=c#zy&hG{S)&JOSC-!y249CC)U(d=!{tIW^7wj&nse@IHQi;Dcp4|%S?sQv7;Nj!-* z3h5znzWQ)A4LKtr2bsW6nSEJKQeA9V?#n6YOiu+}v@WAOgMyu*MC*;9i-zBLN1r+# zM$mQLTUfQxz+>%4WDU1{;9!(ce)_UmnJ&W9a2x1m-C;ra7&f3no zj^su$@*s)SzgB_wsv087KP zJt7YihNNmW)zU(CH}ZmO)65RKI&sGR&Ku{+M`24eJToVxE$?o~;Qy^whewf!1Z74w z+sMq>rN3zm_WUAEuRdzA1S51w@O&tS(0-#ar~k_<5#{XdVK9`33AniSKV`sPsgttC ztO6hc3;ol}29^%` z;aY;J17Ubo%ZS;O7R|=mt&e;ROP0Af#hsxlIqB$YtFC3s;}|XRtFiEy-%V=-k%O5kI(@BY^sSj$#a=oUbb&&# zOAM4^n%Q}d{5bQ-FRQ$Za0jHL+(j2a3FCxMfN(N{xOA5QSt761MJ8PKIp(6Bz;<>! zXsnwcG4c2Sn`-r#$AjAxGo6tinl)nq_=Tx?ET{;UvL+%~))|x~rq-lLt~>?Mved%E zfTBxg;#rDN6iwo_8Ffs4<%7a4612S{o@$ySg#uzZP06@wA`$B*1%(4QZhuX1Q*TF` zMrzF%bP{z)WCZl{uL=X!mL%y)&?F;{9zucqZSd`%nJ?qHl|muAmbv<8VdZ*m1^y}& zzKmbvBl^$lN6M8kMfFT;XxFOWs4UqHy8gbsenJCWix{t6EGASJmzB!DM*xHWWM7FN z`yspbsGYJ6p7Vpwax>^6dw@=zK@V?n&KR5?RrT;p3|Sct{5})_`V3ps^%=%jhcIx_ z>e2H^YKA3MLl{ygxU{HDP7tc)L{0x4nDjs*s^-*(t1jbVwqL zS!CN`Z_?M(8Zb^>Ew1V_s!1YXQ(GbbqbaUbPC7CZ8e?baM6y$XjDF&v{ltH>yVv{~ zo?tWZ-`*~n{$Goj0r02)*MEcmZ-N__e7qkFtDKu|GHLs_xG7q9zEXWe!oGmRG|rFu^W?m&aJ?k0z!0W$o$CCS zkhyyD>}F8S?5c>QPnu@F1xPzFm(n)0f_t-g;?w zw{nE~(gqVNBRJW|e`WF4*_1zX<#SG?rOct7eBjnd(QN1~pR_OVIqTMU@w5k(c}1{hF~0Bv*rrHA6L80RDTZbiSX6{;*Ijc*z337D=BEhl{6V5ZK2 zNUbaFj>Q9Wf>HK#IqBRh?WGEB4( z6(eUTP17B_zL5-2QWYd`YntJk@r)!auG#HlRvn@=TtuU#{1>qab}T+|9~Av12XB%b5l*F>T665X6AmbeT(p)7vVZIwl`$nx0<+z!b+|Pbzrtnrd5uHys9=>`=Zc=Y zck?8AJM;5yy^cR|7i?Eb8;Em)g8dX_vNjgQzD@>c^~+`qg$IB$Gk14PA0gOsC z%WndI_?XUWm48`76V(FqFJ|WrWBl>RBATK3dEtPaB~=6}+eO(l zOP;DvQ+#6LhGvl$EOr5?);H9OmQ7U1U9cM-{_BPV;~^eFX4w zb}07|v4^y=`hK583fV8E7~}Fzs1Bk^&ru-iy&8hV3tYftNS6_LGmL}5EwYXt+k@C2 zTK$yue_o^Lk|VOHTZli21Y~FNA1@>L-~H3w-A7|h|KQ6M zpmb#!V@#gA89b!!9rnQ@>+Jf?E zU!^3rf=NdWX;aO(bza@yI5`MFb|V7LOl#V_Yfzt1J^Do zVzd`VYjDM*|8fM0XR0aY#BUD;`q)9E1J$C;_xyT>r}S ztF-Zzn8^{oGX3hymsju-KNKE4ZIhLnz%(g4M7Yc0j)QB4geY(DGQLUZb~DBL*&9jA zB&}X&{7i_lIWPRum-o!@_0TtCBX&Fr&B)8ipOADCTcfyaqI&eapShy)L|dlxYO=Hv`Xm@c!!%Vm`?E(STFL zLp@NJ(u}J?&#bmSF8%?Xf+ zL~be=_$|NZcG$&>>H&8M{N98G2%@7h3wRA=0wIntz?MVNS&fk?MCCx+5{vX9*@>4e@{7c^PmU!wqkPOgm0a@&5N2rg|2+^hh`>G*V@7NwrYf|9 z&HTF|Tr@5;&ABAlS-(SAL}yV0V=;mhrXm-(F)=)(V= z=t4oyH7b^6PTxK()O|+YH4HWk1mFV5#Axk}fgk9tB*Gv>*<~0K!mFW(RQ9^bYZrkb z$T&S7?(-rcQ2ME%kWsltzcxT^uKpp91bP8i?hQ$kI7i7@DT`s#`&T4hSIbu#1!HF;whgk+ih$BJD^Z49RMs0uaaycKQmir2K={-u{+HY))iY&g zUDLLnZs0!$?lKq*F~Dxvo@X%hK)m2q`~A1yerHxGi7$Z*>$!uD?+xZ}kWe~iEZ@vH zLY@o4`S!j4-I?!e>5`&^Mfngx@gJk8LyDi%^lfG&UQ!relxJEE`jhCq5zel8B%%;b zPe$y+7u6>MHCTiE74vzJs>KigKoi5jgK-e+h8rHvP5?E1iw_oT37Z!#5fexO=B$R)5yWbuikg`?K~xPe zhAwToRrtm=#P55||CY6RmNDksYmA1J;ZI7`w(1Qa`OSgXo7RBLrbXx6q(^<-A}GGg z96;0>OJCFY?lkn=?y+V}Pn%>f3`2n*A*!o#;fc7(em7~_?~dk9A*#a`k1~akZ&V`f z)tySXid*qk$*1jwW0r?0$XiKGXtNT#=XH_6IQ?{#lk^CRfSfY@8Ck$4D&fgqxn^+i z*|-fsQ{PZYIwWyE$4H5psOYdrRB?eSF3w>#H_CRetEK23xfyjjGToa7Lv|c=ndl&n zD+Z9db@DLrc(zC8F%M0fgqsD=0=;KSpTG&Z@~11aM0J7U-Kp>+G#sBDp6Caio#{F4 zw39j26Ds8lYhPPr8$=^ zSQ#-fA5@X@wlLRc9>vGmYaK_2k)RmI%~%{x__v|CDV)wvAAtXm{XeqF{t2D{GxC2e zzInS~#{VzATmEVP|L?N@YeANhk8^%goRQ(0K#VE)zkIJpR|=Cq@!Ls}m5eKltnJ?( zHLEk-dfGp$rpn}lkQ&r7F) zbG?ZjQXq6xf$2aVyYVv2LdHDTpOG0(%9M$2g-7K5lbmj}zR*p|Y zUE*|5$}aW-!$xou*W^;KI_9$+MQfqn}q99d^8c`*KCc2sE+ret<+dEtd#0XlaI}M^!0{P zAtv@xechu$`4t;cq73ZI74e$Vx1G_)9Vr4+1r4 zRHz4H>-dtV;zDkc>`ly11=oq;taGZ8(&8G4!%`Z|yS<<{=>n5Tai7;_={ZT438z}3 zsb@Kv)~jcY>iJR6|Ko-7FtXRW-8$Se!6>XTuKhPYEJm7NW9@5>X&vS}UavK5JO6Ns zn(D)*g=69aUcPu9NREh3MlSBVoQ6{Xo1q_c{KiBNNTKo6YT?-J*J_zCJ2fj?+$p*j z2wU#8-6m3vq=~0&Vo`GrtubVmiG(n-=9K9W<4G%-|I#$-mC&=PgPhi_TvMhRgST<5pT*SA?lA+F-{QPS;CBP= zaS?;ih_yCVFHT&cp+ut~5aXH5f2pdofxp#e82O@DMP08eD~c(zSMpoE04_i^$pN;`pkv6Zd+| zJ92>QOa42wx%C`aj3TCA$6%tG;ZUoVw8dEy*|=Mw$hVwUDG1!m8~z}VPQDo!Sk|N; z_94S>9AhCqO7tZh)>wJHVe(K;Dox-BFR&n{L70Dgt!D+W%mMf9&P0QPmpRd1_D{eM z3x|ogVKbEBw(jgYZWt=+wV^L&X-6+?cy=9M24f#TQ^P*%W39CB-~ajQ)+fVEr0Tbh z=&|s0s4ktNKAE#s8+lSiy|gV$T*_*P(5(BoY>{F~`Qh$4VQ%s^b=NOHur zR=3nrCfF9g#qm{%`6f`JSE`Sibg+Jvml2vu$CiLJjan#0Dda4sebmi}F(Cxg9lrdg zM`jEY#zaSvw$Io7zU^7w9Ls(;W2_=YH|r<*cuE@N z$YeYy#>L7=?dPZ$w*8wS!TTt1V(g_<{3?=QOqbs8xD8L}cA3grYI+khmutoFl!`u6 zGb|QbMT>G&y~(0Eat8XLPgFFGdR=db+^rS{scYCMNX!=&t(Z8b?RMFoW@SktuUFTz zM<}|D=1Dvu#ipWjr3rzR`)-37VtLpvts_joTG(5 zks1ZVu(-yBMD(~i2aC;K&SWlSs+&!yx`u}Z>-DL|C)w|TMDmXp^EB$O-^x%r=FTbi zj1jplfnyQfPr9Zf#w(-2sQluLQX&MD6YtpmeU^~}^A`GbzvB-{ausGu9>moDPJpbB zh1kH-N;H$!MxH(-ilpL^Mg2r$l1`YlqsAyVCb!e56?>d!cv}U@6Gh443coxWg=2_q zY*n-X502=?!}PkqpHRY_UK9s|`Q04Mg5%x0-G0YgG2;RR$i*v>>_*jtvb-5D@N-0q zN^bc%amY9|Gb3>^i^d02uiO< zfi=7(rjF`NWYify%SPoe$T=Nv_=k4E=SY)!*Rp* zsW)PSZR`3Yfxt7OkwqXN1@4M(8+vXx7QP!A`T|b&BdCXT9Pe4FIfT*J{Mo+ zuf8;-l_pG@Pt$SBpYb+J_-FIk_{sJv=A1cPmHkn_WkC& zbAvZT4ay@;yUEKkEJ3`|&f0WOCUeC#R|cFXM#9O%o7Mux{yk*?0LU>5=^Fo>*S|)i zZ7r9Kk{v?or=!pddh_@-p|67o>+LJJ5#OJfGDIYMBDV{U#{`oX&y>QQC2sO89XCNQ zGmLafxuoVnwbE-L*pnWQ@ZouoFPfFPxtJ1JQ*5B$y9+SN7e0nrl%a;!+)zz_O?h|& zo`#U}>*8x|&ZL%r^4P^ZLfksK3V-RscIOq#{l zt2AYV=kc4x(-F3%DY_;Wwi_f#Y2~E%c_`%{BX2N?z7Cc#*3Kh+T;7a!OiQypF3Sy} z{nK{fC>!~Fq%4%*XL!*^&()SSSw3lRPTQR*EP=f0Hr=6X?9N*s^PMm4JJ>EM*$1-z!Df8=7pZ+osPllkiEfr0ic9jlxY>E+7MP-)16a}l~R zC%t>Q|1HDFp(D&Nal}EEUBa=%u|Rj6%9L^@WcY|TBg3V6Q@u&78CrhcP+7po_{3HX zf_ew$g`ayqJ~$RONS2q_9?qSV^U)hknPpdk@9~al=6r_f&c_#h63i2YY%}u&pXQsu z%gvcoI z#M3$Le2SU+;WIk*l;W#|lbVa0umAlg)@GTj!v%3mUR!d$6DB-%-u;`Y%1*X%NOF+d zg9aJp+Qs}yd>^uT!u=b)MgkCPQ1y2ra3%csu_rIu=vGBCKoJW=HW%!UjWwwHE97u9 z-qJM^4CIa845ad&Rs{w*@rHS$CDP~e-I}1=jn9rqZ;$JRM1ykQ%;Q}xdq-44#GB%N zXvj;A|NN5>jrHGj7-&lD_tbx6-;;kCj=^GFk0bM_e2}Tauo<4?BKyCIqj)O6`+Saf zdJx?-lY>QBtQmEtxTrFfr0S!n=3`)rR_a2C^h&fPKkzZ9FU@4`tWEPnb5>^iiiz0X zS>dfD^V-$z=_CN0xGM&xi&H<0x0|+jV@%DPr>K>YeE!^@I1rOonl{wRJ`*A(Rp;+4iN7=7_dys zh7k(B$sKiug=F6vp}JL`MK8PmBNM@st0081M}I zkEMloizfcZn|E)1#{d5J;C~1=0u2M?NM{4II9HZkT@NP`k(2Aki{8#D&oD?(KtlEs zL8Up~`mHyS5h_Ykx?xgDzNzOVBVc9hL;a5EsntHg&Hc)n$R+wt=Gv5*>kIDV0fmTN z$(m$X&P6SeaaR4^4+h$Mywa~@4LALkM-Ivx^vBA|-o|pi?cKBI8QHf0MHEo(82Dr# z<<)%gn(bWPxV>1s!5>K6%E7s{T}GSB(39dm=Jt4D!!|wqRA&V=6&Y_7+qYvRZ8Ie) zMie*+I{ONy$@gM!`2c-`M(Am8bq=?s+&67Lban0%6S$MGCSRsCxVi zb8t`C_V_V)mbslXj$?-23{jp?ZIs!W88gMQ7z?6K=rh;A>c#N1)%c0G_J5QAtD#Bn zKbZdwdA(Tvw>Jwv`MlY~)tTPtI;!mnT%et;0|0c}{K?@#0+uYg3b zywNo^pf}cE^s&$FZp$AUy{Xf0?aY{o=k};huF`F6f@gHj9om%((6Xj^#r1u9$#`$p z@z^%PoO5Mq@Ony%x;wMkAP=sV2q-rlOtjvkaB9n>pu3zlLhWG8sq2Z!hiA@m%NrUY z01BxmnS{R;-mKwwp@d#tbp(>X)+EB27=u(F!OqDf4>~JSjR;&2TMNJahRL<-e$T7T z{z4Ilzze*{@CWGaDtk>?^<$Qj1}xu|M$^;}Q5>9<8U3!L0*Y=_*a9z7Jw@3oc9|K4KZ$UEDjd6KjnWcjj!Gxo4`@3~@Sx{nDjz%{ zFL8`2hNT@tF4DKqH2UV)uU8Gl%G}f0XUl0C|BvpIu-E@o=6^Q-|88;ljlusfzg>R! zlmGt<;Xe-X!dB27;S7)6K@+uvQ!pK2KOGCwiHHPEj3yEFQp{LG<{#(enDlRz9-OWL zy%mR~hM8o6j-hk*$_D``_1kaoFNPw6dgNv^$FLLcJZn81J^ELyAbqt-AY?<590ErQ zTNROFl39sx7qoMX6is(A32*&A2@^TE!VuMmyBOr0u8XGb#%M6W+eYzX*V3B6wMPaz zWWc4-tB*rc`%%?YE zd1bJiYN`!zVVuSLN(tPFm3d)OC_0Ftbamn)(yse3(W0M}Kx2VeYQfp1fl=r%FQaW1 zv%+fDq^ThsYGuT=no5MUsZ=4yv?<2(q&jXTMjP64FvlW!H7JE1c{&C+N?2N$w)bVA zu^2Qodaa&nZK=3v%yLFqa(dusr4DO=77=3u}6)uGHYr>o(Lg(U7&rB-58E=xN^8K=MFieWCScLKFGA-$L5Ox)rq4(7W9pOT(gUk1He@x7AmfGm~VKA8_2ZZA{Fd>PMWoiCZIe`c=> zQdOCYQ3Q8X`DfxqoKn=pZFfoXsh~GX@OG4MrfF!&XgLmkCjP%B7-WV04@WF zaW2Y%E^2X(KP}Gxar$if+AA$=tsnofbzH44Z5&q0>*Lc>YH#b}e*K}eQ*P~_l}i^VrQ4m&y`$Ul=J;ac z?C|ho<-WXK-+J#~oZp|g=gm=dYk6_^^L~5pWIR4-U2LSF&_?B9UoTX7Ke=4o9J!zS z?dDeJuI`u5;a&f7YjeRpe-H2X%hmOT*6BjKoZ9<(x`;oH9;)N*c4L3<ZEhrR8&a*1~5Gdnbouc(!={wH)pphU4`^HiE6nc<1c&p>nbZ^HeIHR@O`7kB5t! zp?iLL*XSfN&iSdDV^YiYmSy8WYl>uawukSkcb_UdUw1Dr_C75i!(f)@yx{%PS-p7HS*jK~r*nTa%hgY*;>Cmi{-FKq z=knY}x%BR$+j^LIqw~9yg?AU_gPnt$&x88m$M?hgxn{R3U1wn(H{q=8{WyU zHMjmGF^d|z5P3eG-lRX(m?e%%c8?tLx}_KP=vO!oHt z^QE_YyGy0_t>$rQIkj+6oxHnizhB?DbB~9GcDYyRpAHxAZ`M+k^1^=&(0gDh5l(?N0~2``}Hxym0?D)tsx>9~QU5(P4F?bXY0}Z>qa( zI2-G4O5+XKs%J+FpGt?@1z3`eQtQ06SGmRIZdOZ2>wA^bIQ6M@v32>TvR68+uJ3Ie zj`vy@)sN$ga{2IdyVR&F%8Tf&c4WbE&zs+iiyR#hrG2d%u6V_-2&4SbRU+ zUE1k1w%$LupO5Yuz1urj^PR~d^?p=_zsESD`eePbH6AsV_QT!oWxKI-6ne+YqtxZ+ zJd9f{iZ>{6+<%j0t*`%@98C@=(VFUa9 z#smsXmW%G2>iI{1xn1w=FI|4#d2r8{dza_S9Vq;;+l3SQrh1C+8(Xk@w>pcLxRo2- zvv&QM^-#ecKkp2n(%1UZ*{Hd7Hreg&-_l?>V zv3mvw=&W}+;f+n;S?_Ea=H=G?ywkZ@Iviar{yJ)&kJc+#e(^naFiJJIcJ40WK;dMz z+J}EYkCV%DMmXx9&mJy6pAGr&>oAJ1&CffG$n^H0)6KW3i}TG%v-`e(v3SZFX}y6) zj>5*`=IzDj@&f;aGpKx9U%U@5aBj9X7cbBE!{&LFEn}-4K&7)c7mJ;ROYC_IX87}d zr_sBFhR+^&BZtrk(SZ7PC%ib{q30=h@d;nJ=l8G|I$zyIoVdcHiG3aZS~`M}B>&#pj@cmF_Ori&&|L%gB5Gh@I3I55*_#;qT`8eVE#N zC@J55S%e11FfU@*pIE`=!R6;_QI>6&c-iIURDEgZ);$*!_$$0A5`g-br< zb=ZOK)@7T08jiBxzE~VCxZ67&ScRhpWmp4f6(*>vG~UW4*S2@X)KlDs2}p@ zEqY#GI)XWXf5EbSb+^u7t=|`$>(DzK@pTwpqq`r#sa%GOq(iIJ+bLf3I&eaZ;&gsW z!Eh$c#ruAdd5`zdfWrIj%kCzgzPtM3@S(oA3|HN9hkwQ~)O)DIF-SGH_s6im zVK@!`%?nWZsC_Xhe!bj!L$?;KM(+qm)4AL(N2`I8*xYJEFZUtbkqgS^S%B{Yy4UR2 zyUHHv9ZfDiUjhMwPv(0hg{?HVVd=U+b8=Jb%^r;+j!h+U%)7u@a(>mf@293X@5wx@UvLwJt)xe;X8q?+3#K~ z-rqIP57~s`S?B>p>e8Mmrhwvp6$Inr_{}}gdpKM>4;PC^BmR8<;`|a;X@7we;Du&T z{RGqs=IaOu%K2u$-V=wX$VhgtGrTzG%i3>Amxtt%cAvY|>ABlSZP;KB4Jddiws`BFygPLnz{W6X@P8nly(6H`!%lOnh?gpDAi68J&W0(NoLks9W4J7az?s5u z@7vzFywc9$EAu^6Yotzi#VXjosm?DLA3my4Z6B>Bzlvkq*eqc%)P&;5Ma0S4O_ zLxWvdY-~4y3LOPv!nV4&KbjpFX%{$E+Px_{p6l%FvmW370UKq2#~jYWt@y0XZXfss zD06-^u5X|9uq>?5C?#6oJm&?v_eHq(``*@BsF3`R?&9(Y=SggD*bD7Tm`pqiqv+xL zJD|QmG>!!6I)O_D&PD~V@(CV1pqa?cjJ%+FhVN4NveBiDgA+v+cY9|8n9w26fr)qC zZ%eA=mxmyb1kLT+;bj+2=pv3_vaqoCwKRg(CXHSPzF!i~798I<&8=pq?&Aj9hs$Me z1k`B=D+O}{9h@KaQx}5LoG&lKCJ~p*E?zEhPTJxYTK}wFE*~3PaDT#$l@f#$c!M{W z=VSdSx0Ycmci>a@$8ZS?qU$%dckUXW&)~8-M5+uI%KGvH5DhrS9Utz;L1U3~DaXsV zm$2g+y))l~^~ZYy8tS#$XR>_CsKAaius5(tuwmFN<+qpTe2=to+am+EH-d}k0WR9M z_=E%4IGxKSAmd#)c~GIb?GguTd%p4cD1hEW==32)>xu^m_+)53Y%WG4DZ`!M@%LM> zV`1am!SxTL1D@JnUcNYQ13{S-M@Ws`-un7h5598?Ms$8Ugu;uvUEs>Q!v~~;b;&c7 zm)!GVe-}1e{c{PgcX8tsfthdMRtDlCp53!&aEu##RMj3Z{jjv~2{0cWEdpqsRCG2&-BM#BlXR6Qz>eNw>F+at?D|bDZ^{5b>2O!_SihV#M0OES9TLTb$1@^~-YvKEUV!n7B><6;*^LGr@x$>C%V z_CoAXwcEV0P6(nezp~EZbZs2M%)>Hv=hiE16tIPXU;MlSCv`_2aq19xh4an`8BLfR zxIoyIe#l;4K9EFm%+LN;rl8n90y*t#skB#KAjxg#@bEl^V*UDhxK%nl-7Jsy%H>vT zP;ON=%ZH7P($_Mt_-p0xYq_+y@wWBpW9e=CYa3|7(HJE;;L>(NQ^Ke0}c6#h4Ubwqh#QPA=|BMkdzE(!~2@880zee-$P%5{-?#pik zR_CFyQ61Sjx?I}Foe1oGxAPWGSRc0Z;sxBu?p9@TiAotJy&jay7nRM*{r%DH{^jyz zX;iE)O(x-?_wHz6C)HoRTi7fA$^`21;l*CrEp6`9y^EWz_uJ)*{^|Wg>0x`}U29w} zEw}r>n#!mYYNJYTsvw+~J}%r}6h0ok-FjbryR)-jYG3J`%ZCp?vK{-*8SJB)ZN3~`hMf#a`5i$#>VoSIq$wa>27#~a(#SUee-Uof81KC zFIOHW{@GpoVR`U=P};coRK6^iZW|{jr#q=|*j&CjuAl5xKHkoS<-*2Rb9eCeZsFbS z#oYPP1<=v*=wkoosC>2_9DR1{4=2l|y`4(+;sB`K=HYs(cwBfhyk8m?$L~6CmVbS- zH+VNXDRnj)d*S}U?dh9VxNrbuxc9bNx*3g%d;5ij^2PdSd{Fq~V{^E?n`-Ucuw|WPImfQ0m$g$}Redg$|_0n@}12geI-WvM<#pQ+NrJwr$zkvR~;-0Lpmx^0L z|G!%<(Ld#*%DeI5ZDYJ~c(L;_xU9DC8vAfH?UoNq{rhgCLj0KcW*Bnsr99$9e=0z$uDfY>1|E+&Q3np?+PCu-rn7PJsUMY9u03# zs$sBLyu2&_ad2>cxcq6dvHQ@S^Xfsj(f*n`-fkCwGw*M;Z=2`C?bDma$3}6x&~BAK zj=a$y)wi9Si%Bc^c+lS23A)uwueEUd{^4dY+&(z=#;0FX-TRNlhf&yHdJ7*lxGnda z$K76K|JL7s_vYsA-PiX=?>dFy?N8P<0E828tM zYY@Km&AwH7@Dit^?c<}nYWw)?c$mo@o@5)P1LtbZx!xF*^_Bc_rM&MoHv3zT!?i1~ zIcT-d_pi*A$B((A?r~+c(@m`OkGF<*AJ*Ni%KH1Yy|bltVE@{M_S!}BapQ8?8P-o8 zvh5=5?!!9(c9$+&Dr`3%U2N?ovaKyxlVUD=aXrd2eSd}N`+@0b=l7QIeC%hNtioFU zpnXy8dh4C7`f}sI>{b#-#rc65H1-P&uHE|1E zNKCsNh`k%wrwga%(dfc0=Il}8_&D3MbLGQA&*u_B+!%%VHk5mY4K5tR_t81$G82OR zELO6^Vs2Sw2+aePA}>V=$m<>6S5LcJ zpWjz=+uM7^<>k-kOIu4-*GDo53CrxmGVNva*Pl1L8{1C%pndw7FLkVgW$*su`|)1( zYRTL-3lG5GthLtKgVp2J(VClBT`6Vm2G#4vXQOy#58pe-m#fwD*3kM~Y1@UZ>g7i9 z^M_Xtuj-}!-oRcNc6NNUe_nPk&f)1}d-sK(d*T1Al5Kl`)(&I_ z|F^Qb9*+N($z+ya_`jck|J!dO|JPlK@P7wYPamycg!#V%ng5g7zr^?Of0Nk1#1#H- z{cJzGUfj<=0J}F5>>s>?=eGZ@c+l|Kzr;6Lrj+<~|HZ{ge$*@@HAAkhSaL^)7s6uY z;k{b52V;{_(D{aksYo>bNx=KA3C8uKucDI9keo#*2acMR|Mc@VvCv zYxW)=9-EI3Ug7xF#;JL|p*!PV_M<-RKa7{l;|;fws2pXF?8@?SvABGBS6y0LZI+AG zy=r4Kvp;yqZLThzb<11*gYC7$)yvaL?(D<;>EqV@Q9pC#+`0Ds#^v4pT77iAWgd3x ziR1g#gMOyGRxen^-V)Hb!G~?LRV|;tf4|oC>W${%Mx}IkRJwy-u2ntj4B8(}@6xNE zUalSVugr}G@N#Fv@%z2g^F$+4uH@IM8;6@C-*<|(<7~2c8%Di{Sh*87kS+1dw1D$+8ReCD2SY21$aB) z_JnS5zkPAFw^wQ#E7yAIV&%iw?p~a%F6SRBWqWDqal8B&w$rH|B$%O2KAW-5tyX?} zWx24jw0ZK`9Ntw9j`xoVXj_$ zHQLy}OI&BF^)1I4Iu)yPv3b8{zq%fp=Jn?0#@@x{&^pWwm)9N}7blH_!)kZEonPHL zZFNtpm*Y}t&nlLh&8v&c{nqwn@oapUxLevf-5ihCub1m9pNEgF;i0vC(s^I__}*!E zTe;rmxObkd=P$jBQM2D#@1Gpr-y3@ykNt;-hwH)S@%X*r9%NRIN5jrhqSIUZ{BUsn z&~5Hn=5^J1bv5pNsOruA+Nf!^m*;_@oIaxw!M0PRNUKGzpFai zmFm)kv(ad6dqX3a_^|e&d{Mfqx9i3HQL)T8JvJBYwj$eXiI|YFe3#M=0cIuNGeLkJ4$Y=eB#x9nG}cGk0GE`i%HF{e3$(z-J0B}-{*wzl)p#d{w+E0l-hCQh_pT--1nf5 zfoX6Z-X&t;Mp-7`u`JL^MoDD^LF9pYDD9-0@x9)lGH&UvS&PAxVqeF#P=EduWexdd&?G8!HXU=btd2D8Eg56gIJ zcr0@(`K7Ypx@&8zYB|bp2OCs`Nl?BG4aaPaYk(EdN%aiy24IGr9s18@zEn84uAS%e zCAAWbnj+An8!!Gyy$;k^gl29pC3#AgX~>I_0#Yr z-C{n$DE04~Z4-s|BeUJfy6(Wyt%i}mM8+V_GH4e4Utif&>HlhG{&jW?+U#wh?fd?p{IesC3@Q8jt&UFPZBa8b9q^OIH+VRf{oeFmw*H5 z?xQ7bA>SQbKjuFc_Zn<^4@I&zPMq|p5Hq($8|6ygDdqrgK#;#!qrjAy3JmafZf~!# zinhB4Fx_f9QM$aAcpO-bav{uh?QwgE^Xxu+zp!&;8&Rwm*FT*160f$)o9pFeulTv% zTEEUOjT_6|a{c4Ov3q{m-7i^o+itiA+x`B1?&0CY7~gH@uKUN`y{n2-S$$u*N}Qj1 z%V)=>@kg_b-d(v$M^|@>S;H{=@p6_j%C!uyuCdIq#fbcMo5^Dt>TR9?kOF z2#DAFd@=Em>+D^&h9_6{{bkEKvQO*Vr;Yag_VCVLs~&i(#nRx^-D=#IK7O{G!{zM3 zft~j@?aD?bf7}C}GEul+?_OUUK-zLW<8u6dwbMPm+^!DRyUUI0_~BKrxUBDW^n3m2 z`~m<{`EY#ju$<{{T{b=A<5_++(Rtjv+B>V3yj(AvA0DiqU7KdMbFlS(MPD^fnrmCG zef$|@{#>t;8?Jn8cCRaYcDZVFGRt~3>$Vel_hE0avUXCfm}})NHi>IqSj;kWUcNIBe@5R!@ya!g?GRKDMt5m*b;)q1swI?irtl5AAXDK6`Pwb$GnB>U_*! zU7ek_J{wE?W9-e}}LHt!E}Mq-$E zKjg}67F`NMhZbD`d~^Zn75b@IwsD(p3SE9a-1dE@i@a?`T+TaVeo z`|Zn9qn~(nc0b5(oUU%{Z6E(PFdH-IKT7`DX0ze|nan?Um`kaf%OatFy|TQv^*lAe zEc(B>kqO)XuCK4W(Ep#o{`d3_D9Xczp#OW>N-V7(hDd#-RLNHp#l3={^(PlsrTfdH z_n8I?!qvjV`@8JDkoAwM2lpQjO5^5-Qy`@1BzHNk_YT}d;h8%t(HM(|e%l)yLv~essFuemo<3UkJY& z)kA8F>T>lVaj>5)3wobhmWO$eE0(WE@3Vqk$;6H(0mG?Y9%S1U^qyVW9_x>JvzW^Y z`u|aeOX))g{h0>WS0hvw5ZO;O_rHPWpR`sF@6LN$?QH&}Vzn#Xp_e$?d~o--Rx+>5 zvz140qn@vvedy=9#n#8O*0B0{>;Bd9{^8*4{PESLS3Pj9y5nB;%Fd0-ADsG0|HF1- zQ2e}f`q=i4?lwvndS-O#wnml5CA-*PUmm;W#pRiG_+hlYW_|2u&$Aouwca-l3a^aL z#=+<6>Enk)?|x&rS3m1DK9(De`su}W);Y?rFR$&bUFSZZ^=!R-eSLrI72W*S-RH;t zdFS-5_1ItP=vS{cGs`C*68duG{$XQvP_G`e8r}XwZr^w`uCDH{^j!6HsgXSyt>*5n z6McEVGhTTp+oeXSd2Fq$dZ+dL=I6)LM1HxvIxY{J7o%+VRqt?Jzv^EX9u8Ogk7wtX z*5$|T#&RD>{c6tix}JBMt3Oxr%~#!Kb-TKpxH21@=AZ4Y?&tPaDyproQ(w6@ z?#j#Whpml=+{fzX=xlo}S2?-dvq!lRDu#eTV9Y^2!W;A@ic>LJC+uXlyZVudwtB0e+b>Xz+p5Kqpjn>w-d0lx}%U<>C z+xk+Wb#5H>-WNVPW+mG=?%Z8%ZF%dZhtuOLZ~Ng@Ww1V4Dvj0?8>3OKTDtJ=oaL*v z;!&$)eX!miue#g$g1r`tJ?u zH6;!6Uy})9R{TFq_7IBywYlNKGU`Fpf0^uW22JA3Cm`0 zJK7GFm4lm)^_~c&UWGytt()?|!7uVWnU6o%f0hCIJR_)AH~ zJX>q&4HL$O`OBPvWnmO>)5DGf?1$zbII+1z{`B%@Zm)W}f0C~q=8I_VG*Y28CGi02Q=KZ z^(MyYPs4KZLEs1o`%%ny>{XkKfNw7Oay#;J{}YSpmx$_Vcx~gBoyp`_)_}-D`dq8klkZ*Vb27!~TCOD=+l_2ho3E=YjOs2cGS~ z@1}t~HN0yM8eSrib7p0S?>(R>E+R zNl&zF7c=&;3~T5lNCihmw_*42E&S;XEYlmO;H3uqMzc+FAE`x;T#4EypktATR)|3=7ySK(ZPp6&r*2k5Y3A zt2=hLi%Wq8EqBnxHC_S$*_0uAOv?sY8k^**U}XhOnSb)5FCB zv6dPVa7povO+T6j4*A}s((pzcxZq^?=M%=~CMX>v9u7AKat?byaSg=+p7!>Aw zG*BA=eYRQ#zyl!w4Z(W%T7xcZ+CAv0Y4-^u#E-Tg191i_?7HU~-68CG&rY;-)9JEv z*g)6=K4dfL_q$`(z5yE?hG)S6=u#zi^kEkf4zw|8uBEpTamg4Yt;H=nph90IbH!0n0^#C8as5L`pOsrNm38{Mcp$I!3<;oshL?4HpFEPk6xi0rwU^lEw; zFv}2tN(%)rxIxv!&eD=}{$DqEBV@41D=%f1R+pBSZg2SWZ6XnLv7^msCE-__Sv1t) ze-Ho9bv}Pa_J5ZAzZRDNmp4~lh*4^DmL{%>V%{pI}sh<_+p6$=&Z z#B3PIWh}x&G676sf6U~C#YPejc*R5`1$&epgEaW-TlviE1CU-EIQ1ZZ_;QQ5e*^xh z4bmf!|CENpEpdv#lA*K+3Ow`ouI&vV4%W6RP387nX?Upw}@qri}*R>la@hyt* z&U4o;B6~4c<~8P$)JfCOy9ut85TAUR3pEsu*>BfyaG*PvP$>G(Hb}wbjg@G;QC#gdStvhW80Vzz;rFZVUuLGgFG9+wGPY-&4n#F$P6%4 zHUyG0f>q_8+>XweSuUd^Bb&fiVmc0XkGv-`k{W4daQvZZBF}h~*UD!Hm8)ziuNBJL zdFkx3u%F-8=CWmYo=a(0h04)cwW2|ZQuefRt(_fc+0$$7xNy3k(()h9OZjqHJ1Zp$ z#q*Ow9^MsBb0^jP!s(&52lYdpqG3xe_BaHukcRGU&4b{ zKFXe)U{{H36-Hme@oBlU^XpRK@Tj64ot^CG;pJW)MwZ<>$+NCtQn{0Cp_tP4v&HOT zo@$*zE2RV$W24iqj`H{l`^&=r=PIaDhiT-_PAesNOu;Nm6~F3Lp`1@?*;1j5068d~ z6;lZWC)7BjMxfqlp0$FY)|3^2BKTY_=luq?{e1QW+JfadRhBRPLgoL<=zl4n-7n_9 zSMC2?`oFp!&i@Ylf9A#h=LhNkB}$HpDa6?|&c>rw8#VN#Qy>8VHUM@WVw9%+5Xv%wr_L|x_mHQPAB2Pc<>l4W#qeQxD6oxhA%pSI5n>o*d-~m z`A%e;oW^!dD}b_O3I*a8m%@QqfBN)^Zf5babs;KsEnop?la0sXMn+f>4axt-?`0E- zGsnNGH5qWx@E%wzzodMd8|{bYQFUSY1URl7(?bP4t|-=X1`S5=kp-mU`*>Ml_eqJK z$hJ^_)aV!ux*tJ4OK6s)37*0Moy{Owrt10y^u`mWKPs{ z>G1jUg>?>AL44M1OKjM#jTaL=z0ol(|3pcHrIq0I*?Dx}0O>GNoluJJ!oi{;()fi6 z&>HmWG*Immf0cIXpHkx3SrdBW9YDcR$82;M%p0WhN7RD)dA&^wC3S|(yW63!{Jw*A zqqq6>27Sf~pHRi|iQyoC!i}sqxm}FYrX_$+Zv&5)vz17r)q$u8JLlwsnK+nDwTx$DFJJUYwz6O@?n9q%EpW5Y~>Y zP!Z%@wq?Q&9Sc|1D7)-Jnrp%acyG$jywmeVmK#Y(_J>K)ZmAlnfw_R^E};yaP6R{y z$MS!0kp2P%@C^Phv$7Jg|61OB@&EZD|02F5uz_P-PMS8;?sim8a8*} zpaQ#P3EyM&xkLhY&(2N-UR2-(dALv`NeW#`aZ9~4>_1m~^G2J)FLUZE_`%-bw;E$7 znWN2#>3TN{_<9LrvexhyP=$qCa+0Hy*L7pZ&ggt-;P?)3j$rw}oh9%R!eH#r=-w zBxZ~dm5ZZp3VwZ#ffl+!;KCn-WetcwfNgFjqddoe#|G6jS~}iA!mxl^bnSW_txCiQ z;a8ZiBB&wCz2)FH2mq1RCRdcf`68JA4ESH-Y5z|9-*xyFw*TFDiU0OvcRi zQ?K>nj0SYa(Z{!xFzeU1|C2}zZL^sufTUlW-t;0COeVf0wC6Rg?P9qmpd!ntvB-0a z6O9-ImI5U8KZ&OoJoP8ff9LNw|10aOFX#V1cK%xy#w46}MAL(QLwAi|-`0*2^X%L` zx4f1~BmxwJ(gh)sdBbX&Ep6$yXSeg)(#zTX;pe|?dSotQ{LT8m)o}i|%yrh=x@9`_~F{{AN-%5K-mL&Yg4tCE5M)T{NqPX_`gT)fA0C;SlNi=|6X2uIsZRY z{-0_ZAUs^>CLZi(wll+iK|uiYFi8}^6u33K6|7ONQkD%jWq#$x7`xhnrY-ztYQMha zv8hRs!K@5kOI91a;G}La*acLg+f0YuQ?_k`*|nzAX=-e7TIJW7WV&gOEYDtCX4V;T zV?@J?{|xSX=J{U=OfUa>{om?Fg#TaLc!~f1L;n3dXG}x~+tucl)0y=0+&}+t{nP0` zr~TZC`@0!{S^ht3>+6yDUmGv?|360lN1|q0?Hz64wO(%}U_WRv!OSskEqs!K)Fu=E zIyuYk*Uqz*BN0S*5sDbNr7?RFA?n|_F z3__gy|8^suD}gRh)DS)fF*U-zP=5GAQJ1+ryMEo9s7rLv;jO4e;bEjP-b6yj$dyDb zchKvhW0a`%>*p`BNBM6=98sqZlm#5CKr zt+wH4ayc6x1Lr67TM8N!;Z?*q=U8*T4;PCcF*52dwvQpUSO_4L9<^%egz;4oE|ZM; zUkA&^4efn!%oPij5bvmIXqsgV(Gm=uHv9-qXg}uJ1ertbnL!RI%pC`d0+bAsOjyv= z1&#j~=p*h;_+0DQuD3uPcycxB0o~Rx)({XwEEa~AYc!ZEd0a(nOm))GG|ZhQ%7Xti zYo7gXai?c^dQBfJgZUuI@)3*2p?M|;9>VE3cz$O0N!qron<>*yF9 zX->dLTS+fdFgIg_PB{KfV&3VF?NJE3wvJXnVl@%O43O!$gr5e52F#4OgYEwbU2VGV zYxe&2axqpNIEzlS@xY z&EJW23?tL0Ai| z({IRX{dS_9C}WtIiMHf7GU+Ir26%bmFp|M)uUhVaa0C4f>rmjB}aDd8)a zbAbae9@);l4~4Ka`nP1?`N{b|=TEVH&zAp|S0nMC);3=Bzdz*P>(?x1r5a5o@fr?e z*LGfHrT^9PA8Gd4?;4|a^}ogbV`DjT|GW8O|M^4pzvTB`>lod>;eg2H$1ac=1yv+M z_u;0E%&G^RrS1aftGaA2u+JLz0$!ZjlrLT-)0XYknESD1b_4zqyJ@2C)deBLBd!@l zoYtTl?uUZeC)4Ov|9KJ9SS0_>1bYAV=U>_wf7AKTMB=}|`G4{M`XT?KN}PD*PmKOY z*5gdG5?^>ZbpO!vPY%|c{&N@WzlZ*Z?|)ZU)?euVkEQ=42K)4%dp)!mvd%0I3CY$^TGvu&-s@&#@}@QSC%u8^S}Dy|MA~L|AV3;bjT8VhdKl6g*W(# z&i}xK1O7MkF_Zo;hxq@@+S&{K|1tlj=YQmO9Xx{@5K#W2T42-_4l(69-6#aACF$kd3pxMm&%eK9e<>oEb^g~j zLi9hgvAX(V|M3%?|41O1fjJk=NWTOOw^Q?jU80%jEX={=3yw8FirCp6JCYaP~6bQ-yuH9~77yOeLP+xa+ zGQ4BKp-@$4H(kHI=L`W*k>LeHV3;ILrs<397$vngyXyO?i=(^u2$5vy$fiT@L$$_+ z`!2Rx_(Q0kWxos8fLBv0(3Ex;+024%PWE|Or%l!xdBUCC;?|$Ju(rjTY0s{?$tb>| zzf(G1Bx~BxKB9N;R1o94DB#6{?C>7rd-5=i?4l9cw<(QfsoZ57D{{p7blH|f+)c&( zQUFmj_?!P?q>27K?P&O$b9YaFSol=e8~4;Z1r=DF`@;euGx;?4j3YCF#YAEzjl%9W zYXa5^2&6Tb3q)D=Z)_Ufrr*9haExdrzv1vWcp6$UsCjLuWA-AqCj(rb6;VF{@(GxO z0dr(KO`y7ZpSCOF3|>5Kx;6dX;*sullE_T+*Ec&@_*N#nq5`xo(^q~Hh(Y(q6m;*K zrA{dwSs9rQhgS)>oIZe0N1OK=%RIV>i5r5tJV)s+<#V`M`Xl>?`)VnrE#HPqyrUB7 zHs%jln*YMyK0(pBIo$X7aRMpxp^0TuWJ6sWnN6>QdxcFAgO8h*-evEl(M_CyZ#fJ2 zE{(z2(Q+1T6`mZET@sB?; z)DevbW{c%y@N2(mIFkQOqSSwd{6`4sFBSl2#edIiY=-5(%@_O6e}Mj%i+8kVB60^K zw-X4-<8mGjp%=!elra80HIj67;G{RCaibMbdB>E4{^y?Rr>)v{Wbez7Rp zo_=N^#?qKl&;k=a1Ui=%_% z8>1D55;^=!-+vD`0}Im!nchPgu55U|y7hPDOKOyL&K>mJT76vO#PG|LDBw>JH6#q; z6jp#BmeT%R@7@bhioHt%R2T7eGDPJ#fXE((KC#&?vKf%CvP&j1AWYH2oIJy{s3$eW zH&0w^;*)4lJo7fiV`>TvLMLm$!=?47a-w1&CQvi+)y+&N3%&zbe zM4C?`jI}Rcn_so2?`h7oPEP{p=~fput6?o>lImd5dYuZVq#SQh7QLQio+f@!d`K?$ zJ(qk7C$$;so;S-(sT|h`K>tfZ(r8Uu7F1?ay=L(7+n0alqN{C3dPH3aQUg9SNzW8a zagkC0@&PzT&-R#4Y%&qj&HJY_&{IZ=3rvuXX?x&wl?stV|K^R{f9!IERvF6$z#w3e z-CIyXfC5X2v59vzSawQIwHTQ%S5z7gri*z@uy*`X+>oJb2vk9*yM7b$;`7DE7MJF~ zU<*%k;q3>&3PvTt!{@>OEdR$y?sP72=KXIb?Ekg7_TvBXGw^@U=kACeC;S`QSiWX5 z%ixoMXYdNLX)3RV7OPdy>;g5uhk~`fCLLmd;eDA^CCf}7$_bf-gQCUd9{u6)>jRmB zD>W5*8c(XAyf-<^|CgX(pIGl^(puaYN{=L{i@9cmmQ&QMF*)lX}G+MtiCpVptAHz z6rt+f;@s=Gq*Tgp9tOdG-DJ|~*O^<<&uf^-N>XJg;u;7|D$U|~2ms4fLYEaWL-><@ zBW>ef9Yn{aEX3CngndH+t^{2_KjsjspY0VQ?+sip@*0T#~RT}z6=9M!FKm~B$ z-bBjWra2qHM-Uu4&bi>-Kb%qCM%w80(V~WzK~FM*n7|Fe4AV$6LdBqzU*l%!|IU9Y z8EruSX~S*ked2(ykL1%I_4IG@9i3nQodk065-;bNXR!|{qFfypwkVjF>*)WaJw;UZ%t7BHOX9Fj9E^I)I{Rg_mS^a_$X(e5ElY#&6tWHfk_m zhE|g*U5H?4;IHq^7vGRMh4xhl5j-5;_#LTfiA&-=fx6h7g&c z=YG{(i5h56xSt&6T^4Q?+EE_gsY&8}$&rCYIs#2>cPFr&iVRMAe5X9}MxB^Oolv9E z`9}TCYJ4K6y1&#@_xa-V-L-y(bVc=`oISHi&pkSpqQ>Ua%}i9 zr~M(x1anMh7PJKAphtD+BGTkjN*n1e51)dKLdg&~{G!S9+;pzhUnfOx4{+qqXw}Dl zMQcx2CE|nUjF}=$x{PM5kt$H2Rjc2M!ln7;Z{`ZE*Qd5+yrw-khm_Iq^fv1Aq#-1u z^-8+cHmLkuee4-pu1jotg);bu0}0sfLbgq+h`bl?{(f1 z@mSlBW?!S2kzRBNq0($HSYs}_A6XDdm-M|H^h`gmz?L^1Vs{ziMb){f->Kp4>>O1p z=cl$;gw9*0(M-mDKgkT)v{igd?Di+kOZYrJ;ljO?Dnsqe^L7#QJ>VfIn>g%5+j{b%J|6Y@Z zKf(VmXTtG6SC=y@FaE#(ko%uV-Ui{Z_ku+JndiS}1JyCRU7HTQ|MdMv;WP6;h5dh5 zR`5#r<^2CN^8do~w#X8y*hNhGg>SA+=GpGI*8_gZ?hY|-*|*kY=Irj$!2JHYuAG>n z#wB))p*9~N&Z4M=0-dh44a;!MhOEA&ISeQ{fZlD}j_GxJ>5%=s)XraqT%Ujbmx9sO z+K%4uJR2cQKmRK$E6ZW~-}Tkam;6sZ)A@G|PdXu5#0I#vAxkQow+1~JalOlL@8-oD&p>Ne z#~!qqQVkG8cOjrriOz_+_(LlneQz2hrE=+g-bDqAF>u zVGqo@xNQO+2?1-Kj0*Lhb`vaD0Azn__8@R8b>Cjnu5`aLnEbWE?;8p_y(>5&v1OLfSh02fPyd{Qg&bEFAO5QJJ0%VRg*d3?94l>tdL$iRDXhfO1;?MTBR zjh5eRG7;VsUzh?>+kLCC$vxf1q6&#l)9xZ0Eu-o0#QIqK!Wx(-Gt8(RoM=%Dq2TMu z$&R0lBqH6!Xw`)>-5;TEye@4FrE#rc_s0|VMv6I^v)o94lkr4-nHOz~t)m0V2ezhf zIB?FPHPdK@Pj#r_TOQ@XN3(c9aUAKGDb?`9B2@@9czwf}JXH;S)KKqWs8;&04{C6( z&_RCqH6|_yeNWp1uWci#!;R&#OYU9fRv-IO@#v3~@Qsx4Q8rVPPsOf=Nop8+UBrTE z>1&!9<3wKf^)Uv)lkLK=6)XqXzt%7vRQ@@OeAddgr^b}6A2cFh$L;{4)ucC*9O^kd zaLLjNzVmJUQ=FJcW?MK+dZ&UzE-mKlKRdSVy-UWlfkvRfP?%m#vCIH8(M9jYX@#Vy zC<-Kk#zprN)zcCRVHo5V(|$2r;tov8EQLWSm@8;o=x5o!r+YNsGODPN*zhc_y+wK~=b&D!t|Im3OJAzGII>-PBy^Fhr1sG6~m=1@fF>qX<-~u>$7jXyU zX6A7@YCd`(ZzGdqWNbm;z<{DX`Saf0RgX9yK8qZ~_3Kn1%umhOR#Ye0Sizn&9>}Dz z88WV%*e`G6*#%`biF|-|m=zmZ;Taxcl;@P2vcouP6&nm|g+2*V%1=$`E8}=r^|x5a zF?d96cS1X160ANmo}Im86a#M>%x*KhBZs!xy!96zk2)1o54?ZU<#8$IP%2j%hcrSM zQf?{OHqzT**Z3DY{n`Wxh$W2OBr2hyD)Kzk)yJ>+V=CPD4G(=E z7)TlSBv$@O`-Fc#3C#F}!geoUi&6o;?T&eKc!xT~MZtWKmTkSJkw_vEg3@r1Z|`?> z6rh25#}bxK6D8-F@m}VY=Vz`WzKo5jr8bpbvA#gH)`Q3yQ7VdfSz?twNjX5;s@R+|5->XL} zWtm;&c*UG`*?vEMIn}fCSB%Ers56G-a}g8ASAsQ;n?aeOP+zVV*poeH5eRvK#m7xdm$y-h6)U(rZ?y5@&Awq(X)nTgWM&bFSzFw+a9$H*F+E8% z{S$-L*gEc#f`S0_+*b8R?_fe%GpwXfoEOwdW8_2Lq2G51MNjV#h=ZhImF^R@q4r1JYRj zP1AlC5sYN6{dduDn4Lq{@VG^g!{$Pn(797ThR#}iz}<+h+22*DRpa~qJNFb(O?d|e z-j@o4!sJUCyJ)Yp_&qp#{D{KDnV@;Y9KOuAC2Y~rhX&{5HJ$ih(~;&uXnCF?wx{^5 zs)GIR9*TrNCyYmh=fv^&*9c){am=7lyNfgd&z3Zz&{!vrki38-hIRVds}y|N^3I+E z;3CHdD&AYm0L7s;h=O?Uo|J9M1)5sype1GQ^zW}E$wF-FxR#S@1t!NwM6R{=f4R0=sQWwO&!TZm8}n=$(q{d>S`ybV&j#un&x(NjBj2uK6l^o zZy;7ldM`=p{g?4$$p!5Z{%Ph-3Y+Q<^; zSl3=a(0E81BE=H%B zYRYdVESkNG%m}ruAfC2(Z)7dSIt;ap$d+0+T_2;#6w?=J)zzZK^>_H!ukyY|O%ONP z7^XuF__y$p#gXWs-|H;6acKE^(4PlxKGKif<^fc2*vUyCFk3k5Z@D1Fj_v ziK0@pg~W9I0$IMvM#x;Xz+2!P07`74#izIqg(jj_AIBRKp{kYVYEtz?J=1k@HKfoH z6LjGcD1K)upzxr=_t*X`rQwOX(yOP~@M3=3DWy6paDs?qatMu3hzkv2F4vP`6iquP z8%Lt5f?&lx!F}E=3ak`21r>)zUCV^<>mzZq$tZUi(ovUl*B&@b6qClxB9~|wx@7Lt z{1@lx)13Ci;`l5O8@wREB1XNd%~dTr8o;cyObRcnjF098ZAt6+X)e?V2z+y)-3ZVG zVTz6MX-?eI@fRXykkU#tylO0NK#>t@o6IP*HR!g?ZVZaR%V?q7=fQ4a=fRmYm`kVe zfd17cd0dj2DVY+FEaI{B;6B%s?zD9tZFhoh9kEVS@xHUeB{jiXJux{P8}jexCsle1 z!tcf3(M&*7H)X?9@rM#ahkNdtLN-R|ip^>G&8TtyWV7vW!yaN8CYlU0L@)saFn+Y0 zV7Kq=7rze=on@w3MfA(|iaMFF>KPkStPv@KgW#l$W)=mLY-3A46-O69R-IeQ20co! z_2Dg%e>{vjcfwY7j^DyJZW|F>ÎHnS%X44%;w|2dYL_+JBiBhyiC1A?J&>piZ) zit6P9?N(q^AZo*yzsdm+#LJ*0Lz5~0qoUcDZBSziNIia4Vh*zTym_PDG*TQD-+oJ& zL4HmGdf@_va9b>LNg#*HW7+w``ooeVm&~Cu&2(I!Ql+#e5UbZ3BUe5#!`+TlN1|X9 zW-T~e!Q$=)3-cm<{t5X{cJBKoDR8F$_vS`O{##prk^g>v`LDuMjV^cmh?Yt#?%@l| z>9zFw!i#(OKlJ=hcX*wG5oVnK&6Uka{D;+*7ys{{{`{Y_rFSWktJ7ohpk7B?E4D|3 zIszGAh1un%TEcOg>1K4nA&?=hU{0Sn`wCTnY0!bO72eaMjtOG}2?+!=whOUx-yV?@ z!94Za>Vgo(ydu-SoX3Lpu&H6tCTNt&4?HU^<7F|ay&I3$Si~O~k%?L+ zrmpbFV|TwOIbyh|E}IOKarg+z@^RuI72J54G+n;#AWq8@M2%y7aa0LYiPq#I665vJ zs)+K)2vJuuH-dtWK~6HfG24L;$R1JyWGLnZL}1YFc-(Ol=IQw?c_3Ib5NmFSlweS9 zp+9hpg%s1w1%uLvg%;)5q5~6N8CiLZ%Z^9H!7LKhWez8=hF`XvD)Qxp{&$;2B1|8LH>x2p>X^$ z;EsbvI9@lwT`4#j^!wt@*j28W+1dIe$u49v!S;a}KRO!Qr<6Es6dvxu6Q*FKEVn%E zlMd1y8n!k+Meg~g!&e&2EO$)552fpfrL1)A7!u#P_C7sjsb@N-O@|(XR(J^C4YZKS zT+Q#RRv%-=8UITv08WbLk@S5`2gbC6N%#5!GxPlsIsE@5+!ry{oi#a;8Dj!olPD2t zv1YnZhK+=o3W7{pgiWp*I~&0!>Go_FErVT`X=8l`VxDsuPu!)vJC2UN<{L>$K~7lz zd@>8j4!q__M2=H2UicFeTfoQ)MswjWniw}W(>|f)$EWBlu{UJ$CQkAM3Sg+h$eb|j zfr_As1JIdEgKfze+t6LpVEhpuA-!&yPQVf5qh;WLEDqcOMw3Y5u+eS@5W|iSh)j~1 zQz-Wzz%`;KaU7iDcYcMHq;_PFpo6adKunGiF~SWBuO_uDD}dG-maI%==RoN;sJF&C z>0y<=?eZ8LCbvXl%_+LDxOS#reT8D8{6{doq)la`6MEFQvLbZ`mDfeg4H1*zlRPz< zU&44LO3DrOfJi7iqLx+S|5HOiT~OT_06|SA!fnYXU@>44WDk7Nag2|#?^O6sTh?~8 zOe#hbD_j*LMQ$g1h6$n*@FU6=60uSEtv1_(AXkuJAPgGkLu@R-O}AiEw#XLF-~ox7 z-%C1T%<|Mzs`lpIoBh7%jm(b7ypCUuzKdCfAT{!f_Vz!m{~4IyXah7W|L@9bIR4*S zX7fe=^V92pfCLPUah&=m-u8zs$w{x0j---jYKkv~vnS0abi)O0pI08ZB091O1Pwar z54^PYsa)AVt5!hDLL_gr^g-7PAu)lY3TJ_@Gpo*V3u_{bb#s`=w5d`2Fu+=<1VNKw zm`WRF=GHL4*i(ujI+d|+5Lh%(QW$VBjft3j%m7t)Y}0BYvPN$QsU1zsoPl8>y&!BS zq^$GOERZ#^Tb^P0!;wJB2Fk!H#-h9{C{T?1-1-L#g)={rppU5LGX#zGtb zk@SLzDiGz9Tu!g9PFRq-0h>+PU3H^vTJE!e$|~1_%CSIY47OsVgSNP7MU{I|B)&RiNb|iS6B@^jKgxiRGiB6IUN1V=BL+8nQUHNcm~3HFLTC;Y zO))$r5NCS;SW@<(o)T&@KCV>{gm_aYbMbD#4~hQ6?Q&g6>eTG+z7@SZ-G;rpZYl>!x0 zb707w*%WPZ+N^Fhrtqvqm!xY9b$H+^N*Q$Na9d2Pr0AC3D$uWaj=@brn`WzJ5ML6$ zF5!dbC1Ij`Z;?6r0c&HNaN{n!Z$J&tz{U^y56`C z#9(RgG02O`O3ZfLD20(kZD7U>EusL%rcnJK)%ij{q$!*LPx)SoUrWRd2iu}*i@tQ*D5{uX7WKqDX{1=B@)BCfuF=1Gqna=WGK8#v6H z6Arx++JQ<2Apw9d_GEp6|3w&H>7E=JvkoWt-uL9ek7>p1oZPF?<2w9FYGabpi>m-c zRdi2jk{>eAvVKjXXEiF4Bts4XnQ~~Lnyh36 zLB8lq(>8nJ=4q%wnDd2yACxfe*rBF9UxUClbGkopJBu#mVs@2wWCMInkPv`Ezh}E% zO&O+X6JqxG$6Zn&@?de1uhF?w%pQ-d=b0Gp%H!8*s)EsvjS}jd4he8R zx)<(P`Z6g*OCa>n78Ukp9x??s-|eo?eMZ(MIuy@8(DE?6Ad-<1Lys94f@Cu2Pj=Rw zsI21`wP7S7qh>yTK)(p&G%!uUp6uu-Qi?0Tn(fqZ-z%00IPyhK#Q3>Rs5(A8yJhT$ zNeuq*7cqgY-~W?x9;FSJo}>;|c75Jzy59|-*h8fbVuIdQOtERpX?+g>9&QKkCDhqQ zXx{Aw1k>n!R9yFq`tP2U@1mpjg-w1uSh zCpuJ8>V8|UC~9WmJ1fsjG{u??VH1=Y(>()mv*hx{UVN26h+5kkzrbQ&so-zA({@FI z7{#ZIsrlJ~L>7?#0$mUHPfom(D#BV=%|+He&ZPWLj4Ct^*>Hxz_tqzr8#mM-ifnh!!CUjsx1eK-o z6e-M`G8~dz_qBU}BO= zfsIDQC=$hYLb?Q5FbSduh%K-9=W|5hLJ{Ma#YKALnYeL4Y;3^%W|Haj>x{xqkQyo! z{(&}4BdO?X!o8&xANpsbZeKf4A>7bpQ5~679m0rQ<;({kih2hiL7g8+!eSihFq(`2 zAQ9#^CmyO`I{boUa#7BZ@M3t5LP>=f8I0*N4d~|G6y_Nt>aYho4>2vMd?5jt?*y9q zqS9j0C+9WPwuL^%j6FbvP#FEe5Cac#_+z1n7Y`k}9JW0?ei z>4TA3#n+i<^D&WoXMW?TI!4tE%Km~;g;YL<94=v4Ow}e)2PN*Mm_h8o`KVxJ#KDg{ z5iVlJUCHL!#|T2+L*bpgLMf?engT;nWD*5qVKbOQ$4x6>R?Ze_gjGc`PmKC*al%HR zc9D=M&Hkb`3*UeFrgr5uWpnje*(i*@f30;nVuBvSh~i?$#o_1M!WZP?L&MKRRnZ;r z9G8YLI~rYmrosl0Kg&bn>De$1X%%h*@(vUQ9it*%g{m7ScN3Kh$)F42pg(hHra;F0 zs)bH~nGS7MbArGW7kGA>Kd&W>PlENggirMLzS9B$&{kw z73>H40)6pAF^NI zUntk{@T1MLu-)7y(*uj7mc>Xe(m0-%yG8A43V#|el*k|41xntO2D0EU4p#R zLibBy3#rOqZ4V`s9etxQi5^jV-+8h`QZIRVg9w)4Ubu)q17XI*9f;$pWC%>6Bb+1) z4dyfmOeQY)RkdGWx9jou<5=21SQGi=c$Ri1*Mp76#(wAbv2Nf)BD`X33vdqGAndMa zwh%q}ia*A1g)}&j@x4WSpRZTx8 zf>2uqXh)|oMZr9Ij7VM=W5Dris9X|RiDmWXz=y|VKu-|hbL@V;W5i#}lZGR76+hJ> zL~#V+BHWXit(#--I38Dq^X$4Qsy zHzk4*kZ#e3ck;V-!!zL^7s6bmQy0(to}eg77fB@-@+h2BO`+AzL0@L8(7wYLwUmmB z;g(Wr!r#bpb1<3;;M|d}7+6id^_sGotCkX#=KFT_G)3_>)4s4CYYE`xnz; zT+ZTjobD|A4@lv=7(O#}U{YeBDY^HgVr?W3KwzYxop-X4-azlxzKugxD$RgJ%X}F0 zYka^gB|Ge{MWu;k#AZ;&pdqs;v>x=++c+3~JIF~Lq}36cOYZ!``guyvvTPRdy>EjY z;)awX3MQis`svw-b;7K}(+xnU!crp1eU@2X&JrMEi}}&IDbO?HkQR4@xSot`S}EyJ z5Y!poeO39=U;Iu3-6a;|sjW%HiH|J5C#q!dNy%=F^aPp28`ksfR5RF;NIf1bBjS;EhAyfA zX6e({(Af`5_Hta939=UcTa4D@gJ#S0^=sV3VztpV^>jzAR-R#_^5?l3Yr*?_7@7z} z25T}6CB|c+Stc!ijt)=HG$(63)ChJu_ek*@k{NReF4N{4;~Td-L+zw!A<4ub)OzS9 z^LZSfOw7Wgi!}dB%&@mcIY!qVHB&Qk}=z{hn>+ItI^xTHoSi`Nx z0%i810Ir@^GcI$YA5AWTZhUu5_GEJl3qQ^I#5*c!N>sP0=(nhG3}4y8_->LC%ye1S zB8{>Ng}sg@?$^n9&gXfsEtTDwSqUH+OR-g)*lbQifs+!)t3f9vb1CH}VHy&QMPGrT z2O~|PlN=HLeJ4?r_i2q^!B0TfGvxp8Qnt?Gr)fC=lhdw_GD6W48}hiK`tAfjL3VN4 z0AP2efPQR)%3^jnFj?S%%H5VjQG0^~Ja-tl8Ht&+pQGZ_#08x-e{~=MaAV5H@sX3N zM;SF72Du?KT&FY)Qff?pl4-jtuEv!Wmp;v}(&j;vI%1$BhILJ0Sa;*U3QgrUr8QA5 zN<2p!py(7{#SJi}{SrHDy6B1BdFRld?=|`*bj!*wAmLf>y8{Ypt<`Oio_+BjV~NYu zJtmiW#J@AF)Od#Z?>DJP_>)^h%R|^sXw{gaUW22v8)e#J^)^xC#c&}?xg2UzOgHhIZs9t&cui zEQOZJ{7E-Rief=s&X&kIsZ@pvmiCF(f($_{JD}OPVz^)N9E(h0Xfhxxv#^eXBCsep zVnMr2OA2%0__4tlvEnYDu?AUj$_;MCBHLR|K?u+Fk_*{rNUpM~>1~Y32EQDKuc08E zkrt8>`_LI;K05^=k#-u6i}4zU{mhlYsc@$gwZoDltrm5QjYj4A-yCu3TjM_sr)GNj zzWAS+)s=Am-_5nmOZ=z*eEg?xbybuQ6Nyj@iJ2*+Fj+5!fKs?GC1a<*@%*e)fv0&i zTV<1Ha6qigjLuzy>^njkXjqOIj!aVQw#1L$LJ_N`(m#<+CO#6@w*oG(iC>6@k)Iqh zN0oB?z#K{vMnBg}toQP>1LDMo!{Mtdg0sr8aAITIQ2dD*`JrdUznK^ZX6Q$&6omJC zg1|g41dP;0C<08Vkw_$%Zx7Alhf(~#I4m=wuqctnrGO}bCM_-qN+ii`ink#Gc=45w z4@I7#nD+VKnV`(_(klUOdQ9ngt*k~5d zjI8wBxJpvYmBmo#op@KcWW>>%M2ra=DE?wo4)`;vgcwTvcM1)Z4%^ba@KXQ%{2%Ae z>)+hREdFnKV>!(Kt-R#_`}yO)XMHzk%>2RwdlF(|I2Q9tuw3RmKBBn7@UJc8tT;kB zuUfu_fEtb(u|xbzV2U&bE*17&kQg+V=B>@nEeF57iKcxH@Iwem~B%$6xvyIC@6;eitMDQ`dLtU7w zdZ{tV=o8NWQy6&R;1QJYhq-Fe_%u{3b&aTl#k>|VJM%-&a*bT1Ulzt8CZZZ&knmts zb!@OpqxK?$ekvw(n({i<8|6k-tij+UhZ7MOUP}2Br?ma{4G{q;nMVz}EllPq`@+qu zyXMK?4`E2fZipAI?tcycXBpm7$MgD2E#39LL*4hS{9k5eC7l0fd39s+h5!2z|9nLi zt~v;hp53s!3yH-1d;$=U?f{`YM_Vq(wXFrrnrz)0<38maUc}ggeNWg0XVTm0Oi~zU zo*LfH&QYau4wXPcHJZ>IG+*x;JvW`e#&L`7EG@N7*Gsp7J`C#VhTU6QS=U`szk9p+xV>JC0@V?BuV`swewaV!m@S-ABrn-e*cs#S3TMKF@di4&mHCF>saFhB8AQbv;XNwsEi{f{wNjdq=J`az z_Z?j*Jg=3@Cz^}O2uy8algn^NA0m?|%}XRgWlgKy%W(-6$hcz{%c(Gly=}qSma2Q# zwaa{|TsS)gy0ZYAXyJv%{3Q6lkC6(11X$jmqXAR#KYrT?-~VJ*GcWf)KOX<%sxKr2 z+KYU07ZMz~o!ELa&!Z5|YyNkPK461z;kw;v2OO%@0fSH`W4y7+q_+~0&N%n65PTUp zru5Wko7fQ6hcW4Bjh>i1^rgPpH!zh}%oK>v)(4(VhHpD(Fabc1DQ$sIMNq?Y|2QD) zZW#?0;TT8YQ#+z;{?pEmR0k~uJoulh_2V1T8;*_fI2hlazywVW29wan_5dU(m-Nh@ z-o;y$w5A>4%+XG(W4j)R&5lO}~TR1nnSTnQou- zSTH4LD$MXa;Jh)Zm&NYO*kYS5G{xLT*dX%{dJk4$haO_Lv)}dtF9WAT+tsS2g0{dp zD}yycT$MfoiLPfXjg0ydZY#54h>BPmYQ_#6g=TG`H?HY@=7}OI&EsCed~vXRhxrO0 zC0)d#RtVcn^P2=5nO_Tz8~fQdJhjt9rV+u?qGpY1PH7n$@mprQ1%`8eR%YYr+pGzw zh5vm8ID^V8_+LZQhBq_>Q85jCZpSYSY#D{u>D8LLr)vuc&jn=S78Dl%EAdnW8d5F%q)-VskyUg(d(I55PX99p$t8WUyqDqXMtYuf$~T zPS@&obIkCGZb5sv2Qf4r3~XKkI@Q2;2msjYmEby%KBH9>VKST)ymrRO-Q)e4%dgxK zE4aAx`Rz0Hivw1N$aeegF7l)F6ZujFC!z@$pk~ZVh=*k?umab~iujof1vNT`uTO@? zUL%uhqw&mN4FS8bv;Zzi4&pI4o9m$Kp9!{@rn(tIcC#f znL!bGbabnY)M=h|G-i45pb7ZMF7L+7#1u9Lv}IvG*k_G8V<0*bws1H!V%`l84O21i zjbZR8oK16RHV1l_qY_4%Kw280zK5;{8A6$tXC$)t>}C`1|ZO(0b< zYq1px0~KrV@bonhF~gmRVPRbn+#ZTyEysW@TmwQ~b3x>x zHHKOxgT;L8JI2to2QEgdfE@#?%)mz_2|~`Re1IBijg86$v9F^a@Pao@AH0Qf1mYLBE*ZRo>gdRkPUB;((ny_5&(`Nvuan z{9!EaXpm?FiNuf|xCHQJ7k4N6g9$SQZbgp?66#}aXF_|HxD*Wh0h_ZuU>6`Zj0_{U zGQ7dM>gkmDTOdJxCBeS&*&}Jt-ZWr>Z+G&imv5HnC&wp5+@T*Aj$~|FOO8s)a2UiK z5F@hRHB=tgpqelc(#>vwdydG^#O3FVev9$?HVRY`Hx%HrARrE)Fqq|hhgTxZ(kJCQ z#f_P#kXz!bZOLX8SWlpenkeEJ{jT1S61@d=6Z1-K8mt`8r(yVcHYhgr$PShl-ci4RN>KV#Y3EwFR9#^@C0wUy=Q2JT zc|-$=nr8@P?;o_pd|)9apFh~wjKE24`x|XnD}b0SG&S_H&|*<(1rN)-FPXO`*;Fx0 zXEbK^v#ju>4Ct&$08wdK9Z?N16L6+|x@Z{>9&KK<+(8p#;ho9tbX?Aj!ce-l%dY(R zh|*%4F=`0MtvkRJvf6r(1sVh6^$guYi)*1QO5+VzfK^PiViuoh<|U&!Xt3=Ft+8hD z&~=P%pAQm;KIhpsyoX~XL5Zg4&ha?-^Nd$_IX7V0)@#^Xy}s><%Ti*7*e*0J9{aMS2rd_(}aYjMfge(^(V=34QiuFTsjqlYBPZ){T8~Wu)1PK;7kwt;GP-^WT(`UWx%9En13B$Q1Q5Up*c{GKQPi~A#-PKF z2pW?x3NH{A_MZ!XnlEOkGfK?+yMkP|TM{EL(*kn+5Od~YWplv3bL>jN7TtgfI|iy< z7~u!m4kyc8Hzop=2P$pZh%R94f48VVT^{~^MZh1XCJ-dt55i1& zKJZcs<`6_=a#cXXv==5!3l$+j6=|3yaU+D-heqqSz(0tl(hUmm1?<_{@*3+0b(&&x z@>Dit0Uwygn}JmjMGi$<3xR2P5LpxLfJ~ShV`hnC4;;7n-lDUJobLdsD&T@MjMqMJ z&|!xuE@8D%+dv#flive+9E%buG_4j&8t9O2qaHWFT)6<>R%qk_H&jf|(=SKST>W)Cii^fLu`-^=1Rd?P@XfMoLRXB9MT>;L#JhT&@F6F_oh~ z0g`7VwJZ&W(Qy98bQyf1XW{2YR8$k4!PfUtZY z-lYpqM7;jM2rY-zvVz$o5r>V>DnV6y;__&tAqmOBy& z(SWclLt$~@98@p38owh5QvbZ;8^I%f$9C>ru6*a$3RwLpdzr7Do##)n<}Ob>)qE!! z+u6bQaUE7z=pzv|Jbr&G>yDMhr3;{imGpLcbwO$||A065w9OgrWV_X09*$#>*T%J5 zNiW0y@hPJ8*46v2$TdFCbCdHHSvXZ}jjCqS4{7YUl&_Qu`Tbh{LoR<_fpL{F>Zvqc z3Z+9+LoS7nRk#=krzLc7Sw`On9Q-|P>E-k#bv}}t7Y2`;- zF3pPa8#1oYXG_x%`C?Uxpu_F#cv)6}l=D8{3EU-7Ii5E|r8yEVqjpg6APfcQ7bvHR zWiZVWQ@9}uj!gw~IX$c7claqq3Wqctagl$H-;$Azu#6!aRyN6+3{;JnD*)jCXYbwn z+BmZO;rW|a(H6-d86kX4X0<4o*d*aM@#O(L*?cggw4?@l5t2qN*&#Oj+MhbNs#Dd~ zLSRoavui#xF?83h>vHN`zsH==`-Cp*I8OMDv2TF2BhY&D0t`4K!!PbaVygA;|cn__V7Ukc}^%?SA|E zd#P_Bintujs-3Nue{E>DByss+PoG*Z9k`()D;RbuTN&6swZm&=d;m(~3{tk6oo_m@ z8Ki`If#}T9DZoO659i8zU#=QcO)4iLx|i5JI6oZ$2jr0=!^^zO*50BPxn~I5C8H9B zgr~LQr8>qvAzX%RPRcCfzKj>-i#y5Bu9gjJYgl?^D?>_Uo&nN@GG#&qUco;dW?@CSR}{oH-EySv{ikCx0m zi@PQJRIE#71ap=&ykw%)GjDuwN-to!ja&fiGij(|^GVhvHOPYuG@}TY(=|&!A)1fl z+IyM2%~Lnyt6T1g|Ms+YJ;sWOiS$b3(l50NR%Rrvzyq2rxwlh+> z9lJ}`tUFfYf6Bs!qGG2&R#Qp9?oEMv6=fTLLI4f?1QC9~uBSvCRPW^;J3Sm5-rQML z7W9c$x>&zrL!q#sX-2t>{8R$y7l0CqTM)n(IsvrrQm1SuP<=cH2GlvefM_`)X@MDK z;Z{){YwjvkKxHFjfVjwtAmyUX?!;W_0BBm?X+SZ==I4)rSPWA8LP+V{SDqsiLl7ZE zkywz!ya5z`?whtz`ySga`l5@BAfg2ZJ(eB{cb%hD59~AqiDm%XJ;^Eg-73mo%Z^BE zR6|h(IXP|p|0^hycW}4SQnnz8AyNfgmxmx+yfEC#D9c!Krk!LKbn|}ezNntv5iRpL z{joVZ{TaKIam{;DGpNYvj#E}SQiKUIXD4&m1y(W;6|)!jx`XDOEhxcI1o0*B?m~j*dH}uLJQ*L3&D+zq=pPb~sW`#C}vqHYA&C$4v&0f3e zVxK}+H}Lu{Ex2cmDld5Wdg1LO%ZwQu)S=-Ve^hxUSVM~r$ zt=2Iv17su10jDb2X`9tCq}jaB23BCNP(w7LixT?8_^h18QxL-w5F@fh0b>MqCG*D7 zTQ#e&R)r9mT$$1 zg`R1*I1PT^m4~A2kQ7_mrhu#$+6{M*f;DV{IVIo&#+7EvAx5*mZO0;C9533tebLkuQF7bR5dx z8aRRJ8xn~ITb@7=3YaAS@GI$!Zw2=FDy&Mj>{aF#eeVREHDs{ksd6}!ldMFyq(D7m z#1oQrhx3B+Us2=Y3JJ@xt|Ys4_zWu=f|r5kR#H^X7F5=%Q)1)ERE$nHRaREyHpmi< z4!TJ_Yn`^pMOe5vDA;gj1)eqVJQ(B!A5Z;thgQnv{bkrsxX}Q&Wr!Auu`|0U9)M%= z(N7-6(!|yv5F(!mD{5x!WIjY<3^rWfjmSteVEyUCO@_loaYjT5JP=HaQPcsA2lM-A z>oyO?IxgPHQ7gHg7eVpiGabEXBF27APB}q6nONgGZ9BE#M6nLM>iRXjZw23rLWE|| z2M!vdiBo-+W8N}lrX$zgsi7FXX=)fzWX-Mn3^sN;Ho`(S0@hB%N_2JxYpU`-;T|Jm zg!{sEWXjgHp9eZ#p#~M1PMFl)7k`7tle~YP%qQ$7X>V%t>CWupTp^inTjcO)Pyfht zgUWw$|Hl4pT0iPe%%mWaq2hc@TatJt5V>goW|yFhhWchs3T0WQW&{!zJaN;aF!cud zZl^-NGXp+ru}j06F4zJbF;pCOlC_=R%nU!v(+ktTUrIWHQfHVs?ZKKTy&dvaA`r6> zS}Ef&f1pb6iAn%LO2Q|eR*A-7OIr?JG_<-U=EM{Cj=^Q0hfZSdheZcxc(;SjyR&fuMA8K8HM>5WzagtY>8jXyg2PP1}*uU_rHJbc+T{H5dN z6tfAeoY`NjJ*EOBTSejzWi4E#OqO&!w=|fxW?)=82r&i6bP!YbaZ-wLeVu>#1?o_ z13KWq@}Jz;iiD+m-T}(m6aUIeX3$~&m4YJtTBT!iK;?W)z$bBMK1mMGWelU=y>A|d z!JZG+TqBV41JYJP*$0p|gsZVJ4s4M^gy~;1C#1m$O)v);a(2txVKCRTd(`m^E2aJ2 z3GFTkvJ1$8z=UdKmTPS|USpl|M`YEu9PpFNtg)8QSO=f_$Bv&Z94U4Bk}s9QWA3A7 z9p`>d`%l+P@XR_#_vc6LUFL3Z~aK+5nCsrZk=(0Kq3_9HPUoj z4vEXVle+H9g@t|xL~0#9STs|bDSs*Q1Mba7eFWAj`oJ^3OQ+;l-GfW=A}{97!(75T zWv(Ep(0o#NeKtiv?HJY)erYk!8UiquZj<1iY6RXiLfs)X05*K2F9W`f>-So%mTRZs z5|RP1hI{eB;#@&20hvd+Reu!6ViAV5Q+)@eIQL27_u|#Xp>)Zb00V-DA5=O!*e6(0 zX3%AqkWZIhpj3;3aJxCirArBC0*9yAZv=uVCd(-05NrzcXR)hX_BlY$Aa8w-g7rJb zkw98w$Ptdt5$}@^XU+2u$=T8QF|v7_wS4c&`Y)B7q~4L$2< zefVA?=hzm-Y_{NRp#%+Htc*1vH=|Tgmm)bpEb{j?+>JQtk#nZ=)m!8JYj=yjdaav- zf4g_W`(BshGo8dsXd2d8X626jXU8i6#JxYPNQXR}n+_!$MrjDb6j(kwot{ENN3f7! zsA%Gnf<^W?aK?dC*YPVNubHg1-9jrd3RQ;WZf&0QEUjFprU+7!V zG79%b)hGCuw}t{m&sMRjF_?iw4@7(^obM+)jRaPEx%IK#u4-4G3ne=(x^&e^bqvdK zvXR^eYd<8jB}c^++$GU9anW5IZ;fUX#>lSj5J|OR+oabuikt&iLK^s$=UlS-KGyV= zS(oGuQ;ixlNOFW(pwsNihOVZkUgL%f@N!ll|nXre8xG8&faZY$c>iKth z;iSMSqWe*sOZ!0LSHWkMHGGCd+TXwF_%C%6G|NHgX(>E~u96@pT5^;zv;ZW~ zx){{&QmJaBz=&$#`ejklA-$=TvgIq)5fW+H6Na?(Au&)&x(qj86$9C#k+~a|16SO~ zV%{&y>;*D?#613>b#G0N&S8-;7ia1mwRcFrlQom}cV_i|%6jHE^WW!Y8ID`&=n~W2 zpF@{HUTi`K57dQqEUEK)T}jknO!eq_ua^dxg(LUnIU|)Jm`mlpuq0W4yadP8`ZAOR zbZtYi;<;~GIjW%#KMEYcSBS`QRXZ+?V6RBl&8}Ealo2}Z_s7!#LoA3B;kLCy*@D{` zNr1Zq1Yr3CHOFd3p5b0=29R0JFs4E&jno^CIQL4wn)|g6rvN>oRthr!RL%LGmn5eA z^<&P>6w@9vM1tpyuwK#;uVaif=Cs7i!WmjQM9A#xcLa*W@hwd@{l@ytZMQZDpb7@Z zXjeOUrF1oef#z_Hnn_HLO^R@JvsI|f&GmUlEjpxp;hdR4n+p~1hBXcwaZ6L-JLA?A z*A9JX#?$i@Auh<PB+MZsIne&k~! z)6b3FauFgQ=io>-6PwmNx$a9gOOJs=_g`DTVWvED#yRD8P zd}dDmj@s4j_GTkNg<8_K9Z}3$Su%UY*r{~MAt73qG2wm7K2s9anOs5?2Stlh7+L|t zP03*dQMS#v(J%vUf+Cm?hpN0;lRSH?FNuRJ?&=o!Xx9elLbwLd6>_ppIhQDCX2*#-!sq1{$HPMRqfZ>V*`4ONbG zLBuyBV`2b=1U`^*WwbV9*E5*(KKRQ+WFI#BpNtTtz&3grMz&mBq!!O@Kp+L2B?o#S zuRjj6XtJ*zdO4%x<~oL%ty^@zCWY*ii<&**3WcW$zH%r!wEuGNFZb}EyW>pwgyP-c z`Hyu-3UKed9~27EJ&-tb>z-maN<|&#U+C&o6onnCnwQ|)a%oH@KswnS27eUO8-qU1 z3ye|00i)gA4r49Sob@@8J<Mc3~{UFG3N@uis)*5^1Xzghcl*&@2Ny^ zdZ?gC(qR86pieC}LXGaL{g?ms^SY&H+(IZYR#oi2KG@w~hYhM9zS=oBSZ5sLnMQ9W zhY}&YfVxZEBl@NSA++wN%m}(h9dL4%BacB>O=0uoaW?_YeDPAgP*24F0fGs!9wTv* zh6;CyV;YUs61z_eml>FbpUeVL0B{C~0iXexB8Bz#6t1)3x=ykwaBgFa{|0-36lI7K zy9G5R_i3;B*B(q$@o0@aPU#4O{EiRZo>)8fKnQ^Pf^}6|X_*Jxus7WkI)y6%Fo)0f z+tMp`P>NvS5FBB!qmqp#V_Hqt?yljng1wav>2AWaN)YB`n6DVW>#zguSUT>#Q$)>C zx=vD)0-e?OOmcO###POyJPMKo&ml3m&J#T7M){Gm$tPGUuo6t8>xI-}?N~LY+|4T* zgA(z^fXb`|?iD1mRj4>o6Xv{9<;Y(0Qn1e+oTFfqiVp?(PoPm1C1}F$!wPaM*cW7x zH8+;46kb*CvbJh}APpa^s@z$7a*Ad>+JFMBVKzFQoss)B|8WdEg;Ih#5#J4DiHiP2 zifS&fB8&mM(cMmrsue4i$pLQ&sX7-4#M9S&mn@@+}@(vhV8>RTcl(E2XaXxjP~~}2_DE51#@yX z1ZqJuPpQ-5Fwv3h5#}NW`LV!=XD^1FUe|3h2<9aigOb3DY+$>SL1Aw-RQwcvf(RCA zNiS(wk{;R3>V*zsXTM$GVj7`DOd*ffFC=0fxX!9WoZw7zoQRU^#mlNAZ}Xxw85j#C zfYYtjJUQO?HDO9x#AOQpQ~75mirI9~AT1t3J9qJ>HUD2k6Vf z1Z^pVEjuetE-LBA$&{k6jJk!t^6Y$D9WaR8TZ1K5@+ZRlMwQdHord3jYzSP?m(pT( zUoAO>z_s6|gMB+CEQ6m_ayj8;ls(f$kHcgmuwYwWPX&?asfp}Oo>c$<>+n2@RPpXy-R4gN!Fwt;`t?d2^DjPWgD9Eo>bV~ z%Fd1}D}IBEKTB?dy%&Gm`O#&3JluP}`|RcGL-|A)(#L$};?Mg;pJE|B)mB`*!I=ND zU~9>;UOVjMDh84u2x(cnJo=nR&%V$|dR1nxVeohd5b7oR3s^|gbqnYM=|?0Nwa%fS zK%m_%#Q`gt3sbVG_GR&l_}7Hp1~QuRcJNJ7gL&39caxE!>g;@GL@22&SwXLo4ev4D znO6;BIvlxKkbc2br=G5$p$f8OxR@#~uk6vu)tl~9TbA)zpg#J3_t4$d#N>3%V8}=& z`Xz+60;8IQ(~|j02fMqq(f%a%Ww0vtg5|zSc0ss}$*qV>IIPUzk_db?BoUgbsqry= z{j1lAtFaPOtMaEiL2Z)eQzxkXqh$fu>UZH)BRGX&NU|^SH3`H)wReP(wPqUdMO0pg zQfp7O+17WnazjdVv1YR7OuK9G;tq4n6jy=Kp~mtbW!u)-9JAuSE7>xLE^z3X+b^#R zKF0x8c+Ub{cr54Tcn+|YsJDw_Idk5^5WJg`CZfbov3Qa_FpA<0-3T~3gLiAdaHU7R z3&62=+sRW-bLa=VG1xda%}U1sxTQ?T^WsiuUUIPE#SGYChs&-nFhaaQ>_p3X-!VeU zOb|tSjKp7tD_5PQq?k=7lj(Re1&kU3;{&n9yuV|eG^P3?A3!gx#uxg_5jEmY*bIa4 zSbPnmhst7pJZMO@TaFB(wxiyOF77!N>Stdsz0va#W8&k+EA5oSANCHC=evhLynL3J z-~P6{|8w$e=f(HC`!8P~xGnK)%*=`GQ-RWyG)c0tQO)jemwXz=o0|Rc)ZY!)uD?2= z-T)AQKZVNyebgZd!gN;JF5P@&XvVPXX2J3^7$R!v9~BVN7wonmb}F(Cgl9t*bdcC% zZpL1yPH4AxA$7>lmE3?;jD5!sxd%Iw`nyzB2cLJmSahq-t;QwlRK%&jc==*i%V4la z;$Eihz3yLMy!@$q_`}YjMCf%@7v0_e@Ab})2VK>0ckiJ4)BejB-+Q+#MCc}4TN^*^ z?7!H1@%>7&=;zLzI|sW@%|(6qbHWwOqm`9I4%ZG;g@#NKPSlc`ot2fveLvs%8KAtA zZ+8i!*9b}2{Yy@YFd3#Zgzv$>Y?LEdQf#6}pufH8_&fvT+(XfEjK)>@;s}5V6qUgm z1u(%3pP7yX$^U;QBY2zXvK;(oe zFdXOLl2VK)O$amCD_~U108Maw62b+ktf+KjDMTYTKCA?gOz?qY>z6@r#vIyBThh4Y)X^z}cfbfk__OjSXeb1;c%G+F#dl?Bq<9jdIs`$1m!L`0%~iVSd%y)U zD1K1l+{-_z_`;GU{=NJog9z{~4iGsTvX(AUokLKN5A8xKrec{|i$}gFI3r{wkWOHR zBkL2VfEmzhOniVycvesiEp`8O%UoC>bj8@T08$~!R+adoa{5*^41Uwmf0VIo{MS|f z5KF)vS_igU;{$s5Y7VH~RME5^MP+2q6`yi%$` z9)r&1c_;B`*^@FI)KHHV-Q#~2Wq#X)&4h6^Yb$^Hq(8&Fx7nLRs=Dc>Igf+!baP?< zt!eMZecZc$@7`CB9{uSa{e=I1{q+28`4;i2fp&`c`2&*w#9_fpwD8DMSVZ(YjJeRq#JEqJ-53Nd23{tst)jGS#oMz~@xI38e$`pQrT7 zV@!1&Z35i(P(y3UjyHo-KU4imqq(a@?YKjvRG?gBR6ofmViA$_iC*EH{ydE3%jrV z0N$U5U_4RElPAg<#{U*1t=^FOW+e?(2S>$D0%k&24uL@|@x7`Yw|3tcXjL6@JQ((x@NNy!02T`Vk$gYnSA1~6s}8JNaK~-}bT0Ncx|HgKU~T0)ppa-x z>v5jg;R;F7-2R;f`bJG4TbM#vJ8_(4W;4j38_@|2u39^v&eRSzbFh?)_0m=~Hxn4I zD4UKsnPm1DyQ`EOkCZ)D?Gj64urhu=kuZVC@(K*LgCud`XncHyB!REDmX75lQp-_v z?|1*w{W|Fx`46n)5B}pXUp-cgMG8_XK+==7>i-O%5xGZOp_FQM(lu5vwv$QbgY_rx zFtKhg6J-AZS-*0RC9lPA+9mXO>QwxjUc0xr7RwjmKjj)+?h?G^6{gt{V34?+`ISq-e>*K@9`sA$C{DNYE}nXTeKxMdufr?M6vQMm29^U z&wz&k#$enZPugNddkUp~#4rt;T6${>0lzuMh%?@Svq|5qhG8xYyL543_?ub+WC~o$ z49AEV2Uvsabvm8ol@%fRA+VNP1eEX%KVn>}EfDv=Q7vF>47J~dYISmBlDq_flH0J6 zoT?nBg`mi+4<9&>gpu}Z$u_EM+L2fkrN|fD?LK{^q@E$fob1=EKc8{#Znyx!JLXp~ zB<8M$VRw2NDwatZ@6AbMQo!qB>i{FyziGEQ#O5S6m|%LuY{YNt&=BdF8jeoFLr2Yn zDyB45>Hr&Oi2HU@JIjWXnwced(VC6B7KB+F#7Yf;Zzo3Dq5cauQoS7%YI5U^3T_wi z0=n!3Vk^(m;=GxJZOOXr8%erAjgh!Q`CHy;OACpc94)mf2%)uw=L1%yqE)ljQyu}= z<1S>Eo2mzTBmEaFp}@};m1aHW9}XQnxx1XcB!ds-cwd<@rA=ph-R5f7KoFM!P%r`BZ1gWSV2v zul_-iz&tEf(KFfc<~2Xje@1B)fASM3XZ|_M2e$Y4L>#rD42Fcd;GS#OemF)?l#gEW zu$_w4gkoJ>Qv2HeuOjD&t`AO+nbg^uqNF&wjfElO3Fg4<=;*Qp{Q!f*jwzmLD z0=Npbjl&w~hH9YkuXzRb=OdK=gIdTBY#e$|f1;#wK$vJd)${fmGROG`E83G|@P3q?V6Rhnq4NqWBqW8IZ(Zn64 z*b8pLE}%Sc<`>Lnp}^oKQ_C>>m;q=d1q#DK;>_+4+zM}>;Q7TgdG45j%Vg2X3WZ|Z_O-n zdO^8-+=s48>DlEZDBVh)lFN9THj-hqa0{7#p)2!GZ#)La9rN30eqqGyzFak&?H9qc z>QuX74;ySfa|Uq?%~IdAWO-rzRlJRfx4+=k)*UJHwy0MKck6rE0=;=YEY)v@bsCBw z##{9l-Dgg1tL>nUNKIgyH#6%}K9XA_W{nm%XGY|OIRnD#;7d};71@;an-M;y^}uAq zy0`r>>4LvhG z?C`I)ZKf1b6b~|e@?mhUWfV;bL~&GwsfiF5rX@&4n8Mf&dS>_t0J0&Nih!SUHhu># z#l$n3&r^d(hK@$WO!>vF>Jb;Ja z_(F5HtRGSUrBnolRmT>aUbV)Gn>e^EEZ~kVRFBng{4a!)@L$CdG$cz33FwCz0Nh9e zXcR<^OT(p3QJRT_zPeQycC7XqHf_6BegR<#wB2Q7jjK{In>fhuV6q{+X#lO3A-1w2 za<4FCSl8@~56L*ufTa(rx2wg!?UQV0yJz(xDFp+&tI0<NBPDdJf4JtP{Srt0^^t zzF*JsVGBeOa)--`Za%7m3RmTe3$Wv{&-D(eHd>Lcy%9RT7=5BJ91FHq+Dv*MlJw}_ zak6EWwgM_O6wpn%b z6ezuFotnn#n{SHs&5LHTmaG{v3DC$jzh$@HUdG@!!Elodqyt#_^0YgAZ1*u%T2PPT z;<75xH1oFTMm9xd6uPHK_j1O|qmVaR8nRo^Z$#-?<_HX-|`whDxmTj~MQ z+CT%HL_XyxXd1-yu#_C&Div`9_cf`9?VfTI=Oey^}Tp-F9HgRCWhN*=s9Q!W9d6be77sm6yC2ucmQZ}YUPPxv={>f0W%f#+rB z@Y)UL?JprtyT8uBR*e>L!_1tIAUsz30bKxJK%l=`AH0-|Y>Cx$}D!MDvGx) ziY3(9)v=E9QS((%@fO&hqYhbO7y1CltA}?Deru@g(wd1y%LJx{)%nxSc z3B>kcME}@!4!WmeJVqT=|`LZO1n~-+!WR8HPAk(AzB6W&Y2wVg;!!+w>sBN6~^4Sy;KBohsPU+AmLCu5> z`WWK~&Ty`z{eBLqV+9HcegGE2O?kISL|WLjAiD0wA#iy!Kv6f94Pl(2HfH>e(Lv-x zn~9+UYnZyQ$Oiyd9DeL@C`1+g4j^U$U|+@1VQ4D`v_J&6Xh1NU#Z8S}Wvgp*>w=4s z&QyDcZfy*I1rmk1RSLNfV53}E{iCQVHMFrmgNx?QXQh*xAz?kUK(%JV3MW)8lA_2~ zDa;lIgfO4B+<`kJbBe?G<&oH%23mF%lxni*CpCCs22tCen-f9ozsyL@(_%uw`d!CF zkP>qO5FWKbo}P}z#SHXa=>AyqR7d=+$Ex06&B|uOR;9W>oE3|ZdLAEYvKe0_ES^sQoB+4NUpyDV6J(qaXMFYj*xzXx@MxHJd_Sq2AYPH(HyD-qUljHEjC}{4JldSK_ zauu7jepjoa9M2ss-MYx8r@r#4Xhit?Xyt9IS_1MNDLC?ClFs^PaNk%Uc;e-q69kt*-CdK4 zb%_zD--#U$*_w#&+;bd+b)K`zM}oNn48OO5_R)2Ajqb5Rdx`4CW5u)FQA;T7QCyBV zR-q$5WdJ>uYCQt7fAeW_lAG(v-RXlI;OWhUVkQiuHi1!?PgPr%Wl9dlknj!DW}2%L zqN|}%L>EE?58suoW!rF*Vg)Yz&WL})GIJF8i8YSPN+74?SV~f4lMl;@Wb5{8OK+MOCMWV9j5`U2;72FQAe*;&)e8SeA6@R~ySTV#UdURSSm zI(7I~^$NvT%IFc1Kr~zFO_e@Af^p@q+29hqL;GD{O8_q7dX?4ccrD`}A3h}Vuhl-$ zZYRQcryj}#N*%7$!Af)vbmh*Yfx|e#f?$TI1$3qeTo6+_x#DIAAQEmDhb^niX-}k7 z%jT{J<~+?2&aH!`j`qQx+u}Y&F<~}$GugOr_poh<&bT!z*-y2t;#4(aq?4^{f!aIy z*>KpvK9G+uggWOl;k|I*-OUyh#OdzLj1R5M1DR8TSL{ED& zVc!eeXy$Xhz#NR(2-xFsut76Tm?M<_INL`d(VVN+N5as2vr6ushFf5mUP438cv^%8 z!BDa3T4GS>YE5hn3_C?es%xjyB)fyTC%b6KL@j+Y`2v;qQ=Ak}ZyF|2pg|QGC!h82 zQg4pS^`ZxHVH@rCGph4cQA@AQKH_|O4#*`ggWT`%R&*2seeuF)&h<-PsBjNz1uO?p zLZKfQnMDC0*S_uWD}F#tHh)CY4qrbF?gHNeXqt6>Si0rB3GJYp*3mF`i8M9>?+98QpzrbqXW?dP;=ah=aX6)PVGRMP?CyVSHdEYeYBn-#S1q#y_3_v!8 z2whCs2^ZRQmMJeU#%GzEq4e_8IrxE@>qJ~ecL|2SeHc*8D-x#6 zFpgH=`>k^VI52J=*E~8O8O4?w1s_5dKEp}!TC!)ZR5^H2az+9V1#cL5+{^5{4I2vA zWtC-@lks??mrjA4n_s)Vbh_Z=x;>(gZhYsg*aJseRr1L<2Z+w(470D4s37Z?@)0nx z6vAO+d7zLzalqAP$l{V>s_K{(lrGerFlh|4p`rrC9)Tq{;xHTW`qIn}way{j+?pw1 z#gSRu24E~g(CUy=296w~Fgm&iy64exa)rJfHc~$S$2{wX?fbicos7;u;0`)RT7GWY zfyygY=g6v+d_h0lfDjE583P@FPDh=9Sg|OF6DzRr>cADkz30_!@|)<|Ma}l;9MZqA zz7V8eMicqb)0fYm@4R?+3`a#=P(AA$*q1T(9g+x|4ej35JhmZwn+}tjj;A6YBqyYl z#TN8$`A@>F`cIsN+Vys1@w5s)P-VNPB@TJ*Z&QM6gl+S~?vJm!&v#zEGR!7s7io*X z*0povn8L~_QuDLaG$`qplVpU~&BagGUb^Jr3gk??1lx_;dXK z?;8IPNUQT%J}eXpzufVO3>WH$yWoJhY<1pcn=I49U~XA;n2*kH zT6K^EX6<--dDDt0d3JAI9X_*bsAE2v57AfnrVZpH%E)G&V@gv*R7_gZReigFNsRnZJ3i*0eZ=gC`lDCi?FzVp)$J2pX&tRs&WPZP) z0bq3_s?dW*a^SvRy?EFFqdGd6#Hv=Th}t@idB<^k9?0})y%S$edJC?rYOZo`1z-){82(z77KT426k)>twz+fUaw920h$d$xRSf3TAq1L`K5KGht zsW|kLX}Yj32yWguF)VcZ6p$IP6t{j2U=~HVL4D^|2((NxObp499TDVfD-|Q0m@|^0 zDek&4PHrCGXXE83nez|Rpgq+!5hQ8`3I*R$CY1N_IwP2$0PGC}A?Loa9Z zLi~ZMMpc~WlO+aK++t8_Os10sYg*|+NN&T0(r8c7Ti9&=3&4segXx@;0f~r%} zm*W?5-vzOpa&*L*K#I9AX7;tF=w$e{rQE85pS_vy&Sp;%Ogqwc*|`{j$hi0RDz0qT z<)}q#0yrmnF_aF*V`g|UL>~iMq@Y~jTaj8><|P?r*?{whquZTu{(;HTEk>QK&qv38 z6r)(O{g6iBCgjTy7Qe`>M~OT?){g(-58@=%a0WqChbgR8Za~QvVMAv?rZp4nqP0tX zH!2(BHD5R`+6&bK;?1&hi(DX!yH}8R2n?>KJ6wO|;vBv@4$t0CQwF?9Ifpqxu3L|r zT;)O@T0jVGv6qt*>>p~cE(~3Xrvyg_yG=T!d9#clJ--uEX9Qjhcd99jm+H}Ds??X% z=?o)1M038HJgn7dm2q&q*;O`a``iq%f8K)pW0go@RU>Mdaf84B<|Aa@z)VTDKAYDP z&%Zs};*xAwG_;u}@6y8abjW_4n19Mx3E`J?>iEHxALMhi<@XT4*GaxJcR`D~M7F2S zOs0*us#qejCE_Pfc?M+XrM+T2oX>dD>N%v%h2QYYm7$EkAHATmL22cr*{&f(<7s|s z20!eElYm@xlQIru-2omfty^QJ8~$kxEKC)1*l4x5Q;$xKA!{uaai%)hPO#IX2d&n| z{bQc0q^)^&Uk|OGm$yAgT}6pox4uRNPU)q1`&tRLygedZ@spB(qcxQaIB;*xt#K4H zz@X=)>}5pIBAE{{EoLHV=$`F4kv%0vg}HZa+{$R|e|Rl!W_4}+jH&Wi5i}Xqjf5)o|bdION+ZUh1Y&DO4Zzg}nIg!I^dl3KFlMGzlrRS#aqbR~n z$Hk)XBkN;cq?cV5RogU>CVY2Odh)~S=>tHEav$R-y)qH@YBDd*%2W;84~cBUX;&CH z$4&oWoE0O^Vn-of=->_%iND8;N;%DIidX6f9kscdJ(*AgP!@{T#kuLXJ1N(TQjD;j zRdD^0X$Q3GX7b;2GidTArnIzbt2-}8^jk|YB_ z9O|Y5Op7e^coN+y8+exx z_;H*Pl$VXS!;4do#PK+mN9*OIK@1W(LRetW2ckdHEB7Q!kSm=ZXLr+19DKQs+IeOK;x4_wd2JztrM&%vsGRS+V)w z|Cndf%ht443k6Ro$EenG2LT8}Y2vc2G}6P?aiu?dGo=Abf5J z|58Jw+z*#_Rj*^Wc`Jc^fVE9l7 zCMnjcLQhd1pO0L0MC8=6#KA|%Qyj6@%y~muoy|wfVama(1A!Pk!YlFjRu!$7QuBht zNDBwcbL>M&V|&OyNOVWtD~%e`#uataS2;DDqY(~BRZ-y~G1gsE8Z+GlSlnDp1$~*S z%-kswK!^&oXOGQ&|BD;UFXoajE(=3e>S_|B=*jSZ-}v00x;fvDkIxKVp zV9nsU5hV;=vRFPPzVJM|+_nS}YVmW%*l};#Iu6Q-!d^4{IMR%L)Ak~S?B?>@;m477 z>>FukB?3SdczDu0fb3imsSKA8AJ@7cwyI*Op%Ky=CACHi)@-s8BS)43wPEp^-bu6f zjy05;htArsjvD_O#|+S^W<13Z(~9B@z_S5F+D#k3l9rVieKfK6? zHq8^(fe|?YT^Lp(k4noCb3;A?5 zPlv9|p5P$Ni)_25;i_tHp-_ukT7557u4)VN0C?l1nb}My=E}$bY6P4PYiM4hXFPYI z_D?mU<$7ijLoo77NIYN) z968At-BusD;+?wh&=gw`Bo8NvIAm>J(}G(d>=nE+?9m{bQW9UBcBMz!-TxMmvrffJ zg_UPc^9%8fdKVInPy^XYc7c#Qv-XvMhe6kL&<+}TrwwzVuvxYL8E8m?DMS(x6O_Sf zKt4-|fSe-A#UpC4}OS2>Tr@Bu~ z$pTT{aDnyL?ca9K%VY1argJsL@Dooc2!v7eOaNJ<3$8{+)_{Lyv|g@^es-*qvq910 z@J^`MI%qB?Q3~!uRBM2EJG0)zO?MLAG@}-bFhHH{cr}5ZCmH1w>y6p9PvFi8(UX?P ze8zB?W3J$fY&37m(!n3LH9?M`QSl&WdOXlyY*njgjYT<<? zKDZb1e~-R?@R|Sn-)8?APXOP|)SXWYbAE@H_O4+N4!#1tum?X#S$HA{3!#u7)kHqZ z3&1@@t5ItE#+8!3{kGZh-zTFH-?O~w$_38uO+cVS=0 zoJwVf0D>PF=G8E@HkFA8^6HI8;G4A>PLL|Kzq|A7`L1>@HO&~(WY$DI{L)MjA~$|% zUU}XAbjEHT7yw%yll_XCY1j8S-<#14_T|p@Kf7Z4_%p#x(Sp~_5t?6+FETS-zsSIU zaX>aM43_MiHN#V$)*8!C=MvMWoL8c3lKk#Q0(xs2l;50$f`x*BlLc*N zzao|u#9qM0gyuJ=*{RuVo7nnWbO<#>`qI)WI+2u}1b?OS%M033LQ;O-#D5TFr978m zNWN6H0lA;hgzb6BJFy#hX6nrsz^w^a$=@<6-IlE`lDI!w%eK>zb%x;^S&Dgpi)_WQ zu`yQXf}lqm)E*0wMjd-Jx`#I;I_#^aNEHC)D=z}C(h~jN-x473UHR6oC8bzGYYTXe zk|ZTFp(JW#6Yj)2@nJZsOP8#WlG6+dFBgNKASnR|q6D4Ov!b6)vhL|{+>^;}l#7ZO zYbOzc5L{3@l{4q>?p*{_pufw_p#5ZMXvDBf&$wp8AuA!pkjIE~tb*>LdKjVaQX-3* zfEH!Du8KDz#pRmoOQ*);ftq5eA0vz}<%T&Ggy zP<^)QTsw3oabL6gJ_L@q3cd&16>&vxi)LwNkM6Zv8;_0^g?$oGv4|!H+lMQUJfjwN zu(;)@rp6Ce-hch=&)vW6?jP*Ed|^m??Lq6F4<%hbWD;TDmD3g|k#K(oh0JokzuRmb zr5nE;-@U5&CfQPd_Qa~D&3$u3PmixlR`p4TefO4wZ2=9mqzrm!x4(Pwy!-6s;q#rt zr#~!8`uo|&``P|`bJfpHw1C&@|Go_B*I{0OMiWz6C(ri|lOOkj9bs(SHZ^Cp)$d;m`G_|9M2oKi3Vo`QAy1xw;~xWzQNqUkrx&$!FdpdTBiL48YWbr zgO)lUx)$O`b^p3!8g1*N&ud`tUFiHBcl)M-PbB)2{YF8q4&aimDtt&oEKTqsUu1a< zjqAE9oi2@kTin`WZuMZ)&Qcch&?0L1#5h*bC$@}JKa~hajqBaBLq&rJTYx}`fgh*t za(dC7o|Meqg2IH}0^!Wu#;^JSvZeLs1lq}s$5x@_+^Rj9OE3z)|EPF`TEI)ay~r|v zDp3W@Q!3GNWQ-At3xb<>{#IlMDmM^XeO$8URY7Bb+W?%Joq@^pTZ1-g7&%hNCzO1? zW@FnHl_&T$?~s?)#T#m5!B)|S8Vfk2Ebv z!tG(*q8_qy{oq*OP1BG0|8J^%?31v3xoCM#xM@{PZ9i486F-IdNfOs|JSlh85io~t zMh1~C+)2|p-Tu0LQibZ){B|rca@y4=kt-SxOBFmChmJ(1j^hQEgMN9kJaJk@ftykl z^6uh^NDz1=C8TnKyFjax1#P70s@V4X5_Jlm=~5Tio1tB+NLFn*X9z)tPuX#ca%28#Y^kr5s`1VjbS$Y3B@j_fB}?T}WYT`fi{7jCW- zp81BSgvAtiq~QCq-nzTp_;Ry>T3BWux-=VF5z9mEBwyTTq=G<4rtFrSES0fvl5KXg z&p1Ev7%?0CuCCib3h*|>Pl1I*M?nosM>YgR488D}Ez0>x=pkk>aUQDb%8rHYlwHG? z3iw$Rc7f6W<`c-W(G7z@e5KezCJaMV4QFW<9<{BvV8xb>Z_?j~P5CiQVFU;<2>|); z>S34$@55+18C$e2NHhKMa6E0qqCIrGTsSV*U=!M;z&!EsXD#7p{ole|Rm*DtugU-R z_`#!4|M&R8=lpNKv;SWPfSL9$h)dnT^l!KD@UwEM{2 z5D1dE!SPnbtBjgc!-|Dj=!vYW6*7o{aA$0gCep`%KM2OTUkW3 zX%bvenm0^8`b(Xl`E;n#BuEYcbQT{nINq&Ki3JruQD4NP_;)-Zr`hZ}B+Z3KW{LW! zzu+nQ;Q4pctQC`CKBN2`DpE2Is%*OZ9gp40Cpc|3dkeQwg}2T)1`IgPw-h1^jwbWj zhXntDI~6V_0U(czpFwAEQo6W3w-=>KP**UG05m}EVO6RG2l4FR?n+%y$vsHm+ye5F zjsUF52D=FT2rkv8D3*xEK-vh7NCg&5OtiCw7w_^{u1mKPzj!I<6{sp(GZh1FwR)fL zWd*A%3%k^{>`GVP%GS~FkGPausIZN?M3RH1Pe*QfZ7X*8SKyxgWCJx$t5N#|?7KO8 z=-o;D1s&o9e$3%K`=U9@t<<8Lh%&Dn50I=%uN)8re=}uef{`x zD5IjlL%B1wq;o5Tc1{{t+SAm0mAT7Ptiy1cH%MXFXfBiML?!is4!Zkw`c^M_N!)g= zcG|0HMqrn4>;U_caNsy_%-lQ!d|!aA*qlkQ_}H}eO-b@)#)m2GZjto{r#IMNy^Ocm zpbXj>Vs%br{0_vfDdsG+pj)i=)JqriyKGq=T$kr7Sz}0#Z1gstjz@@eziDpxS!>!` zYs%}^X?Bs+rjVYZw)QbC`cR?Otw)*BpeNq%pYGz($qw$++vy3ora|b}o1M*u%Q)k0 zI2if=f!f89Tyy`VgLpDb zPq+3lK>I@|yTii-qxsPfimD6F#ftbs*};}%fBRW)P<^F?NGDjL^OI=KflBucShNCa39nwkZxhsHnuiQ>~_?5PC=#0-1_0%*E46 zUc(%mji+}O9VOc#Z%SC?iW9V~q;@m6p4}h`Tg;-U(l>o984!n{)iQ~YO$(18h~NCPlmbkuwXK|2EoAwWzq$KdnF z!-4eJF-+4*GbvA9LVhCrd-;7fDkL{!tP?QU+g?8VoBu2Ne`}S-4U+&~m;dkn;}HM# z@x6NwKl^|GFT;Pen%>aki_>?<5?4gzIUAw6wPSx_)NFhC?)HD_%fGC;T64vfJt zSM!nh%9)BEVw&S+JHKg1zW&$@xuA53N$n?;Qt-(;46%d|P(*b(f;@Xzrb&u3%qSg&%JS>D z!m*0hL!E(Bhh>j9$8!sn{J#+`ndvvpAraN>F0>)RJnPk zUyIwUmhldhw`QE_Vl9@lXY@*^~h_ZLA1o%xl~Rsl)$N zR_`qFrEXG4yQW@k)Z7>d9tviEqUed+6NQ0#!p`CLmx)~Q;%p&-f1tyq^ ztS6F15qx9s2y>N>5WRKV+j-s``z9QJhWz|2!T+z3{|Wq}_c47e zmj53=e*ExJAphU{`m4|K|G$v@4+aS%b*cdIYl=^^ZuaYJ6HG<~Gy-n*EZ4IR_Qs8k zr|8lgFsEey7wZZ^ng%a4CP%ZHUJnRGrI z567vIeRc$v5qzAMQTx=q>ig+=_H=wPNe$n!xH`Cnbo*G;Z{qvu7;uV{>ql@3C2Mex zJKU6lk{)J5OvCWQ?vJm!&v#zE+I#W+0bfR)D?!oT<-*%sMe|ow9?0~u?Hj9y51i!~J zVwA}!Fr7F9i`6kz{IDDhX$mQGunJ7cxiJPU1I>i_e|I|X8Ez5d81VDM$QrN#v}QA$ zUsl-xrexGwGT}|rHhUfpv3mfr`-;nrGqq4g)6+RR$AaNG9VI){X?jV@t9N6xCTFJl zctlAo72J^rQ3~&f#hXtfmc$q1Sq_2Wuz=tdDoICdUYQgfJn;Ao)R5j8Qi2$E!#o?b z+~^$w)&NGvD^KTq83iLu#uk3*5hc7iM(9p60r>TR>x7RBLbl^S5Uweu!7yu@S7_s` zECJrcsI-(t0!LYM_NS7!X=^t7Mm~6J)BNF&pC{a^Ak7$M4baC0r&Ll!rEk-Gh( zg6%h)cD-Vh@Nw7-hX5810*(CL@guf~+R9JD0XR*mw*^=!gx}|+FC+twcp`)3 zM&LEjbZ)+$e7u_ckis4%c^0t#3~wrqZiEnRrqjrN!@Qr*hL;@TXtwN3p`)(Sa+<@m zf!{qyyc2!>SWA08CU^gs%|g`Tm)rvOii4Iman%7hfs=u;SA@bPX7Xk$NO&-glu@sh zzto)etiu5{JG;Onw{HItnFH#xHnTm*92B$hq-$>K`RIH!emC;ZWAKuvVcRMs`tvE? zl)PO;9bk&V^u=cd_1fM(^yj@94yobU)a~LxCoOEJ?yX`)aXVy9VvhL;_**|#P@!Uj zPae&cz0jwCPhO;ex0(%_7+s!#Hvmoj2(DS83JR3+BF)i#&8<_6GPTr{w(!Q6X}N>g zh>CXVmon~ci}bAZMC^4|9)aC$W4(i?d|xZDS*ZY2kP&Cc>e9fQf26%mC*uOcThd{q z6}#)_NK#kjO;VpR$opiPU!>FAoOJMwb6Db+;U+`A+feSq=rQp>+&1F|=LRJcKO1-H z7_&Jie7w#((M_k|IOt3#CyyqUcHkaW9%<=O4lYpd_iuR1mJ&?&y2@F-kk{*(o&%(k}hTRlSn>hT6>wJAB^ zNG2gjGCCl@f8r8~0Ok>1x4ErmvS&rtg~bj)GKu4ly6loTa7lfakIdbY%kKA?BlEx5 z23r!(oS0<%!s8g+<-ErOQAybBGX&^3I==2xD2JcB9#sQCmd>-uviZt^Ydq2pieOi} zcJL^jMLvL@<3~WluybMiL4?qUO)$E&-wf6_8|I-c9UG@wcXJ@IAE88xi#x454bD&Y)>Z9x7PdqSeiQ+$7;0l? z*l0M|;C*Ry6+sp(+efGgMx8oqb^UH+`bT47VG6TJDTVq~-13J_p~c|SG$o?#$27Jo zh}-W{vio2vSIlAq%0b+t0ngIJy_Q6ohC52|qP@@39HuuhBTwf;3h4%hCmCFh(hDQB zI^CkZJPAQ!K^KN#MBl^hGmT*jSGHK5yo#2AA^{oc;&f8zVmn%tvrRN^FbaFCmxpub zPP9hFYQonyMLLBm9A!<&Nl<_tl0eFe@t7R1M#1s|QA`!DNkNO2tupNZ)c72d7Xw~< zvO^(4C4LZY5N7dI-U5l3z$D*Asd;bpD3s!!T;{hg)W^kaUnVAODjT2+AnoLM60|9Ma zZWGknil<4<;?E<2l$Y1!cfS z>8+&9a3pqmX|{3GUE$yc443*~`9xc=%3BAQ7rpTil);Aq0+sDMm=>olf0lt^rH65M zhSF8^{L;I}Rx$rrAAjHA7A8vl9P8Ij@`eEI>8r}VH4Ti$x}IIKXg&M3R1Y@`jSyx9 z{|siu#=y75Ev60I6m3C9s5AeLOgTf&TKdCj_u+@rubiw%H1BG?XR>23NMH7YIi9$K z2D*Ns`skTTW*X09s_GcwVHZ8GLJ2m2qnqHd9feiuf43#Bqy(VhOf19ggdE zvs#}~)X_*P)hSW1HXk&W&5E5DUDQS}YV)8A@%!7{V%yT33dY&LBJdDgX`eMY;_%_3 zA||I$*+bg5$OUo9+v64Ai_C9B+ShH^CgkODm7|y~$y?&MHOhzERo-_P4`x>hzH~+D zx`jWpDZAxSEMK?Xt1?8LAmt>@hyLzqCbgdfGPwF4@hkzA(1>w(pl4c}O- z$pP~ru{Y9s6BWX!QJjdG31A!{p0o7yLx9KFUd`Zio?|1H=UQybZY8*?(I;>Hb`8K&>h<;L|4gsX@CLp0D0 z;%D%Qt0RXA!Dx&G>n#H;5yh!$Dagr3nDSjSAQ)tl6+Fxx`YY_Lm2CCCd13gF_SR-)EYqkNu46_-=bII5b&mby{dqWdhZ37a6%>YxPMiEC~ z-t37i_MafMNEWu*n+;vs48qi|31ED{8M;OPXy#B0A|)mc``K8Qk275u>C25R(D=bi zy#h`Y6)&!x00r5x84&^L&Es+`$C_OioH=PqW4GjX7G-0 zxFN1tRqxb_Pm!NvvSJCI;e2y|Gg?Bek`#4BoQ2SkJ#<5XH|Q`r0GAh5lO({9=O>rG zTNWyFt<1*heZh4{mY8le@zw)UX|5T*CULdE189&=Z>%99R7>VCA`^}s*J-!=jF{QQ zC}Qc{u{cU~D5~T-E*WLsPRW2-lP{_@u0I;exNRr#T8F=DC5M;fkPcLY{U_;x@@=%; zQF>TIn2p#=TG~M3cuFO`Ji|)R6+h7;)OvWCQmHe=l1le5lcf%)+3v4~rBa^(f>}8L z*NdE;rNudT{o2lMKg~D|Xkc&_&416CHy_b0&%S&1Dy;5%0lwSS%TXOW3@o zs;s3q{K$7Z}94LinCokBwkg*#b~=v`bA^jQDINE4+m$rZg;!9 z+w6f+cY7%_xp%S_6)drGH)7vnCzB@z4yS{$;;|@Yf=w3e7(F&ZIe-<)0S2cH^p5F( zP2={%N;~qvF(QL;yGp~9Jik0Zfj`+Q#TmJ6qSefUaj=6h+l-+UUGqOPwr*;_&@Yz- zPyD~tU-qeNbj0UP*`Jf=mXe|)4ajFPgJd!L$d6v`yTY&X7a4#~7PnCTZs=D{xVs|s zDtIPyAF|5>=qgnUJq}{q*3^*uL=VJmEy;L?#}hFoMOU=tR9#~d6Jw8x!I;gFWPNc|EAR(B$5aoJ|rV~r)jxx^jCxPR%vuDxakXt(n>bY zs&ufN3&)$lSi^1}T(d>|kWh=DR$;R>uQ%P!D4A3a-L)MXv$aR(-r%ttH$VjOB)#6^ z58+a=uTaBgwUfwH$OWb#3t`k?YZ)&9n6lus>GLHcT2|h1pRkO~<4Q-kbwEsP*%Dpk zB+=+coFw=MTq_5?0^MKXdnk<}(G-kXg=j!3cElYc#d{5SzI`SNc|eEJrKMjT`*Sfb zlv2|7_((?*)xigVb|qeL`|}ld)ZN$8YAy%o5t0BJcJNw`N zEs71A*w74&K0S`@A@WFt*GkSyz=3Om4z-w&%yriqfSj$;oH-oQqCd~V*3r-j{A5-d z(je>2Phm*O?u)-2)i8ec+3vTmzpr7w;oAM0;pXb(mzhE8ME_e_=;cw*jD%Bw@>gy2 zU-Mc0KAL0TSMa3+JHwz%7Sd?@wGaXaF@W z!%mt{QBInVMj0r4)9IzE4&m1G8O1bW^T7Cx`~CT}<c^< zUoeF9&+_5Gh6^m@E2|`(Bvdm#cZ{@X871p%z}qaZZk)_}!@TdfD__$Xd3%kL(XVkk z{UT%=Olr^?>wW8Y8~@2p%o!jpEH5wca9CdO2d6y}&oFAR>zK1HohwVD&P=2F%KC!5 zN?@Z+BQA^iiC-i1fOsuJAuCwK6XK~2vxjtz_OPwKm+Qm2Lzq2AvxDus=k8Ih>Nfo} zBWT@Z9o+oFQqbf!^OnPB$vHX zABKOwsbPdD^QXus)x35fO~+{LF6vr{2zes*53|n!32(bp-CgqFxI#sFRwbBWQS~>Y z*Ffpp348|ZKbeh&U7Om9x7IEKidWe*buFS6q$SKpGZpvbg8R%tWF)CPj6h-^B+@Pzxgh@g`GQ|Hw;a^ZU zuqQ9Hll-!shk^;i#w*u5K6JJOnxnjho}>c|3+UK77wH6yo8u43xW%pptpeEREA#4C zkZkhgZt|$)FXrZ!9(?e0XDV||3#{~>hg&|&E?`*v9u5C>9$A0@2}N6zd2z-rJFS6o zN!d!2-(1xUuc72;N=2XHiw&stbdVS*41W#$$9VozLIro+R zv>9ihiLb+FAb{!sA@06O9yH2*nt6^M1Yr6L<;qP=FLkE~MYAxI;&?Yu0Z(By!k1mp<3 zZ4Cb~QA@ta0SDWSEIB?ug2KmDNDNE6s9HLX!*ztb=>RS+WR0xLAFhnGl(}HEle7SX z*Ch&^=3Xd!gvL}Ap3kE7`lKMaTR45*%1<*~3gtUlwF;#R;yk;IuqCuu=3Vt#Q8>S= ze(m-9U57X+ij4s{D$m?j zfY2#J4!}}9xeP%hxOLmP%e_QXjfw6-mY8PPh!sXFLIxdbO>ty3k;f6ESnMtN?aNR) zo^4E(kAy4inEUJ$0oC^)&E_EY5DKEbA{q$^EB&F1DvJwvF(-Qg^+J4m*r@DjFJ!ri zK~H*Rg97Hc!ht&h5TzT*fu*%!$-HXK+_v0(n@ukPTOYMeXgBv_`zutO5=)OCbzV}? zGC~|EQw-PUIk*rW1$L1Q{2=mpAboY%zO9CTwn%T>&$@4ozzTbzYv@_Mt?f$H@sn^s zr|hu_Qfdzn3f?)~1E*O=lV%G%tFwVsQ>D{P#fq7_zWxY=B-GDR+^a>>lkGsw=qciB z3p=aBAMR`6FSBLgAJXpYBS$ZdRPMCRH4XD?pHkBvST|6RDuHU>a`Y%?qHUM8Qi)8w zZ@3SWN3oWOKa4q#?YjMp%L@$w6I5P zKR9t}OggihG^g>xxoc%0E73~&*pB{E0EXe_Jn?6hj4NOy$w+_mi@CUd0mo~)@QHj* znQc#gIW&walHXsvR+x`>CzZ8Lkk9_&A{&4~$;|goff00t89ZQ;cukP|566t2j>iMx zj40T|&;!(i55)1YnD_gccZvw(Y>Y9k!yy1zK&QWg1kBh6pye{A7jwW{HyS*QGyZgJ}@BY^-!;ftKJLD}3IxEyJma2Zon%Q&BSz?(3)o zDCgS5&goqRiYL6YNXw`|IPo8r`##GJ{j`a?+%2#2^*Rr_rqY2B1uc|#H43kH>sx7^ z(QHCK%P^)A+e%kS(l-apFxkFq0Q&#VM|BZa$he6n2$>4BbJA+9ID}pHNZ{LR+cuzB zYJS2XkX1%+ZKWaoh9?rmT9y&n9;hfa)xx*sQCKWV+N)mvX6lzPbi;1V!C~R-B1bIc z#)7tkqD|*)c6m|mGyABy;+u{+Urzy}oqwVxZT)#!lL7s}lRG|;z#dNN-m<_D-gb^d zdSEZcJuR^nEJCW4+=U|4IfH84WpD#7qc_bDr-W zv=As+RZP8Z0c?XO49xiFKPPw2eYn}sr@{N7#X-~$o&)y(*=(Q=9HA{gQ~`b9TXc{h zw~DZ5Hqv4QDt*&c3lngd%bPMpCbh;&WzxJGdUQ~TLxNHM&E0h&cbbln=Gu~G+rcG; z>EXaO_#wf6lFt8lT)p9m>-NRwo7R7)Z`1ZB9GLyr-~QZ%{4?LZ+<%U5;oW8Dow5c4iYrl5D@6)LyeAgQ%m8(`=MY zA=!zHv!wz4&G+nlz@QFn-z0y3>ywt(GU$fSq({+B%|9Qh) zj*GR!i}ko51`q;;&lQBp zx~2#?$Th&fs_d*EMKC`)#u~vG!Uh{vl{-;~ym%u)v7jxE1GxQQ$ep^I&gyqzzxH*s z7C#Vi+qCkbYUV03RdALpt;bKmD}ex6?)YzFb?=0gNyY!Emp9Rwh&=twQ)-10GyY)D zHe>GrZjLsm8lDEWpKVoeX{<6&K0NA(6U}NLeui@<%Ptx8gB(vmB@53GQLPQX#=hry zNPUv;z_pxNtC$O|C|!_pY?swpt3XWdSa4&eFvpP=inFYjnpumsP}`grbho0KVG|Ox z)*_9VG0(av62BWy&jBVGToW7Ahy@q%OJOK26^yuH_!a`|NOYHU>3>F`5Z|k9JYc`J z@xa&em>^#O3p98kc1m}YO4H@7cV zYN#PAVa6j2V$vViqCl)a|5^RjS`hrbNE9T$0{S%7_RXV+5^SXyWwRK4DgI zGWFnA0-S?8Ha6l3vY=?KqF?=7BRofx4a-1sYK=E5rh4_4wuWM*BfFi?3L@7PYZ z?FW6&_^scOU2?CmJdLc1ESDP)R=}sWLOGH^K6PPO0WWJSzCzb5D+u~4+Sz2{aw4B6 z3up!DSE{PMT~rm69HqD?VbV%x59m%P2_lMNa>Qp6&ocjx!_s1=Y|n}&aC)%;H_^v@ z7lfPb78_e>Um_C`)goC%sY+`N&|P}@7i)=Fqshnon!U4>-swgydWxd*;)m)1+PuNz z&!YPu$^Vm4{Uf~pujT*mfBjWx|G9tv>j$6t|38lZUyXzN**uF1)~=r-KAYjuN#G|x zHRO|BMp=k?8YADcN?sZTC#F2h@~Lw@!PxC-hADM1P9A`Z^L_@IY$2tA1VEV{F<5UE z8>F;-An_~LvLZAQ*nIrU&e3l&i z@bdMK&yp7}4<(0mbeaU*4|3hS<8MZET^gbtkjw;(nLZD-?k97AkF{P`Rv$x40I?X9 z_dw#0n5wQyenO5Pv(N@91qf3dyKOBBjb>WcttPG%I1;ccbw$xA zg&o^cy5o4&Wjt4^rv|5mVp?IAB#dk_g%uiJx(N&L#exy5dBs%DzF&Mr*?sool)}$R zIWKjB9>dzt)1mc!4ZDk1ja`=4(tpB0`zO->2Zq)^D%1bZ_W$4Ihkc2Y+QLl$3Ypr< zN^mUzcLxAwkg+Bm^0s8>!We=#<%@NbZOp+HAaEmkm%G&#)8Tx^mdjSi+7k~;J= zOc#r)8d0GDc!u@SrE39UO;^19P3^8$ii z0Tcme1Hmw19$p{pe7_4R=O7&&Xu8rKLFQ{bn<7i6eNmdNiW{kd81VcqVxU5+`qQ@j zL>J3{wCaX*6GgwSYkRJP`H61XAzWZu=1%0Dr>>!5(M&Gzrm1@>Ilo%0N%Z;5M?}0W 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 S?mr0p2Z8?}@P8Zu*#8E^vzLhg diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/api.rubygems.org/quick/Marshal.4.8/bundler-1.12.3.gemspec.rz/GET/request b/spec/bundler/support/artifice/vcr_cassettes/realworld/api.rubygems.org/quick/Marshal.4.8/bundler-1.12.3.gemspec.rz/GET/request deleted file mode 100644 index 7a9ddf07be..0000000000 --- a/spec/bundler/support/artifice/vcr_cassettes/realworld/api.rubygems.org/quick/Marshal.4.8/bundler-1.12.3.gemspec.rz/GET/request +++ /dev/null @@ -1,7 +0,0 @@ -> GET /quick/Marshal.4.8/bundler-1.12.3.gemspec.rz -> accept-encoding: gzip;q=1.0,deflate;q=0.6,identity;q=0.3 -> accept: */* -> user-agent: Ruby -> connection: keep-alive -> keep-alive: 30 -> host: api.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/api.rubygems.org/quick/Marshal.4.8/bundler-1.12.3.gemspec.rz/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/api.rubygems.org/quick/Marshal.4.8/bundler-1.12.3.gemspec.rz/GET/response deleted file mode 100644 index 9304acc06dd42cb4870fab79a4c7ade37dc6f6b0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1426 zcmYk4dr(wW9LK{4$St2(iaOH;6(#mA_x)0)Sl9)G1!R}qm9+If&MsH?eJ`*}zF+y6 z)W*rmu`C122R16Ejw0$*W@uCDr1(J0%!tG?EzNQ4E}GLn=gj%e@A3KlzNgS`FVDt| z7>uJRTviN45y4-NC^CZcFeRGHRa;iD$dz4QmlZ3(>hkSyb?GMU|M*(^bOGGiiC=FYMm_7kU z!#KuM6t62f83Z)J%fsoCM^D1X1EJnPEMEMM;t(SW57uKj~ZxB5J&A94=T{ zDk@k#P{LX?6s+`5CD~~~O*UG|Jed|;)1X>K;Nkel#@6>020FqnUV?A!%-B$$sU3g0D+>6hoMABQ27&l~+%^KHNFz?@s4QiqDV`(= z1N@jztyX|fMv%w1TUC8-Nsy|6TLl7!5~SN^&V@0GF;cjZW{d#eASPYMs4FD-_ zI}gtWAcP1$r55PJs31}cWJHYda4(%M^wJ?Zo#Bb(i3k`@vWTT3SI_7TX7>XFmJeRv6&TU<{>-8#$D)5WZ-pPg zdrtTX^1T(rx+yRHa_bNG@Gl-+AJ<;vZ0^Yzf-^Td)SjO%DRoe!d%V2lP+OWf!LWHl z^1PeggO^h;51Q^xdihx2RjzE4C#mPx{heXx^zEvvSo@BYD~s(JK<*!?TaYv<>Y6(c z65lW^-rLr3xo!OcgXkVGXyHX}(BOeTP7Jl631nj9_ui^>q};;g^tZ1xrEj>=m4B-5 zQt|7B$B&Fn+?LilbzSSyvi|GVCY&4Fb}4J&!QGFVEm6n#6RDjOqWhB1J59^(g^>$; z0cPBOZmM%_H}&P8nKfNQj^7}O9N%}QRVSA(-UF4;bGa0}>`u-64?bO!wBJ2}J#19r zmXY74Js*49Qa{g_Yl7@YhaR}Li5dMMytBD#^XI>hIo_SvQ{|Xw{kY$@5BKr!D5vVK z+`QJ(vSn`Y)T@8fs}FSyJD<4<>1x07-27R4k{((vv<}$0ptSq5ws*G{4xgS4W2IDU zJ-0r!_J?JibB5-a8$U46FPE}4AxE7RmY z8~fb*Bo$o4v_!= diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/api.rubygems.org/specs.4.8.gz/GET/request b/spec/bundler/support/artifice/vcr_cassettes/realworld/api.rubygems.org/specs.4.8.gz/GET/request deleted file mode 100644 index bd485a5bd2..0000000000 --- a/spec/bundler/support/artifice/vcr_cassettes/realworld/api.rubygems.org/specs.4.8.gz/GET/request +++ /dev/null @@ -1,7 +0,0 @@ -> GET /specs.4.8.gz -> accept-encoding: gzip;q=1.0,deflate;q=0.6,identity;q=0.3 -> accept: */* -> user-agent: Ruby -> connection: keep-alive -> keep-alive: 30 -> host: api.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/api.rubygems.org/specs.4.8.gz/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/api.rubygems.org/specs.4.8.gz/GET/response deleted file mode 100644 index 78993ae465991857334473d21e28bbd65659363d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3259398 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%0Adl~be z9B>S9Fjd_Ps+1W3GKyR~8aA0--B)%muo$o%$llx3iozr3yTf08ck8=DorKVE`dIKK ztw%<=`oU@snspys*LqMa@>9R}urPkN?}iewuGLU)P*wKrNT_I_co}{Yvx06W-)sT< zW5W#=1KLz2#mC-6yT>rI9hPsb@BO~PQ#P1eaP3`q-FVaY9cb*4Yr?KnhTV3_>8>R2 zWvWA66^ZXiL=DAIh_ghap_5?v8JyK`IzkNx5i`;vI_fe#S{~iS^=0h4$5bYwWUGBe z)jAX!&(;|(X)K9Z78Bt$oR{#$lCYI7t*gXrMJ5u177q7}FAOG4K?wK|BTBf%yh${z zKmBg{qqlkYCe5c|S|zOKre;FQzM&z>Y!#;=Pl3Sa;aJYfXU4=x>1M@r;QPT4bnoA|!_7-d^1n||Ofk1ZY-*GcIYj(~>4 z%jhzy1i6JMb4L=IXxyNc0|iUODrqll_&SO$4H+*D48zn=E$S_e)U!(2Pa4!t7DQV= zc8EW=;iI=NX|?iX(9KCMbTpdZ;@oyaC-p!eLE#@GevcD%$%FyaQ~&CyQsN%NP@|`A z;*gn`k!*A^%f)i=04_S3dV}JrO$Dgd#Uw(#4+)YSOh;3z*aLcTMXg((r zL>rgwA;yuGrc;TYtA%k~(LVVsLxoX}%3ZSHJj^hqc6G0gZJkf}H`hE;V<&1AnPC}& ztr#mH&v*beS5I4tE}W&onLtixJr~J*gWZ|p>U9=BwSKT&3 z24`0t-3x;au2C#0`$Aj;=dfsFq#_>z$xQCvCk>L`W*i71za>45U2p^Gp0DlfD;3Vf zGJ3TS^=I<#%M|yf%TxZ^iTZT@gqfeGRCZ8OkV7bAm!_TGKE@w#g7`9zn^~khXL}@C zDgx+QrA`p+`QZIWl%q{5OZ5DE6;XJ^E`1$8x^U$!+hEs86D;&CTELW+U*UFc zbUv0Ljgpjxi4cWRsJ+|Y*{jPv{A^1tEU-)a_G?Vok~%K<>Zr5(=#CaUq2kt0Qt+jE z8$0?%9h}eDBL#knZlwzlVatA`P?QfCwByE_P=pGpeOo6X$Jfd4j(dSx{wA`&(Eb9<7hnmv|;|30qQ$bv+-I{B;q2 z>*?L4_DYwM;ux^| zD#qm3YORGV$OwP;x9O9JJs=;tK-=-g_#ZF~U8s-mBX{_V6b~OI5jJOf4bX`1f6AU@{9bz(JM@r9@o2z%vVuGSAFUFEih0xXShJ^QJcDw zby>j4IFPh$JZKvID}+sI2DnbLvO8O2kml*<7IfB)3n%>bHWL+5_+<;e@Vbq0F<$OK zA|?SeYrD?dBWI+Sz7tqhx953($SH!DeuBgN#AI6E6em}O_rZM%n}@l^r2evq`krES zNz-sv0)yt{-Acz3+R^ogYn-~fj^(p0Q7%k2n}k7=` zd?Tn))?0RTd83}2M{;0PIZ85r9&cIbnIE?9k8?cHIJ+*u_+L}mO}>AZW2s?#S8ct83;`N!W6P(o z=AArjj<_$~$)ei^M|xcnIkz->2iAKBmeF?tP+%?WjgniE!Iv%qRndw`apR?v4~=;= z2g(>QxIy6}9x*35R8S4+@;KDDCrJuX`5c(S)a)`@qaY4d{Q(YFI+GAO6BEEbfEzy4 zv8HOspIO(tX=uJpLYOiFXN^qP&1C&WVf>*t%KL>I92cEX?%Dn|^6m>f_#!$*jiy01 zp_l+B(~G|1E3VztSOba>%WxVcO*ZahIWTw%^}q|}*R(9!C7-jzW09*U5j}~fK&e;v zwnDUb@J&DOidk;g?}n=#fm1uMK2vedA+N1M`d$GTdGd{Mx&YWU+DK*mDk;NVfDPoe z9hm>&agVppl1|u?@ws5z72BxhR(FuG%&G9su=K=m;<25mid)Q8^g@(TluoL@3;VVS-|Mx3u=v(mP=B0Hk%uQ0=GPipd$%hR&Cl@WrSRbbgaRaL)(kR#g~05Ob@J zKnHCRDUD6YKc?vLW472gdtr`hD?;=@NL3#@w)^LFfP+Eia`fM-uPNytaTj z15;@Bxe7DQ=Ro%qx@VsrWxNCvGUrbyZ_U%Av0qDZB=jDywB47wmf~8wHtE~mc zQPz@nmdJMzGt*gZRvgavD$;v@j?N>3aR%+|b2G{eBfXEpZkY#f=z5GG=TPaMPowMZ zBhR>^0|Qf8jk=|}0MM55ti^bK-lN8gpM{Df&a-tY(>p_amQ zy<7RVwX~xHcBMpsCWv+w-l6}~!CEWIt8DsPdl^PeqRwz~S4zz|41n>;@*U2tQk-BW zdu;zAA64xyUSAo8<$lu2>$8YT!N)=y)WGs(F%u!wE3pLthEY|9FZTd0<9>`1LZG_!6l8dhy?Y<@E&tz1uRDB41^DIO4q+hl?D)b(l#u8V4~+YLoVcq0UXFe#}kU zv7#KFk&LebxahO{yu$pl?dPF$>dXKvmTPH3l{~2yzF_VDoZn$69@dadsEQ@|-wWUz zJ0+UD%3Jlp2MwOODjrhJN5a86h8IVMXWYS;%G-@l8UF-8J*do{GC8i+wtv74hTR9(f(++BD3-1b23!n=mAQF3|hZxg)1u#~`k!5A+QPt>wLmC*z z%w);!e1-rCHdMAq?-8YOV#jUDpD)eP?Z%WAzCR_^G*|c1geMvyqIJlz*0;arL$VGo zOND~{r%jYeFb1K-}gK=1Yz#;;7FKaaU4e^!)v=OVO2DHLGn@aC#mS&Peu zZM?md6~Vh*cuyTvyFdBI4o(3|r!|PRI*E3;{-cHD#kaue?yDd_|2u-M-nLSD`w$D(R8HVgQ&w|=j@&z37)N!7{Ial4EaYxO^#Lr=ICt7Rb74{fL zT=4A=S*2)J-tlqkIYqlAHVW4((f%ywPlls6zSI$?8qnT#KTS+XKp2h9KPtf7pXNTr zU2xLzSay?$P#om!LO)*dBo8 zvf(s{Cw4b==PqRtHFkiBh{Sy{Z{BK`} z`Loj~O}RF07#MuY&BRD7DnlX~Fd^L)Un->?vqEtGQY>an&}H+@hDmcHYqI;9`IOJS z+2cs4M=jm3ItJv|oOa`F6oQrPfApowT7E)}wj$+Sn%iHuZcJdy;|FnY=V$E=HUV5{ z+5B#g`i+SCc8iuBS0!Zgfr0gSmgm%bAQnBhnid zlkM~q#Xhn8fYMI8{At@SCa!k37B`>`aCU9hJZc1JEv-jCqVOB}HuJL{zS!zdv=hu# z7B7)AG&ds}Ao3*i?&=}3d_zk7NeJUp_9|?*Xr1<1H{C?5%20aZ z!(Ntc;Pv7H=V0$N8mvuqRaim0HtpxK8hb<$APC2di z*jU@*DX9MG@rb4^?fn08a;Ak zvN~`6kAtjg=LTIAT=ZKVR}%Q2OHSgn+kvpF^Z84Em?jWq7C}{Xd0Hw0uD8@3U7bMr zWQB7=>HmOX)KPjxp-sWhiQ_rkW+=*gKl%2vNnSfuk4R4x&}7>TCj}=zD;X_QNJr2m zuJ_58jH9LDCRu-{V*^kXDDwRH_Kt%KY~XPa_`;F+ys$}@57%OlB#i%2E7S?o^Ua9q z9D1SmWBnnr@_|1YVb%`^UgEH;tYco(ic@h#dw%Q46;&~PF}MWyo?;=A)Z`MJs-{V9 zoA{wl+$()?{!V#HlP}s+5>H@Fz2%vb%caX*f1v3K-MBawQq6mCA?(GHKCb~2@AY`{ zu<@5len`L8E3+epC>o=TBuXuahLs!AoB{+!&XGP$qrqCe@(Nbea3;1H=BXr&)fh^+ zEQlgJcs$xpv{tZjKYxPgW0x+=EjV3mcsLhk*Za(Fga&=8@Qk96)LJ#4JCdSL$noRw zrnoj3XXcwAV#jE`77&gjMmx<-C=iMM4)6TVR4gNg9Y2?balH_*&tdND_crN7R-bQv zcd=y6i=Lbrq#6mYL%1_VHk2nIW_llY6?rZxUIbJV4-`;Ni%Q0gkS02xlVmhC#SH2ZX8R$ zS)C|3WhbN}5%$lwtQG$m4Es^<r{p5ve)f!k~O09~PpYWmS!Ipdi%+LsVJQwRy-rK`>uGvaDML@@Xx3 zW; z8!@KY`boEvK9hO35k$SWFjc80%KbLIs`m}u{0BCP5o8XiqN^mqZGu$W*NKrUVqzI! zu8xWJxh>L?kr!v_jtI$d+uF6@VQ}1Vp*3j)A15c2E=->&m5C6Y_@m5VwRWU%abBP% z7y+VOdF7^I2e0t-1UshBd0%Ax`wXjor<4C)HdUxei!?|g*`40xv>hs00ju} zZ7y5IIU@d3_MFyuKg6&vp0h(JBG{o|Omj{2V_jJoqk?pPS3Ng7Ou`}g3(K^t~#$q~& zT+^f%e@VicH?tTFgsyZS^512>J-Q`5#eHtrF2gqZO}|=lYXje~Gs)YRUB+Y0&8r8$ zgo4bcii>6To{8-=k8-`}_N~;0#>I6qy(T{{_5ddjSR=YlFj_mFx%_$>V#eD{t1Qst4+M+`(U0#?!?D8-zeTJ1%GqTzF4*O zMS#|Cg8Z`lo6x9><I+!R+hFcOmRRe&AGafE`Rav&%J>&bF=VlZy`i{xxg&D+A`%fpV?SC+mw2 za=OEfy=4j+-8E}z*H=w0AlmRczTIh2m0(h9dWRXP~xA zW(Q&mN5bxv&bF%?pOq1JM@z`QCoM@O>x=gB&bAlbd5c%wtz`;5mn~72M%kxVt*-n5 z`lULp9*!;aQ2-{L)7hPaWlqo{O>cTjQVigHz7_IJEJ5slKz28Vpl^pD2ZJ7edpC)V z4-)g<{fZM9*8<>4Ry;152`Ki5ZovC}uwclP^pcw~r zwDu|l7WXRjw)A#R+$>)r->=NC08CML7HRVAkBkDd0Y$wEq)ijr!>>=-G5fT+V(!WQ zNIQ@)^VD%}!>FUpT|ceG`X$|?#o1Qy`B-t za;|o^%@o>MWJeyVDXHafV7ln=b^iPRDV=I-9&bDutN}$k+tSMo)fi;hpEouu0vsTw zQz4*b@z+{RdXtP1=vnn%K-2XMaB zp=7qYJkaP)_-S?dtG{)2Thj@qyJt&9YcAw*SZ4doFLg`+PwduO*&HB4(I)qL5^z=5 zsPF``Qyb>fo3h7i1>7x_#=EziVB)s|tQ`em*d6SDmS5qGv=Iv%LB_(49C>F85$SO4 zZ~{{&iEz&!pGUk#+Xo)f-htm&x8_5&!z|6f9KvIS+PDIUjCXDgzsg#!pglsDyVS3? zX7uaD+`5y=#T3h-8U=k_&)_({&Qr)8Kt@~hi67(>z1KQI%vYD;%wCcgQv`>a6&RMw z!IO&yA9fZ?q4ZFFJ6AqX;Vi8)6`n~A0@`7#)218&S7nLSlrAnoG(Z^EH_Iy0V{)buA=@u!51cFQ5*8w z)#-mc@a)?3OLl!UBmnvt!UY)$xEPJVk0t;EX}|PsU#tyBN9_!H=cvBv3J&jGD-xGH zDdycIL~l5Gl6NUu|6kOd#qU}Z@pj|O4f4j;%S40J#g5d)7AnFk)sW{a+JGem!Mc#m zLVe!rrYcdiDj$r%?2f>U{0@&^Hnx03ZOgo+?m91t)(^=V8%!p;%Vc#?RPcjd-eD}F z?Fp8DL12GkEPB^N!LZ3#e&a0n<)$dBEaZj34qKRqv&ut&C9p7m_A`C^HH2*oQ=}u8`sQ`s7 zgT_e!mXR1qOFy$1B8J%$s|Nhf;viS$%^wJkNCIp3QA}kT{pI_H=T5rYIV9i^No7T? zuCFpXBvYe9ODenxWZa}dJOb}hFCsY^5~PdI;m)7XIq?$;rb$Ipz>zlWBxjN|nK01(deq07msD#;=k4mZ6wgb{>&Mg=DjR^2yG#-}H&4)< zi0>yUw`?p11L2jpcQ{Okn}7or2-d$YA05mV|HWwaTCz@O3G_M>)0solcSr}Qx@=rI zECdqiEyOlBI3!1Slz1BsjC@P zduM0}kN-d!dOyXUnXe3^dO5JT4;Fg8{8L%$kNATPmd9Wdp*898GQy}kH%c%hz@nYM zsKPQT_R@$*;ZCKq;~8Fyr|_0a#UjO~7h;gTFISzFN=+83gyd^ru`b|Uwh`ykZ=rbE zR+_1vi%nW=WyU?2qHgHct1^ytF?x;I2+;%;_C!r4cvN&xh5OazA4^+lYN9rdGP)$G zBq~%4v`TBYI!smMsss)rXeu!~r(za2o zF_xQfi{%3IA4(W55-Owz+qK}W94W4Ex%$UU@Uwga=5ke2;?4zWc30(gtrZ&@BW^U_ zarER9BNmO2JnDOV0|^i;+FrdCPHkeXckZ@}``wm@;Y)mxyLh}~dpkd3=7N&U92+-R z!eGggnnS%xBh>bcu7taBNTne24uw#+-LN@4wTfJ`_Mf64AgJjdsm- z2zUhp%5)Lc7LtL}W?e;%wt<>|^by%BOzKNXezQ>+?VA}$MO+>a5fj=Um(U2#cf~x7T3M6FBYj%=5a?~)A}n-KiPRpxyNa9)lUN7va=aD5ICdOB_+ZC%_;0B z!LudsZF`0hLb97U#m4BxTU>|UIg`$E<{)gopDdf@Zc(r$}#c30vQ#O!7%F>yW(B&RXn}g@AQ*_jWU4?SEi zee+21bB2R#n+^Eqt@ztr_-_6a}Ka6^8o}fOgy$ zBI_$iw;V&FwOgRR`w)fGLM|9xlyx-NKTvI}KCPZU!e#cLG!hZ`G3H7sQCW;NUT(aF zGIHtpy|dw+PFaS%C|aP3przdDfE_UR7O;1Kd8DT`n#hH)jYw8hukFSp_M}c=62eo# z6Jj`8N@JMSL`c7Z9JLnb5!l-F&{?v!(G3GrrC8|1hpz@M_K8K*s0Ygb4&%~XUn8f9NJJNfj0rX|?Y%AQTeG7MYnsXm zS#9J)JL+*OJ?{W_WD9pi%et$#bMN-H<|MCwp=}t6`2`|_pPDf?jACw|eURDvzKlsz z3ZjLkK9(2D1R(kgGF^WhJn+JkG8s<#?M&sNkKo{k3`0xPpF{$uovjnaZJ3&_@nL~XWjnfz$?E9 zmLp2xHjLf<+U3La!Fxi|ibjeE_pifofbuUYDAsH?XQsB zo28;G+3_b@$>lvW@NwY%)%=nbzoM=ZAbu51JJ&zn8!J;5H?1@6t2`{#9=H61MoR?Y zlBz0{oD6z;19`(2tio9M)+kgwh3KzxUTJr`<-lHZpq|(Qb%!h0qY##Nk%fKOv-AMh zINHrNyd$*9Y*q$sO;kIFg%`S&^lCe%#48z$b)ioQ_D)`~uoBix@M}2wY`y6>TKrHe zr^{33d*{MOs%c{vKKS#3I??jNP{%w1dvuH}GF=pn1yi(39%_aR=|)vLpc$aeQd$%} zXWq%M&76%M>9SzUj+u-K8_V;R!H)>9DvIX05D4$JK&CcbQKB^)9};(aRWA2Ssxmy< zvLlhODhY&+opL9F_nyaZ~5o9)$|^zyDB9xq2~)!CB9Nc$_$4?+r|3&PMQSpiB^ zlE1R$;qTDnFD5OfN)-s`7r!l*(rs8ICft&Mw6!tnyn7GRiTjDl8q^Yx;~&3SDs8w# zv|v@-aex}}ED%BjoXh?Y>mFdBOgRo6Wx7+CM#{NuO<>^4T5G^sADIr!i7?z|r4u&t zElkG85;$&TF+E}q_GU~dlqEeSeOJ=5y|P0qbJ*s9!9RLkCO=Pr}dxz+vf%I5)ZjMi+J) z94FOQBLe#>vMx>YBvojwjz?2pxAf>M%9mu$6|T;61=eEI0mU|Uk_*3MKLaS`{zcV? zr4KsablhGnN*zNq7@~tjy-6^&JgO~g}FWH_1J(fsM#sCSh z=%61V4BJLH`h&1UhT{;~GwRi&!Qg2ogM>XY{{;%r~n8+h zw}m3bCB=$66e|wJt++$+;_mLnAuaB1#oZkWO>o!ZCAbp;1xgBE=)LdvfAi0*IXfpa z%p~NTefD0@TI&Ib)nu^U;==w!fe>}qsh^uF;(7DFiH#OY#(B2C+}z5{QI~yd9h`C` zZ6%1Zr7{h9XN>`(c-4~X4E_85Aw=Q72EOyG+A1$ys(+~JxFMXVb~8Dg-=UuiB;OPE z{}_7ET$y1=`+zC*Ekw7zt-IFrn$)7lO{iS!SjBqc>l;P>&ZFK$=8kIa==+bU3tyj# zg;ZLvzE?A#pHev`p>w+IX|tCPxCEry7ZtvVKBjw`5AcsQZ2V36l0H`%#$#fIbm~Q9 zY?%r%;Y4R53FFa8!1Fw$-Hxcp}Qhe<^bJP^H&lg<~zy zx6SmTAaIyR;lET&!slkQ!=SqqpXOaHj!hhTngc+zU$?9(WmR*y;z=qCyi9SPqY*WM zMgYB8DALr}6U)pm=i`_Nj5(%MpVw?J4$?W9Ri=CIRMv<4+TzZ$pPrnZv89RuUWphz ze)*a>(mR<4?lJDa!fmNSuVT@$8#bZ67>%7Q`JFgyICGpg8Bke|AM7tN-Xh_G9~ zMP<>?>^qM}t?M7=#bQ5qj&_zgA5cI)Efky)h@~Jzr@7}vvoX4&%(R+a>81;Wrtm4> z;+mLQMYzxc*AmEMW`D^0wk>w23Lfl|n^Y>m-owkyutCz*ITlzqola3Fn{iVc#;LJ9 z%@|aqJFJl^l73P~v=4)e(d}Oc%o6xoxO;Dxs}|NOw(F$8Bmw65gZ`-tj|dm4b%jKL(X=Ri(yZJRlgMH}jb`Tphfh{|2ET z`;0iv3o3HS_v<}J8o2Lo3~K+;JWz@5>~?f$e>(rWW&>Q4D`X&i-RgDZd^#^g8fa9L zo7U`QNB%MRc=(3Zd{4IE)G+G}F0#6HAGfd%F^$&~CSazvc{qx&fOg<=|99 z@AgsUIa3~tsF{J+vfq6^crsxtMnPNv+w7M!^o2#LD&qz;(Kt+dYBw~5Es~G50+k%5*27>9k zF)f_65VY-ObC1`zQs_4Cyv4w25$-$xvb>t4^o6eqqY+vSS^=#WGdrLTcB>+=%G0OG zC{wLSLFsmwJe9YwtB(DJr1^{uOlVO2M#PJMi^G$y#@_L1qK1@fp1 zbp|{J1M4)mHVb@GAsmyhe$B%stY127!wVqiOhH;ub6{}6tsKy#Q{xr@M(ywB$gjmZ z(lUQ`d0pxEUAN)k$9=diOB`W5^TU2}#8TD1N!A-U0PL;e1YG}0?=ch;m*aI{yF0x) zT3DAV)tCLuyVC5Q47{lZZv%?u<3F724s=h-!moS>#Dwbv@kNLPmk2ts*PTxC)Tw)1 zauU)G9O1Q6pH<(uiWQQ_W#8{iZ_6G9SG?~jy;TN3mfqeB#k9M7t$H4K^!;K>y?ZRU z?edy&L#c`;(qGRw`-jY zSp__nK)SxsfO>wj6fEaFctm1H{HR6S`~^MiB#y89+_N*6VB4JeHK#>{W7YAF!}AP@ z1fs&Xg)Jd$?#}ld61b@Sax$|aIewSMxtVyc)59Cmx7e|1f!K+z<_I+g8++_0J$6sl z%3!5}jbew5`m*K^|H&aPv;p#Bp; z8jYw{1@aXZPaAt91`jNL@ng{O{}rMD5Vf+nfG>4G>W9s9f`|Mvw8v#FQ=P1RD*l5{ zK`T`YMIZlJ5?O&i;@KU?AHCb-L`X5XqD(2=aaXPf-3$u_Q1h9^Qw}$be zhv=mr2Vrxe==9rZda4t2sy&fspnO87Pm3WR41WQ6P5`z)SZC{XQ_tvyjH+ zxdV;E>iZ%MeXs@|ve54BX-?{5>iZZFCw82eQ-9?#H7VZhm?i{;zBO?nEO!S&2)f$3f#^opr9wT*`eY;vCr1A?Ne-be& zy&6oHw9CIbG+gh{iq=qNaFcFYwl3@$o08p6GOb;YobLjE+p`+lXqunn)U=s2cd*}K z!}|VXmh($2=CG#JnE14RBpH>C6B()KfNJA9z1Y&BTN~vpO)Fc$U5mLeB^>3n2qKoWiq6IzI1Lp>_I@@K zj)~(AkHqUU1v&eCFtWFx0dqUI<1+h}de^Q9Y`iQK3lmB0RuW2PY*L*xzNq_YZ$hH8 zB*)0nvA-YLF)#t)tdbShHe|($CiHYXR%uIrtFt^`kNzn1_3}7jv`&hpulDIxU!BxL zujrRK@%ijVqV-bLBMC0yhPit-LP(oh^rj?rkm5_IfkyOZk|aD0@g8Eg_$(Fctg*>f zWI$b^i}X8{elNa9B@O5toxw zN=%13LtYs?=Si}z%Ca|@dixrTLCB#ss*>jI;Poyh)Cd0s^eZ7KSp!#9LE;@V;)De) z$x}a*NnSvX1T3dOQ0W0a&5UMxaQ#Rw1 zd$b6D(LZgc_6ig#{-o^q$xa2#6JYi;>oKyb$ou8!rI8&v@lV1y>%xFxC#ltQVaCX` zpglC}y23lE`^!UPaqAqUIxS^&)keGcGV`>9FL;^P)S^Dmdx1oXGK=;)m{Sy610rN5 zVhH$$V=UpmT;e2R-{OPz7gIwHIbTub;bDV5-SE1iyA%h-#eBC^{sl(NPslYz(BAL+;bKyhOIURmEpMj)Du(^w_+@( zbrh{YerIQcX3_R7&wq_0s}NdG=?gBJi_eh_+K#RB;+CmnTh83!MDQes@2T6`925@I z@VH8(;oRUUrXY&(m9}G=PDzCpkDXZSFEI#K<_j0JHex`P`GI?Pe~=*VrX%Ray;d`w zEO}uF%e2DSTxe_}<7zrf$N;&ePIEuTEj6x@-%%pu1^+e$W?U)b@BklA(yE$mn|#SS zL#kJ{){3KsZCiyx7nWPgfAI6jo-JPeitRuk(y4r?Zk8vvin6?hvP|c_QR{sBq;_Qm zGpfRIVbu)K>vO{;F|w)yZj zS)Wf_tU>)N$+nH*F31n@;%D*VqVeM96cUOa$c~eE!-t7@nXWW@=JX(ka^TZy5#XGg z2=efIJ@ZUngcj4t=Io#zm1l_qaGVOPM+I1bTRToK+4QDqX-W$u-Q zj*ULn5t@|2*AQz`vyEe^lZyTBr6`{&2r3|04q6PP)XX`#-s;8OSFNt&}g}_i`7g;%1Z_p^+@m>NcFIsssB$^P@+on{0ZBI&JWS~gbu6iDt*@)$-LE% zcRbCc^Z&T=CtYMznjhK)7Fa}TDT@%*in@}CHBifMxmQFgC4o48!c8ZfWDj|m9dgPv zZP;}AbKPRrHI$vm?^Trzt&jMntOx2S6A$H9u$JY|1UII|?Y<_|r2<>(lgO2@GLFav zttc3Lr6fi&!@9pxTUACr*QDctZ8{8?HS$|T>P*g9%<-gm7x5EgmPQ_xD75U+6NJ3m zC}l0UKFe3-d!0^k+St7vb-4Ze$o?*Uvf?xG=75)DHb5i=_cmSl2`Js$w zr-(3#oDgQ!@xIIS`U03lylTl_mhCm#=os#v9k^rP@-lu|y}mBzpN0yhcTqgkKWE9s z53vh8P)XPPxhxdTYx%V%{M93te%toRMkv&zDG?XW;E=9G&lQwTFLX5XTV|o&B;A@x zMMg)^2d*$X)Ta>Zqd_)=pF}btoJ;{py6;h{TeXR8UCu4PQez=-iWi{S_&SeeFct;TJNeGc&kJRJ!D zsygt?p@_C%NuMY)C(XW!6)iJ9X2o#^OT^0+=gQVJfw}=^7Gv+wuN%DlB6IJU!_|RS z$Yf_MBgN%9@kRO~Ks(FmngI2gw0A>3176)-1)67P%%p@(Bahij4ffXUb+ zRfI+9U1M^RU!amTN~X|-kJFZLXLi2ICpn4iqVwSoEALv8UhiQzI^(r~+Yg^DsXa51 zvNK7Ji;+;W$45BioSFfy;e!D~xVr+4kbs3?}iyPFK4N9%6 zhk~M;sK}EE+9&1`VIrE`$|8`xgGIjj^a|k#TBj1uP1QPXbQXFmm`VOE4fKPV3DB)R z#WgA5OW3+5n;k$D`j(C3pr}mW1UfbmU+G(RIVqiiSS$)8qkE&BJvSqd4(B$)P?!`f z5-fg$Ff_eIh?kpX3re$Z>`i&|_g0_pDH!@H&skl;)v<#`2lB;$o)IJ?WR;9&fhPZK z5=Ea^oUC%u`2l@}^nbmq9P*wu3xp-gJ29MNwG&x+#1HU%(j8tzmF>|gb$YwvmEyoy z=$#^r9?2O^w7yU(EK%s>KKMC7v(7=!!*l_;vg!S@mgch3#2mQ#- z^{RaOtAP8~(^@0Z(chq*FRDwV$fJ2ym(7x;D7osOGAhyh&|Bis&~``=kgj!m$Nd}J zBZS7)gy~teZoHl)p3`i3_uA3JN7Z?60@SOWQffW z%d-smx{aW5HC)^>!2 z!N$Je8K?Gwg~l?U!Q;EE@p1m4$!3o*-mHkq7Y-Xh?px~`g@m&YXm-Vi&-yZ?55l24 zvFi*3qJE(lLjV)6=XM_wifk(p>fiwDp($ALyG+X?ea@2{qFefvT$8v_4fn#IK7QzI zD~iJ_=?N_y@{5y2{F)8g74r#020|OAmflp%O4s(bQ4iN}e?6j!I3yrk;{%NTYut&_ zuZQ6GO;cKxRX;tpjOD(V{EKwHThGHKl9SunsEljlBx7DSXRRC(f2$swZ*BJQHQICs z&OeDoM3@<*UzBq=b2OPsk}9TsUM98f51qBf!-cOBu}q(bAS}1fXSt+UHY*fM(wX_Qw z9?$$gHJUHvmU0g#f4m9GaOy=0p_}VeUJHBs#Rrp?;yY8QDf9mWZRGFoM>sX!eqrJM zGHO#!HqW>S*>e#2q&&Qfxg9C!R|a|euKG! zH~Mal+wt}=DZN;^$yf`T3(uFJ2z3LN(&dtT6R_gl%*5(M_4S@2=J3q5gJ)jYa`2Hw z)%TuLCM&ng)cuTIW}EskczenvI4?QANE$=CCF(mm=%B*)EG-*co>TFg*%@S0Xu)Vn z$^T~2mh{Us!{Mc;{88z!{=%&cU?Q$Rkkq3;Z#MBd*?Lq zMTyW&^wAnE7S~_>u!!hS$#GP}=)3533Y%CF^R;JmH|OtPQ%m{}er=K;&y|3{!pSbL zqCuo{QXoa`YIYrXJ#gy=;H=v%1@)7EVdWLgU$NiDa@Hf>UJaK6M)j}FoC9NDjaFmb zt(2JcH}Qa`%J-*OC#&X(0J?-rg#3h48Eo$ip!-vV5227};4okmVLCv}GjkOE8c|rt zfLsIlnKx<%d{v+vfWEIjxeD8QEJkGWuw$W!zVbX6{d-UVIzF@=QVfh@*S6LDS2JG! zUSdinH&_4V>-4iUc16RH4&@REHn^?4E?5t0!t{^@>B=@2s2Ia6{=FXmhqqNtzel>b z(o8@f()&ewm6Gbl4a}bwhAuos1q#iVO?|!b9q7IhCqb$&dZo#0DdC(8cxcQr8nQX;gX2xpS)|-=iF$~ zIF5(cV~>q#`@b-uYZO~S68k~qlh^8N6Ph6+Fi;F zSt`gAIvz*Om4TmavI=vT=bKcK)jtz^c>*Q+Fv^0B{0or1c%|Q}hOoH(gJtHMa9ajM z)N@s!tOzC*K8TLL`SFd5(!*?%Mg{KSnYe3>p}Owt^6WIR%cck(aGRb7*yIA`)`$ z!pWe5Kq4mN@{Afw{71=%?~89^9u=TVgqtI{#gV|JJE|kj+eiU)nDAyf0C%;OJ-+S`hWv*Qb!wq8u2aKp?4HlurM+u;oA)|Ll3u`7N%+U17_b zHxG|Vz(x?ZPYLq1W4|M$4FlseCzMdAq1*Yz$d4F{6GPU)lnb*)$wHGryPDbeI}=>w zR|Ms=`Oz%&%~5$}tKM1XX=||_=f-2nR~BsA^T@5QT_aV+*j3$C1}X$z zlV^A+@|(;xH9NyRwn@0_d&TAOmgGJ47fSwcbT_wb;5Tw$2W6GXxntZX57(GS{hlC1 zX%dmK3C3Z0h=VvIVghV{gLFa#^QW?AO@5}|u?F(hp8KUj>f)HXIFSX0loPAZhw zKQ^2xDal4lhBHYc4h2P?YXS(Jt=%V!`!Z$c8P@$HV-=DB&Q5D`{)xzTTZXkIElJD# zJ@%#-iHW=9WKdHnFL#}Hq)NtxA#x)gt34?uHNRySbE+TkHOvq~W4!XMmo%cazvD(= z^~4s(Dx0TTDsCkbdPHYfXukn)9 z!mL4-u<^1AfY-+m;Su(xmbEiJI`c09Y&mn!5@#E1mnUXU6GVR4WR zFh$;S^f$T|Xd3XvS*yVfc?tH09fB9?NToBQFBcP@k~D|&jFdo5O!J{Wk-i$`D9q0Fdvdm&3KPA_AB5jaXTRG~He4Txx?7~* zNU)<3AST14!Ke-U@VPYHu%a?0nb`Kd5sJrQqsFy~h5OnTG3T_WwyUQ=^}x;e1d;k)03pUA^BNa>I;{HKzp% zpo`3i2jTWrJssV3BN0SnfOryeL6Wmw#CUSE?k`|*3)QxgS|FP5J@w9M6rHmeo$q~N z_Kpow#J(vD=**|{(@Q0v7D%-jLG$khqsJeG!6!+SE29`V4f+CJ9dWMxRVE9n2PVmK zS9P|uLpUB4B7#2#8p?9borQ;bz2g3yBAA*b*Gf-^Nov~t0T@7-H&H)c3l12}N3L_=Uq)tknG?pjmX$`+&v3Lb|Tg76b^B1qUxSLgSZvLxL z{72Zn45m>RkDaU}RSr;t;(?b~_VjbKTLk=*G4Z2)H$pS^*`l2_fU8aW=h&=!{9e3+ZiT4l&c|?Z!v}MblzHN3RPiuBNn86+s{#B()sfLIX*amK@ z!x_`j`)(RzDBYD5`a{^0KU6#3@;_ORZ2|h$W7D1bogQr-db6`7Wr(Pj4>!$UJe|j; zU(^2KRzKy=BZ)fD@1tx960`dg#KU*5ZhxcrXO-jHxv$a?)CCYLyG;kiBQy~#O?ds? zM5(!}2sKOhvjrH6))bkV$P>K~dix>H=A9?Wo7Fn;m3Z+fatRl?g0i^xEAa?0(Ys6U ze#c84q*XwFt*-Ftmh|rzg|e(VW~`n`kLkOPbLAh``siKv0)LR}aQ%n#X01 zcvNL=VEj$ZKAejOm4~SLpJv>r=We4;(jHH++H!nbeomw+sXo@I%A4_e+jZYp8#xjD z)-~1=c@fCtlFuK zGQN23zVh@H(hn{_h4)rp(cEDq21t>|&SiQsf@hc}RMrua6B|YkQFQNr{&hV3WmV`p zy9pKk)d!~0KwyMT)M{p}lgi_Z9YjSumVcgu9auoD1*1lfs_eNW5z|{0uGw|ISn$9oYJRaWuQoIm{Bn=$=9Rj?f%GZfS<;P*-j$!H z9uKl3MpF9=Pg{)esc9i}kN*lGJBn{O3{tus)Gr%lMlhg^geKOj#D~l}+@|Zx#r5tY zs&SuxS7|`gxSe`M5s3}Y?|vg+UZanUG1775Cv*o$US6W_EEC|SGA8(|Qr+ZV%NXXZ26T=k)>^Pf zF;!v%>c5~j$59xhFpTeU)I3#6?vjBZ@;%AQU7V};BQUZ8zu4*Jw_4v%qErRzO}Sr} zfr6@89nip2v+5tFn7gK}UPtqMq21fYhe5A@0L{bR^S($_I+SbS8ILez(<7R3)RkI@ zVUXL5gm+_U!}zi`+q7Z#tvr3siiiQfv@MkrudgV>^KMlkodEWZhHDc=27aC#(f7s` zJfQ~CW$o3x+fw{s?KZ%e$Cc^DZT+e6h4P(6Yzq5~`{-P9H@$x=Nl!-h@H4%wDO5}A z!`&3ck=-oxF|M6e%$=;A;K>QIZip3^u`9O+>DIG;sc&%)nU}Yo{l%d}$eW2bJ{mTY z6Km-uNWUg^UR(~!CB@vmZ@gDfg|PPz)DM%yPOhdGAJ-1Of zshSN~m)V?X>>H}@!MAriS!Uk0A zE1tB0%>P@xpm2l{lKv%bnd<6@){vV=4|3?TVj@o5Mp=E$O$CiSiGJ3}f&L1Ua>9?D zBP;I;$T*jw6OkP|W5vP$ow^jPy@RpQOb5ljZ`p2Rz-o#=rP{5=sv z!@+ovb$K0K46~P6p589oX>i0!xc zEE^n&e6mtd9=>2NT7(A2;70e6}R+YO|5{3l@WmtQ7r>^oYHSAhGTF#e=(n@ z4yT2>hu`=!fzAtY`>a!+6G;k^br=K@4R7DRHe-?UqJl(tca3c3k?l#G;5enF211TE zSrM`?D*;Z64X=3FAfxRyJzi=Lm`>MH%^y0?j97F9lqRn-%MDr#_r4h~E776qn zcprnGE&*|6f;bdUF%;}#mJt~;0<9Hx)Gj55+GoZ}r6unIN#v6ibrt{agY`Qz%Ia{C%AfhOj!f(Dm4rUoXuiWw5xFu0u|(b4 zv`{-<7gddJYa~orho9-2O(DBOxI{0vgvA|XvoevzPUQMO{v4dN0!51@w5D?&o)T#C zxjgpcT4NWUimA!fB~p|xg$`TL8%ds&pmys|tnYgqp`2wBXBD#;43b4F(JO+zC$wGY z0p6cfRzJmHhh-d4?ZpV2<+alyhQD=^cgoPIvM{2MlaOK(S3(#wfsB7>)6xX^dbeh2VpVz-_!B!Ww|cb}w`nXsy-r@x!;6KNJ4d{< zeG+`ugZbL?7$25Rx+V6&{>?@lWTyqj%GOEl6G09wS)Oo0ZG%Xbif2bZ)w4eaFnSX< zI-PA&abtm&%4M=;M?5$`du;pAx5lK-)l77ZA~`Z%7Jtbny%>EFC^`6RO|(}6n-I^0 zsaq+}Ej~8G-vP8{PP;c@4Z2}EYvMypISr%g6_oqkliFnMMP!H?4qD^)PuyA`67!W) zL(L?jV0z*I!aRBjMXdZeX@zE2{%1*;bLGhE<9*zp`voDG%P_jR@qgO!(!O(f-@6;C z9lC%xbmy8s5ZL$bxtbJ1I_z^zzM=NkhZq=0>9jHonF=L4k}v_Js zVuE=kZN;=PhwKEY#hnCR!TESC~pI`SsATI(vAFQ?7oZ>&0B7GLWj~0OZ zkm!k4thFr>O@GF*GYZwR3qwd)WlIol%drI0$5p^jPT2vb?AoN*B)a3X#Nv-Z=JV11 zaoD!;JK1}vuYm4cn2HQz2LULj7cI$wzhxu$H|t)$@nx=zOXFVt=%O|@DdzN3FfzFt zQV=(F8Fxyy0|7wTfRt)${PI4Tkh|mve|7@nf;`n+diVl(03$VD2G|AY;BZkY z^+;llVP7v3h!8b>SSq<3MOjF|9937c7^_qI>CN%V_-mdw>)xB+siQ?E6>n%B?oeXh zvyd@pen;EI0*sQer0{DoIa3juG0vsGmsI8360RcHwm};#G#Z*wiY=yzt+KK+{3}9#$)RaU;L0Ww*JEA0L(H{L3=IJ1oR@A zXi|DRPc$MNx%VRVG9~^Sey|D@3#iMyr$`lj!y>w?v2_TvX5QEn?oitya{#|36!F52 z3h<#_y2o+e@eA&}UMlkEA4~g`{MefF%5g`ciaPI#YK^hoA2pzafJu`+xm&<)RC-smZ_MXgvH7lZmc5!w&>SIbmI%6VbeDVNt1eQ< zv{8*v7z6@uSVaqN6CkuKMu;uet~4+vRf>X}3Rf3NAW!v88GGE*tK8Z|NWH%V_n*~O= z5L|uB9bQD(s&AcNP!uG7W#iOBp_{ko;|)fDKW!X)5d$&)nEzfxqi~l0$Ko{~ zwQ)e$Gm$|!>dvNE!7?0`C%g195ySHXjMpy@mQN-XND-8Lt&HcR~^1L!>?_0v@uRdq>SV@W#|Km6wZv8 zI=l;aHURWDwNI}mHX>@@&ZA12EWwY3w?<&YuxLb9vXF^gTSbS{{~P3gNuD$S9?g5@d^FdX}l6( zF9WgXel`&HM3^Y-PUqKGY~}6C@)lKkYI1+;3kzmaD`fu5PUC?e%Wqx5k5UNdQ1B_u z)~f%!_X5lx0S+M*3BgynS%z`x+cAo5*|UAZ#>0V5!)_#H+xCYtL&=dKnTb?o#=z`x zC1F-p90$lEIN@|o{f4WWP^wH$PUM2~rJe8o+1R-QWTUKbfoi?(^JYJ}P`9}S0l#cy zr^J}JjZ$>SGwO%02)8;+i-k)yA0NT0zjuB65To1Y_*ye#E23w34wUE>F#mk0dds67 zB~Bs|ahGJnn}Kxy%MmsibZmd7&%gCqMajyDWlF^ORm1LYIKvq)F=AG`N;S=kWkfi0 zZ$Dx|uLu}GRLeCV*~ETe2PNrR8X}K1HR2}gQZYm}Qniu_V1)>D5#cyOx<$gfMUe4; z73P!)R;ePbDHOg)=wD-;F>|Lurfbo?poFNJPfGSj*OHLB%A6Vck0=^S%Ud;tO@Pse#cQ~&(-ww zF3_JVQy!Yu8J_kh_9Cht!;3%Tcfl8qq0>`Oor@@P-}sYr;q5Cn@yZhx&><)ZX9EWq zSf~+NmV8VuEf)E{4aVqVa9;?>S<8qgAcgG~ZobJkXf*3VG3&7sRlFd5?;?I62H3F% z2pFal26n2su_JAMD(ZVC6O06WKw|Bt1D5mIt7qJgQyH`G%%(7N2}F)1pnH~^B{~uP#eR1Den!Y z&QshcqvyW7FAO^L{{0`-fbSuaIZB*S`yse5WVaxLCgoi z?P~Ptd@1&qN()m{OLn+ob@6eso}JqJZVv&L)9eLh@%Swqcx+j9*d3@fGyFRmNJh$| zUs=wESziw=^V3VKUe*En#<(0ehTvJ|+#kG1Ou+%wsiYuST1ti1WRH72siQgX%Aj3y z>;i1&I4T6=>`yEz-mL_35N-&i2hw&oE(eh2V)3qe{Jsv3gS|Yb-W$qv+Z7; zMrkYjwaRxuCq=x7535hRwYt7pS2t1*2)&$3(T&heNGN}(FOu_t zcYF?Oz!4J0W*aOB6xj8S*#9`UtJh;hF7dp;)8+2*HlRUF0>J=BSxbjZrGBfRXxmiP z`{tLzo!RxBL?XYlKa|y2ps5I^t4#Ignwx=F2x#s^8WqGC6J4Umwx+^D*d`qP>8NT|$TOc(KqOhRV z`9^{D^KB!(i4J6p{Zk|38oHJabAX6ypmAjo?qf zg?y0~0HRGM(TQy0Axt=@$=O|9Y_BM2T*h`1fr!cMF7ZJlQ1>h8ao`t3Dm5aqP-EPj z(~KevZ|Np62if9Tw_*LZQ#R;6;a^Bgd3E}E5lfWjEQBl-Jk+Us2E|sw>~a5Oy=Y8s zL*eZ-A$Dy2X}Lxpshm(+h{tpoS5VgQDT?YW>Y^daPE_skkU(f&Yzyfz{Nk}$e7%UP zuvs0IH9<}*Q>0OxA~5>-v{v+zfJIFQt@;&$AoM9Di6Nh zlDVK|_0LEL`v(F+KT!_II#W77w;sDoGLICqs6)>vHdai{(F!t=`Zd|)8LVyW|4HJ?CM>E!?nKr zc%Y&~j0`$A{h`05_4^+j?aU^dOQzf3fq0vJfd9jONh|(xIufo zK7Os+IamY^>!Yd>QVYQzEgpL)N@x2dL)ovak*jl}@)3_k@5m#$gjL$%Q@qqw+N4$5 z@>4mr)%XG^g?jE1-aXjs<%6-1AbHta&kRkvUeP z_hXGkxzBgX20OF#mfm{YG5v5DGSM?G28KOFWKh6vd`2A{FTb=s9^$T&E<_-mD>`d# z?YaLZ1z-)S2&ON=s}B@^N6+n2n3GDk*OUa(U6e4f(p;8Y8SC7;=lC!@KpnFS4_I)e zz_hljVD^)vVJfMDho`fpDZZ-gc~^4fNN1vlra8(WGr}EyA0u;CEi%O}`)h(@+k+>a znpBFL&VWG^k>K+30vPd*jSnQ(iS|^5YR37N%i0j(?rvQ)+n!L>Sy(}(<@x=cfUqi9 zia*!T^^2V7AcuvceY9tFe}4gWf!{QfnlRdF&aL_u;_23oqa755p^B{h+z6>tWxz#F zemsoKtQYuxe2{kFWulcmFQ4G1gj;Wu8bk4)W!62ER?fbz1XVkk1z5htNNnNNuHsINP86NvO7b|k%{hl42J8x14sk}i?La_mx z$h6&Ih>jwTMg3XdCe3)yjNJlRO{Ck0*wQ{yEPvjYel17F(Wypohkm`r2d=B&^0`ie z(_I&y947xs+s%A7t$Wm+I@)j8jFgZFr3VspE|7m+_)v(zkj(ggd-P`@t94bSwdiv0 z;->#|1S~H=lE!AF#1SJe4mF-}bU+8LG|_$&+R>)EP53=Dm2*!OO}_g)`lp&H!diy; z9jijfwCFJx6|g(K@b0rsGKWHTfcnbLXAD=$R77)})zEYFpns&XeAKZhjSZR7oKRP! z4{PMJ$N1@-o!@B5)k-}!jT1&$aqA1`P={5d?F3hDsX)XwUwg*?VVY=LF0du_YX zf!D%)Y;v#5HyNuo`+n)pa%x&`;*`y=s{{)>;8oE{af_4S@*DiSI)C0kDK);26dlDv zQG4qKrUftp_?hzxwgsiY#XeszJ|-9*MNqBn?w}`pM;k#K~j%(8j1+Da6sMK7E=q^D^p*8ytFnV zS7#Xlg3j>#j6;%zk)z>X$NcONiG1o7ip00i#vf$`CXMlSduDYeTCOtY%7&d1ROV~m zrxf~4qv7J{q3xryKR3&e9RE&emd8Uz@xl(3_p>U+Dn5>GKt~pz*2@lQ`$blv)`L~G zOGle$j!xugHJn1b2~uh9Oi^nzXI7Y=A$y;ELgjB`ep-hPh17>hht*Van;k|bbW!g( z1vL2M$!^Zq&{u+`6I4BjDoethPbVrW{91MxXBRwfDH zU4`Po6yQ{hGCBDFhp)E|i>hnihE=4yyF_Xz5fBMMx|A5Yl`iRK0HqnayQRBBLh0^K z85$&q&Tr#=KfmXDk2j9v8rH0}=a~6}z1OdBMf#l(?^8_G znPo+%{V<8DdWmMeV}`EV-Oaf-$dpYSUf9=X@5ajgJP>~eDB==kDa#WkW7G`J z-=WP}ko@)uP+Z7kCSWIv!ya?ks6&j^$igj4MD@0P{+ zK1Q8GRVOl|9vE{M@iWw`m=5 z$?Gf+$n_QpeHpGBRZz0=g1W<%3)zHqL#sRQvitK{0Zx{16UjhaRDOE@J?G>-dR&Bf zBuhM6^&)2Ue#qyHzY%-qV@L;~z# zmF$KFy4~GP++9t-**VtdG?_Hv5p@(^)rlU}t?N0FYhld-FB2#WKm20)_5nJC*B=nG zV_E90o!sV2bV;cNKO`z%Yw(9y@{t>r%<)n^P-wEQQNscW9;7)Vyo20s#Rh>X4|IlQ z`THg9W5#U)kZRl)Lrv2yC`GGo#v1Q8qLgz9lp;3#AOVOP+0n4l;J`0~A5Sa=T+f5% z#3R1sfi0Y)t#Ml+VxF7Eg1HfiA+J`AVbZhwUi?x$p^gAtzCVR>IPtcOIH2T2^*6zD zy_LgVy|avRXtu|zMoh3%V-wAOp;Ul zEy1zhSZjZT*Zic~FJC?2h-eVct;#sqy~-Fhr2!=cTVer>Sw%XlwP(M$eRXOuUH;ZL zUM}Ic#VX#x6U>i@B9vq%h|?>QOxLz3WEMpl4qsi@@i2lCKD}@D+l!|y(|!!AP!67F zdxff;8Ls1LUNQXV^z;Am-eEna9PNN`k=Ph+)h~?2cSI@L3v^s*7PRUXm!J}0B!6j3 zp42-v|HmC=-5oawa63O|7SiZw?~r%xs9Ti%)ah)SaI#f?U25b!&HSLPcwhgU{Lu;Ucy4NT!GgsN;_0e7+5htb>%5Sv3K~%wRGSUf2eP3J=-g654@JNA zekr{4(U-;I?0dPKjn^A9_)5tXy&9DehOIiw49ejsbk$QDT+ryOCaf=Xt%8Qs)o>it zswhukx$NvC%NYTGB8RZ!3)~Q-*3>W;Y`3ykhb21FLfrY)cXxEm8ys?1hvNbS)Oi*g zi&lqKFAznD1NLNp^oU6@$L#tI$6CH`YD=9d`E<^B1y$TMa7X+;W{QT>{St?7 zszkWKoqOMa4P76CQ}!OTeCQ?GeSHEESHiR3+Mr1s@An!2_gLUzGdH1XlnU)uJ^zHi zsnS%2M3=i7=&~AIoDrvWS5h=JQuKG|1R6SV#WiRi18OmVROBT;pbi4bfoT)06kQ$? zz)}1YrI%k=un+vE_`&hJ#+VO(OQrU3vBDuS>sWY#Y`OVqKp-T2O;Cb(9hSh#Hu1fg8LDiw4j(#eNY*Jo;F(!7aCpc5=KnHC^)zt< zU*7)-Qi9Rl^S=!?uTfSUZAg|!N2&=7?AfSQ)qyN=*NY2U;!OicvYg@ z%uNQ%9mC-W3%F$E?KEwq6&k=i*0c^9u@{5Hlf$Z0Lr3gi3k?8Go+AJAj+JrkKg(gj zM}cKS;G=6S?+t-3Tgx3I;RplTSab7_C+b|l?aPPLmvb40o;x!Z<^(NYAL21~%)B_9#xloZPNE1##nYE; z!7?mSh9G%R_G;u`Vx05GR>~jqm(F|(c7iHE$`NpY-?-EZq?u+GIzIM|G`gjENh*vY z(~T_}eM}c-bSq6qDm*UT9l`z2)b_<3PR8Zss`zWKw^5d1hoFgg#m_1@eWH^uGoJwYbN9VaS+rc-`wG+p;J^k}(qv3B4hsXlNq zl*2K2$h_RJwU_=)eoOe}i-g(KH{F{xGh_Pe<9j8%j=^!i5;aIe|JR|A6x&LvILb;{ zh=Q@;+)0|#2IA+Wedh%R`qiTE)xqx6QEeWYjMMf1~=~q9!`r7?2b$ujiedKU8$8mM0qXiq)us#*t?P49W1je#vLI7`ahkUs$ zNM8~V{KD+)jv|bZoxr%9dnwUH4Kk4%QhCqdTl(vd4((W6j+|lc&jF~2`m(5y=VVg&)W|}gy?1sGqkR6| zCI{QbgnPiBsKZyJ8$KwY>kqUN`JCEm@FuYYd!AP>8H2-CbVjv`=8~zgMgo8u!FzyX zy!BM-o9)ZAOQo&|783;X&V=~^B45X7@YT6AQbK>r5Bn@wV_q(DfXI<^W0~2ITwD@y z4(g8(MEpv4z^-3z17VOB-_u(Ac5scDudj&M`?E}?OK|SzKbPr@=dA%8o?i-^SapuU zY$Ab&sVO{cnbGXehml}Oo4gl(yS%uoya}K+#%}fgfpsghl-!i~_JD=2qahin`cjUA zNsCnkTdzJu-L7@D53oxjCj( z_SjUz5au90e=?8s=L3W%rT%E2mDBY2-HOhMg+67V+3OW+vzcUTrIKIgtRV*{`Liw* zL7cNqD;^w_-;Lx&KLnUn2H6DQbgs_HL_a>ykktgS7i=QlJtS*>)*Qc}8edv#)* zTSwnUn3F6ep8SC3t*TY)^-b|?RR+pNmL)=!Z3l@`<;wa37-p0Xl2q+B#sAQ%Pn_qG zQ>R^0%h@^l9KEWt1m{%Wpcl;QXY$;&*X=~wT5k|5Hn+X6KSkdO!Fc17O#e2+l<}|k zrNHc^cC2{CJzR}H!$OsnI8u$@mI+&h|LGhcTq$=g1tb`30D2nC8{E8$+%Bx#_TbV5 zXn$pVO0N&4;_FUYnrSG&pFwDUQDc+vVu(XXs)29%%#oDZ>S=~dLESoQoZ2lho> z3c2V;DmA%UsO}g!VjNxx8D&j9oKh&sN>9r`9iF1Dch81X^Tyq#>oMd}pQYZM3vQ!}fYJ%(!4w*$CzvX}I1!{`~p8G%x82e)=7y1;0 zq3T_4)B>0LB$K^fU_v=xBR?f|T6lzfk5oP#d?M;;<^vQj5W+Ea^q#bq;<<9E9EqSB)Q! zF}jkJE$E}Zs|S<2$0%(_hdP-%=Fa4`Myu+m=qN4b0>X(Q!-VO@UO<^|=MX^Mpl~SO zCor`t9D};F2}aWLU`n@6sun9s0DAISoQeM3a9u?Z!r6_=nTHIJ3LHtxTFCeTm@t_d#ygc~QGyB>px&x&z&ENP~ zto!XEAR1uOvoZt<$juihfqYbC$EQdrws`PqE7nzOoo$FT-mou4b120(@!Z!xnt|jw zukMqo!Gv# zRJkXsZDZdkM)zupjZhX+*4xJ3_qle{$vN@X$=~_O%;Qb_QCr?gBlp&j{w#vB5bjmB zF-lK%l00oPRB9g~?3r|W*}1r;px-^0$Ef&oKIs zg1=h%gl1SjdkkY@sK?Yu0z%K5PoGK4O#-P*kb~{(OxRer2tkOH=EkHZI7oZl%glqs z?m-Hq-BxfrXGbBeJ;Rfp1ka#AbZn%#!bwsF`r+af({XHhXJXbh+_o$XvsY#)K;8$< z$OU%vW@#H>X;bVEM(oGvqOBt6ZaYM;H7G?34#kHNH`F? z{g^b1DHJd4YOTD52(y2pTb1n-YO&I8=ZHVXI}J}D)*BLPwDom zI*B!s9Efx@KuS4D(^rHVG2jb~xum!U&#{oEd?mllivW-Bs5nj?JJLADfHfO`-4}+L zmapdqW=Kp3Frzk_J};5zJD-;~h*OurS8o6y^|!W6vbV<@`LY6aTrMfAyzzZ>{Oi-A zCNfK57T0{Lb?9|b3N>6=d=kUD&5m3`kjydsE!fuUP@@Y8*r3?;|F0+J%rtgh| z>~FPGwj_n=o2}${5{@iFImEDUk)bETim?F|GanuaGlbq7A;bA#y+$2rLyFe9A+gHr_-ekz&$B`@16-b60Rk8w&*1zqsgm8W#zqtIlu{e#1gI1kMaW?|5iY31_&U%1t{F_uJ`V1tBu?=jn?rAyOvIjddiXDF zs9TeCMzCzoYzJZMKCynz6LO(^NBv3qx((aTNfG>Mi%BRaSq$iz*kte93<*wQ^@w_4c^cR2VFi9 zhkWA0R>P*T49M=o9cP_-5L>WCnpYu~6G?V4`vP9}sacNx+^_xmgPU9cGZJU6E4u0` z+jn^BhF}vnw`%**c69dqql560Ud?J67j8lc=$1EYNgZ1fjp8YuVc0h0F@cz%aD6^py0VL=QasjWkLAO=NpB8G}X^8B) z{pqrNy*4KHh4|s8=b|U659u`1{WjC9n?+md@(P{j7b=k>qcoK&+u(>S*$d6#*-Cos zhWcejWeEc>6Q8&4@5Np#owtDJIhpTrZW@ZYClO&!`Bxt+WexqZgX)^WS0ENnePjAE z9nj#6dhk}k%ELMTs(#U>3$svWV!ct28$QEn&baM*2^nhOo={;8X=H>7@y<`Yu4rjDi4y<^U3bMA+{V zpQ$J1?@9@FrBv-0rBEE|W&g!FH}Cyhh^m2ZG>1}tit9!1-0%bJWCL60yvG( zcd*hb4SO|KnAg3ygc*Ez8@FfX88#dPzVC&`LE|hQ6if6lVM-3{AG-4y2362A|<7n*WV)fswupQnYp1==6k6Bn6P|3-F zqN>xkSCj%Q(B8)DnVI`ds^6^;MD+%*>32%DhZ!$_=d_(gwQH+E#-}0f;?%3PIZ0E} z*-D4cBJ^n0#s8T8821m2IX>>abTwL3q%#AmqtfY)dbBLXoxB6n%INxMtAwMLYC&NR zux&lVP6&mstIzcvsA6c1G-oR6t#>`WZ$}ao~XRGvSf52IcT)h1M43{ekoUlxW z-=fvhwTTY4;76#Wsw}?jK?CnZXP|-#=WiVHYWcPva`?5_FCgW87&ouoV;yn69Mcf2 zisYhTSG~X>S7TuEr&P=(AV>>gVbIElyOM`3MW(u(Xb+lor0i2zyJPdOVXS@2Xseh= z7gn6f{HIi;-1Sg$xdp8U+Tpq~Y7DDKIJ5qUQS9dZ}^=%9jm z+fRU`#`giPW&pFo`JvXy%e+a+YOwt4g>~%>E3v;mN`$@}TV4}5P}5ejF`+jQ!ysPd zZ>^jfwE0{o8}I#XG(aMT6Oq}aKp8z`Bc2oAf%%x!U*XiEwu<6G{AG^_L7&x`m~r83 zXfPH+1*Jh?o&FN-w^oJEs8?aV=6SG@ggW z3G%)&+Cnm^5mS>*#rNSYi>()=n}L8j@_nremztw3&xgQXei<^2a=iraCX~4Hnw)a^ z#l*cn_N)iaz?WR)S|e1vz3I_A0C-W4>SL$#CotO7Z>xbPUfH<@d5XhK?3h_(WO>bj z0kmM({;qR$lVMnbGTV}oM8^(|Pn-b>jj4&t(zIefftz7lP~lcm8c8dgFYUh3u+}}_E+Kb9Kr%oSby4C%cn8;wf&+&fk*+41OrMb z@i`)FQga;oeK|;C$|58@tbyVQbom2O6C0rX0af_~F<-yh7gL+2)&9x9Y*jjjkl-9wfPUufSJ;Rmg61fa0)O-boE2nFn#GLPlsl>tWI9*%uvY z?_K~Mo+upR%OX`@sES?`>o=d;Z7hWTdL?P>4- zydXb#HiTPVwM$wvN|u^2W_Cm z?sWj&CbHG`8fm`&z7*btn9hy*$^0(jdfO-dyd;t7{0mLr8V9L4roo>h0mvOK*|qlm z`8HVP>od6>PVy(Sn{f-^DZ!=AGg1h`KLcIy zuX|?=&zAy2j#0Ye*CL>KSZ7 z`)#i6_)9Bg*+d0a9BP$8Mxvmr&S!Rx2DIZcS2SBH*%Jrq#q=V}W9p{-*8a))(Zj9! zvKit^uRPB_ly{W##Ndq z6(*kW*!bjQ>H*E>1m&Z1w@o0Wk}pST;;4TxoR5Eg^?4fk?85M4;?Y|iZR^hF4ar-% zvm5p{e@{n-q zpY%3GJd(ZqapH9_0l<#QM20ehX%<~+H^=xn%Qx^=O1%CXqRjkL8Hd=0yJo|-qjgoz zV-Ll-iyhQX1|8`OzBkLa>GWO|stK!e75zDKq_*F?YX)=!=R^WfYF#GYIr&*qmJOkE zq4n+ZOfDR5wf-E%0G?Z2#=nejfp6RVnAk{|pT|EgXeu;QmR>m5=s^z-(B08@t&k@9 zdHB)jw&uRYvSl9JG}7^QrlG7piqaz^V&~NNCuzzK^^2Zug4xOV4hE1V zjBLFpN*rG^iQX%s(}W>Lc0a4Zcr2n!e|XHm;2?MzP#xjJzh)%5d=FN@KZr&V{)Yo$ zI92nch?zoqy~x=yz2D8Pd@8O7Y2CBq&O$dmT!H@#5>mG1uhJCj;5_?*llYb>-)0_3 z#-@X}PNa2#X5~xo`kTJ>H@Qmn%we*(Sq4-QxZb+QF1wMQvg)8U;%fhc*x8tktp?{TFZvxCsZ-<7l}2^Jt_lqt>Rc^U^Kk_jr5e(t%XU_(y`tAgM#Z^>r#df z2};{I0!l3q3bPJbFJY;NBm?Hd)p>@Z5fA8!SpQ0#jYgpDI%YCJ|%rmq39ccU@>a@ zME~tqtV2O4Z!Zwx7hlzn$5$h)vdoTe5v&~u<&(sTUFJ;KFN;jMZF!{|Dh{Vzp9u-J zV3Rg`w>5oLDcI}^h&j8)ZT9jj0{Gxv5#K>xFIA7}3Zc{@z0@MlsYMJuUy|+7jcHIX zVbhJ=<*4MEB-6H~As>-u;9m@oQX2@Zi9xnm&FxXB*lr~5o|2g@f%qJq*>Bim?e%g^ zfVS#tl@ypuNXe^6m?vCQ`x?b^!#ea(pG$_W)Nn5KK2g5odV<6Hp&7@iF_WS%Y6xn_ zRUNbWlFG43sQUeyT}$y%-eV(qw`EXMQ)e{_;&OwL zfPZo<00xbw0Kq^{03fM<=oBQQi(eRG5Xsf*s6aSkNkbT8_Y@^&bfHtPY~tl6oJ2I} zQn)0=@qF?(QeI{Yd9zvV?AqeB& zc22{c?}kB6`dQK}1`;zrcPCXB85JaGKi2vacvi8Q6*iK;#vHOEv*7V;E{%5B44A-O zb0qjd%Q;*t8|onPH9+#~zj>r!ynq@tW-+beSlUw6{zxLSUPtc89kbyH^GI=ORsGtamgB2?z1ax6PFRtreiX*&U$$9@k1$*!a zdN_=`eDETyGbyxxnSEhVOQu@`4fM>jWRbK)fz(8t5~THl5-hEEmwo5$MnKbE7bURt zK^zx-KY{P(MtnBT?iJwq5m|F#7WLK8X&Ul^ZKn`K$CQ)W;@e4*t;pAVRICVl~M~Pgr zHEc24Vy>B8_G(KqN@2CEpp@R~FQN~j3`Rjc+v}F`L}MfBpRXkv)Q|9gjXaM);GDW_ z9RDP&PWESObnNp~QwJ5{i3!BP7X{Jl z_;;Q4%$pN;H>x>{VthwR6YZt$&4t?fwK%~>C zwWP!&WRl#d_c>lbEoGMw_gaKLo6^nIoUCA)V&*UM;HzgzH%@GKE1{iBfU!>PZBCI4oMyd68*bS?EOnMk zd^3J)zb_Kj=F1@~>{diD?o4Dp;eKN=_Oo*aWWpv3$+^BG`tNOGG9)vY40q;^T~G?P zPGE4ju}~5Q`mR>@)0#|)4qEuSRzmU)Qg$yqrVcgFJd}FB?sn`M6Q-)i#Hg*c1mu?5#uV*3Sp(&hE8GkY>+PEVuE7Dc{ z26uB_wpCa4WWOjHKcar%dA`EcG@Au+LP=?8IiF`bQwnxne9hC#qYxvUcg1SwALaDI z2-3t3`VXqvQoJSRZuczoFt!!+OxiRCZshfg}?6n7;hz`y z^`~k-B)0yj@dy5epu_LTxZ=wsS;*@654DF_s1Wi=@;~q?ft-`PXm-=~^Gp(Nt(Ven zu}Y6!%)VvOn7SYtJN3j2{uE$gvdPkipx?oE(mi>fXkF{(=B}vz|A$~Vh+MOz9d~PP za^%JMmt0XHrY)m;X}ULXk8eY&^W%3UUmgsnq97&FmzA=x9#AlK@k_7&PRiqHT}j#i z*dp8uk@HX;XNKiKK-$x?<_KlOwDj6D_I4RD83ERGQ5hPG0zicc1X(ZZek1#M#~#YR zl}J=r@+xs>HxOd@u!!dI%8g^qBbdf8!1SBP*pbnEMFxu z0ZJC%=>PQvor-(Vz4xj89@LI`30EFFs2wu5K9&bHyCk{@yL6#jOzFk0zl1C520cpY zFXBQU>Lj}dqAas>Cv{PaD4VeNN38j_`g*0kqkJ9gj5F^zRoRV9uZF`nlDhkNl%N0ONmOYtbe{YPg`0JTU#iuZeVaoToh}A9N zS`EX(x}fI-QD0$X%Od+?t7xSMh2^_seDu-~3t`*pTYeQDYJ7|-f=PNhk-hA{C;C~k5breea865 z(_O$$w2M(*b(f`tfX5VJS;WIb3ay(h*ItSro*CIIR|Fl|3Y@Ih zDwrWcai7QXU;lkO+(ir?V>2p!B`^9p)vx_6s=pnWpj$?XgpqbM=7nPW+WX$~@6r1* z^b0XX=NT$R5sw-ZfZ!e^9U7>Oe*E<8MgY2^ewzho?l$J8sj!8)Mj9OIe7649sjuc$ zR>5nG6!d#&P+vhfuw)~f+b^422b=6^l~}0U%Qsa}jiSv#jGx7|8m}O1%PQTx0mU{X zo4cYwF8>IM`B;{Rt9Dxbgt`uU{suT4!Po2}KQe8F?0-{5_*Tjl7NYX>SFosSr3V`{ zD$l@BEsvW|v;@nWiAGq;rGvO8YqAzDDwM!MF#Lbh%cmG$`95D zQL7KKxIFIdaRLUdB;td_z6>QBoVi&hcGN|%e_$n=^qkU03u`hv=8*^7(k^7*1wM-N z|6`a2sYsmiV!25HvRs(iDS3X}A5nuZ=O_GZ-j+(9rF3e`=?dzY>$7wa!d4r|IYcb1 zf;Xa;1glb{oZ;Z4lU@xf(t#YWbtU1GBCqwR8pB*7RngaYYqZj@J;;H~nL3vW}&b8?}~Gp9!HtJlcD6Lrlm2T2Uu&NcR#enG0O& zj)Jc1ur>5@t@gF%-J1p33Tt68XRm-iw^nTBUE?2Kt*kzGC3s3D@l`77L5lt%LiV0I zuI{#=WH_l?QoY=2u#CBYet~#SZ$7B5KTOry_wb#Nd{;IXnl%qG9hNR&Fr~A`GJzV$!A?M?8 zhxBjh*`Rg%!)+Bzo$ye#S;3W{KzETk>H`2Q>PjPiXSSNpl3Aa;*cD=E=4~=L4wi{M z>}6OK8<<{0CD?qlno@krO3yeNfoWs+6?#>3IH+*+ggk5&Y_-lWaWRiRO!aYvNwLp` z$mo9eX&K_*(?Ag&!-0)vF+i50dp9*x;N~eeWBa2AJ(e2erlIhdrwDn}YW{d^LqM$v z#K#9ugBp=(fJCWwAI+v=H3FYY;kjs}OP;E}*VlyPVM7H}yfRCZNepS~$eSYyO&;n+ zr89Wzjn#qeCHMZDrOo7bw|mG9)+CR}nt-nXS-HwD!%Nevb5{PunQCkGA#1ddMemJe zDe&u-(`}RArB-W$t@PHO8UwGnDO7LjKahE>qTMuZexEeI<`1G_seWX9GE==W*uQZ= zaUy22?35}^9vB^Eo=>KoBzd`awF~dQG{i29NRhI|F2Z+W_FBWhul#D23|evJR!zp1 z+K?y@i2QzRJe}_J+*Yb@R>rH(erX*?5l4l-#n%DqYP zH0W{`E|~?dz3RZ{HPbnN7eBG$UTtY`VY5{=2D8rx$RNL zuoiYp>?a4v^Q4zvvUkA=6!vqxGH7q#o!xx-(3^#eLwWyrVKteZreQXy+&T2*CeTkJY0hHtM|0TcE!OLawujDb7|E3E3Nateh_iR@UB6rrnWJ zaK6=^B=>q$`>1JFenzYmYnr8$eJ>DOHk;KnMJa155W75^<=24V6XGaMo8VN2t0UgF z6qRV~{)R)2VJVV3T1!`Zb@|jT>+$SA&mRVZV-$@J;agsGJDvdmI4Dq~p%AP(Tik%jQi5b2+EKWNSE$>QNj*=s2 zh54tQNxXOegm$XmK{D|R=DQj0EpXO&JT!XKcy^dWjY%l4tTs(^xFWhxvQ}AbZ<6GYTXOO@jf_ZkE?$z%SdUT9 zp4@@co=*OE=VYA=n+udfrCVWS@fCiBjk+aY5gd=5K-QOm2XQpqm|u2nU+l-pe$(GQ zHPQTmO{_=cMmaxWnU!oUN7yGR{%c5l+!N&SlYfSp^bq)+@8Yvub0+Jb2(-E}5-D%K zJ8rv%%J)||l_`T?+<_ycO-+0q1K+JXj~34MD@XD=@fFE1SE-mwl{x87r}juIQ{?P_ z{w3$`cVNYZV86UrzUS>tkoP&wa#TF`L}x+XeIND9R8g=~LmIOlMdL6QgzFUK@*K5F zESA}EzQ1iey>b`d-9fTSy-Ycuyq8n;{G{+4B%E;Mkc%=$6hS$4R^67Qwvvr)>iLCo z+6tvUM9XvqwaPe+0~v9PVt%D;jkENxHi_Zgf|Ca7i$z*M?IVt+13=s^#^yI?R|Q!I z816M7Z~}@1D9I@8r+$g`w!v3LG{q7~ZByq{~ZC9frR>`R*i$!0ZVtgv{Nyib%^_V^uY)p3`(Dcjl zVN)4$En-!;+m-!cMY;T8<7=8f-du6fBsYw(V3}q5_&e5%-F`k^e)aOT!X=Bofn6sO z2wCTB(0@6*2vBThq3pySvCc79CNkZ4G`^K|zOI_vz&+PyQvm2VfE?g<^_77=ch1X$ zkKEDy^gAN6faU4So_g#b;`I#u2WmTXW+?wnN&(=eQvyzX0x$8M5~=CFO8iF{jHa%0 zfK1ke|5bl;5Sx55NgMzje{Y4JXW z*}ruQGF--7SK_*F%D9(ZRM$M!d6r$qUgd}=*DLku^>HN8$}NvL=MSFp9I9LJSn;-? zDo;p;gE=yY%5+#4o$LtWCB2p;TTQwZ*<42Ho|yML6Fj`6C)_txn@*-Jwj^g-vUk~f zn|vIrtj9+fZ_poF-oU$hwmCA>$BAbklr08HF=(ZhS zr)Bcd^r2jYcoGU|s+sxTY7~6(=k*U&OVhFpRxVQEG-k#8sj!f3gG!s0)TNg~wbWY1 zB>i(ryKU*J-~K*#0)qb`CYI1`dOE_gpnu7R(p@rLAEAufuEUDQOjLz$3maC<+y7y| zp#p_~r)`(FZcJv|BB(7qyWU3NdbLeYa{*bTRLt`750EPS;F8YT;vOzCt3Bgz=-foi z76UKZ1+Z7c8%)YLrRf<{-;{Bj(6Z%4CYf=aWX02>!SXVOvW4BTqMyGjk}wlUqG|mi z@UoN}A`-KHr@)IuqAo1A=1_0=rs9{XA*MqkOy`n+``gp21+yf0@lQJuwnmR|g_j`~zD zU7pb&7XI8@)%H<-`7ck5=vI6; z(*{!=oT%u7q_`b7ox92^AzB{>0N~ zSm~tHFnH4;3(@f3ka7;rP=$QBdT0YQ(7f~jVwi!Kh6@|_oR(QtZFb)@lz~p?IR&Cc zf;6>~sGACKC}SiSgpAA)dXdG!%~gi;mH0B^`>$$%ce%Zf?@rw-=_V3{RFX9(X7zs7 z>uGQhpAJDB7{YdRL-Jzw?!UYXys1C4*lOb0Yo%*IRvMG~2*+MrlkqqnYY86_Z3MGT zeb_lKj2dh`vq$%D0GPW5m2a$JCDT^kb@5HgMypzk+aG(c9xV!(0?tr0 zlmh;;ERN`gPq_Y3Rb*L((C^YtRhHpfqZxA?@+|S%jLNB^Vi7D(Yc4w4s+?3I*dP)> zn%vN4(2Ql2Y;E{&3*;uV9eItp^c$h+4{VXhE@04T4-j%)V5Kq2R;c8H3-?v!MK99) z4g{E+4!>`=#$?~fL;sx!wO?dorxbp&B zgJ3z=%UkK#x~rV|J`7f^dVAq1a=9tzci5tGX=9C-UeYlCqWREz)%O!$Mij+d=J2=4 z27px@y4SVwr&r>zcFK>8dMlcOau1JO`!(s_ILY2?hG}{=G#M$hDyJ6}oM}WeCEt@~FTxOWCeRY?pm__qioSm~V92}9 zDJ^*3yF>+_(=`0KICc;f?i}G*WAnM*V;xJNFN0v%gw(2o zGx)(bscg*;pjAqJVj-!k)vRZn!s|{VAMfP9bA^YKRD4_T%X(xS{~0Z2qTucq!n zIP~A;+mayvL_x0Kit^XYd_$jM!h8K6la^5-t3dAM*gfI5;4dJGUa^0*h?q>Lr%!nM zLG%uc7a%Efn+;on3abc8w4zYT49=vAJLLA8+iVU#Td>?Rmz+RKGQoj!`vL+Xf@w6? zYHbRFIeBvZ*UN(?`a66DEf&5Q7Qt?ca)0>?jZk8pKSfp-a*iZ9&h^%((md8p&c1ux zt;G4&bol{eEsi~_LJ13$a7vXyEqep8F_Y^b)axp6lKhNg>*3N%a zi}95~EPcWk=%I5KmXU{7Ri~P#{Uz{{lYMfX{BFIf{>tvoJV)nZ=7h-rCRbt91B~zX zG3eFL>Er9O6t~2(j1a)GCqi5A}k^lRyx<- zNsY3ApBo-pMH<6g-c&qAF2Ku&-8Z zt~wkQc2#v4H$Loh_5YFe7C>#SQP=Qo3luHx?(SNOySr=A;_h19U5mTBJ8cMF9753) zcM0zN;okR~?|bK;S(C#dVJ118JbOQDt-ZJEerYjX+#8BA;^lr3r3HUx@HyCrTPpfa z!i0N22`zJS_S@mp;63~-Sdw}6R}elM@cNB1f}86@>N{t||8cd4?s5r0yScqNv3{Ll zKue%xD0bMPLj^*qce5LSewgWZT!a2t`Nf%z0F3^cJI()*i8$c5IB*O2Y-lb!UIomH zNl>X;aW)+aq;&%F--j_P6D$=~OV2D6?;onVU90^ILg$UX{^&oI7{xp;>JnzAu*HO! zpi;vVGfMmrnLqiqH)1Hv!&UCQrOQsUTJmA}B*QLFrFu5>=8C-@eF4}KuK!^{%BW82 zLmgZb5vG6TQeGj^Y<5N-Bf(;khjC1m*~q#JSvpZdVY9srTd!)uj%jYzW^R^kF3qB# zpkn5uk15Yj$=`4tk;6vJ0!Gfg7Xy~UQPNk?$vaC{>h)MRPWYHx978CS)o?)9Z9ihf zAe6^L8}`Q-hcN0uLAWUFiri?M(Qv|@#ltwjTJ%{@W0}Y7$BICg1Qw$_N(dUEF zN7xA}Pf!1B;A#lm=Io|xSLuz-+D=&Xr&iIkmLh+F~LvYfNd-kErU{xg~SBv^cjtWBE=Ne)A3Jz!Zu|T1hnJF}y8V?jf?>C47j=;J`IZMb3Fu8c)-9c6u$J z&_obS?{}Eq26RvV2k8y@fVy3#eFt-EUeiBucpmcU{}m zEBGfha&)W}L~r3V2*c#UG*ma>oARlFp%&IWHK+VX3obAm`2`vON!R@RTcyyRi-43x z8+Mfiw-#!)@$|}vGOUW?fr{Zzb3DyGa>Y{iq8}%;*cbkK67!B0``nWq32^y7(ENbQ zP6F)DRO#<;q(31!#0CDckM#(_p?K5esAl@Q9Kw7cG&og-(7vg1|ED0Zg2Y@|>wIYpG$~+fqa}|(4 zaMZ4O;NwD}J+cz>kNcO8RX&>?<#)f|ed6=5PyP@OY<`ecPP|kR$~LqG*HBKEgZ=TRCaEQ|m+ zAP+9o?C>VAQnU9{OZln&`l>mfK(67k9zz7a0 zt271%b3Mc4zeZt=DW_gV32Xe0IR!o?!mtZd%`8$C#&F#*F;^MesYzcg`?D^X`s7tz zwk=?0&v%py9<@@9D97NpQTYfrvacIz5&SOn(QRxPyh1)a%^>BJ5*{ z30DWl?&J?=`Y#>;(;5f^Ss|I8C;3ZM@^@yd;v&#k>Qz4ERn87kGTZuh9o@ zHh5r{y)zT|tCrWhLErJcN&7k#z@ayq3g4(3I_EA)y?!$x#|Jxb`wF*jCo<4wt=(rH z{sQ!u#@b~~o9AYi89(3U+i;|**X_q%-5#Z}* z=+Jh`|10`yAlMP9kM=I;FKJMw0lIPhoqqIfKEuYwedZ@jLkj&Ehc6-Mv*GY|sfnjW~v4i~c*jteMd4pDo1 zelY&*+{Rf~mbE~F{Z@e$uk$4s+FvPp5I4I|PzFp=GKD5Z7Jh;~E`%jrDH-^TVt$Dt zaS2!CEiQQpjjOwbMZ?(gE`L9g+uG7k1_*~cNdQrJGZ=MJ7dU@FIA;9zWYy~lGIv{nO2A-jp8YW ziZQlSN5|h_?GDEd9rL}Q{J;1gK!~X6GsTf7w)3P+{pa1B>V4x?z&+Q$Ig8N$XaXGCrXU@-p=8Ah#qM z{1WQ-u6FOA?|97>;7?`TQ_D=&FEnloTL2yy31#War;Phf3UCLB$rnsxz=LV8&g#a= zMO={DNz`9257a&z&odNSBUQtQ4~VFXsvv}WYlcF13twHY%IbEASAwo2!Q+740_NZJ z`rAgd?D`c2ek-_r4(jM`r8V5@-pAulnKFAhgQZ7FPe;^+i;hW`JwQL*B`0Y4xD`}} z0|*oWgzGX%*U0)b*oC`9eRN@K!_?(Ut(Nx9M2j+#A#w5;a-BSwIYK5@mN3l-0Vi z{Pu823PblgYZmk58(iBfB;6h*i45Bho%__HE($`)0R&9lRwXl$>am5)Ks!gb%vGtXDb>MD7<32P36{ z&BJ12wryjBMAHP`Ynn!Czmf!LdBgDkOcZ4E4FcvdJRaCYwg0U}CdI`U>I=h_r9{EY zdUf;I&i}5HmuU2aa4?wv-vI^0y-NRE@By=;Pwj7*TC_v)!g2(+gI}F&S0l7Uko;)M zUUkZF7g}+@TzNGmemW(d`Gy!aguTisH3_%GS?lcjf}x&Zf=k4#UyS0GLbj< zIe}md!4ORPEinxOk6I5f&JDB(O*q|bpC656ocyJ3)A}2|sK?x29z(hEW6ddY2I+0f z-B8Y4*&+1peR%%MW-)MGrO^YkCIkPsj`bBl-TZO25l_oT+HGzwy$xFBWU@BXGT6K5 zDX{HpksX?}FO+3wh2%9;A+4FC6%79ZCB)S$E5Gv$(!mcUSzfjB$xC>?#4$3Cb6GJQ zS?n?JA#y+9gM%4f@Y=e=S+XQ&LEtTp#_{>1BjC=6`!8iH^W!(;c2A92;+X=B5M~g{ zsQLVw-sf-ChX#oErv_|DFaeS7Q9_a?J6&Gv_yUC+4{6dE85Pqgy*vA9ZL-A`$| zcCj~zCw^n}#w(?68>3@xOw+`?Fe8vzZj1zfzpxd#=N6$t(J!PL zoV3q$*6&RJ*GmtmSYbo8M1VHlBU!|_#RRhf#Qjv*2{*|56#A^=&O^77=>}&84ZxMy z8fy$v%$=@hN2*vaO=5P|b@ao-NB`j0OKmJ;LYl{iLj3h zFN}3)Bq-^er4y5ua&hwFHS!#wQg)DqLe2luWe@jT4#LI*{>G}dS9!ZEfyfm+v>ek$ zmHMXzu`@e=GI3Wzb-kZjo&GJF4y5*j0NM>&XyxJl`>1;}kQgB|jtg;fs3kdZz_&(3Ma8127ziv99-S&Yk87P2)J&$xgrsU$&AX}Z6b$AHoCIsFg_)l& zM{}w^+a8 z`Bx6kNd>Y(4aS``y;kPF75k%rK}0GF7oMCVgat%57i{e_n`DL4!()oa+ zfIRotvsX^?d?W2T(q>R|{B76by;0|2WpIxshToq2W900qWz$uhFIyxqP3DbNmZN;`>h5f zLu~znKlGk`!^6~Y4x=wrM_L}xRYqNdI?7+yWE`O$Sse8xDxVfqd(6ar(_uu=qfn$cPY=952^J)^%GTgj2iIu{O*D#0u@4X9PpnNv^ zT~1M+!Dv{9ilWv=$+=a$GQOjv+51J&oHkoov*_>kV$U-_TuCtX+oyh1aO_3^TZ;Z| z%Whcrz!b{uK!yBc+IvFt!~v-WevCv#_rxS64@kMQ-}L+_b#10X?2tE&<-M|jGv8Jm zefIM6u8>s1w?K#ep>A(c%l6~O$Yfx+^U@>6x+k;WVjbvZOmz@{FDT{aC~)2Gi2xD^ zCK|f@95a0I|6j#7CVHSY^e($_qT#T!%WECoTaANcH=0Llp3UO z1n?P`_rhvi$Hxe;^3xUNNgLC0KGRcdKOczJO|=@6a0x_p37oQ7(-oBVzf6w0eeIt% zdResbnOQ*jdPsl~SE<0jzu1rJeqcp6;&Ht_V8GG!!ax0*L+>jOd5nB~RB-{{$|?2B zVIN`Kr@9~gN*7@l6z2HqZO*M&zb1VzA%$$+O)3VA}h8c#9uxA=FW1VC`#F zz<`ZWZu%zFR4Vzhn>hRo{A z%}YyMQb+E}Tj2!R4a#-m9g1r^srvNCRt62eYw*gC9ttJTU|=2Q|cV)AXQ6&TOqG)s1F}WsV-j% zqHoVv7J3p?nW)v4%)9bZUU*#Yd6sWh@P796@;7Z6+if!SB!HOWJe=JQJe}^;?E;GG z{FX1st2V^301-4@q;*3?A`KrRnPE)U-eHm`2_$=QL3B3dwoD4p4(<>5Nm5V^i|zj;ovA#88;z>;5*pWSK$g7PhP~TvNvh|1 z@m?pWZCB9(6!#DOuCa0~iyhW@AY!*_RXWiE2uBQ|fKI9;W=+LN3zusprWh2{Ze<4+ zCc7#{>?Zm({2H%w11omg-e3M-0!POk{}_;cx~|kQt5P|_iZ}|BtCKe87BGpcGLh!j z!x8w7^^ttrbud|HzOXga)naKsx-o5Q*qGhpsbr*SahtpMt}i^8BjM$~-TSGvD^NMA!FbzrN)g-|XD@s}o~y(0z6nwBJ(wB?-Ml_x!OHRT(b z>2c8wtI4+zHQQ=X@^^jMmR=YA!ZM+Z1t|P3fOhF(a#dZ+Z8qmQzc&savJ8P-5v}RL%TuKL&cXr()J3IXC_T5JS!Qw zxGmL~8)rAUj2dr`{`nQJ__tC>wL+fO)MYUI3#I^V^$Ziv_{ir|y8bu`f5ND)fBFV^ zowg*2R3Y!5{;@fKH~;s8t((1$oZ>MTX6$PD4KpTb zi*CyUzb6KMM}Gc_lB?%J%1xb|RBe?|C@2(uEC7Yn352~RZy5A9J*l;LxQ1BJ@g^i643{p4gLs-j<3#mR- zj!V-fYHL3c4Bj1ayYaJ~>-L@O6=8&EJ=y+k&9sWON?#<)uNM_E4k7T|#$NCIHSF%f zQ(Zn7#|zqTN@pE4HLE**xj0L_0oN8{yIvm-;l{Z~b%o2wezLeV?af4p#lCPCbk+MU zz2|&ZUx=cFD*Ejz3e)(J+Dqcn9C+Dr97~@)-~jWlRf# zwJ~X(XUO4Oyt}-5ECq5#?V*F;fduiq%QA*KH?75ceyfv0fY}KaENQ)68j|7xPSEn* zAmH*)gGCEuC2^f_X96|Tvv@HAo66dgtx{*pO~66_`3gND2Zj)87cWo z`@7vQ{C%HxVuqOe2=;0gT3Z8x9>x5p3}XJ$FuWhuB=cP`VljJM0rOM8?6vYu?^qJX zBsm!-_xsl}1CfrLX*PnL6+6l{bOUph%uhKfVyF9NGXjP;csA0fq%!>u5L3SO*KttM z6_AL3?yj2E$Yx2uW>;)fP`eab{SCvj;~M8+m0qpL+H&LVE@@r+37&|0CWHsumebZT^J zI%*}-o!D4s5fUbie#GDB)Dcg5LH6K}d`~KEAlY;2u?5bz7qCMtH9@=zP|@rv+Z^{7 z9P<)Hba(@O&ov$J+Sc7fWHln&H|}})LN~fCGx7j|-H_F}DnJ$3HLe8z^9^oPUy^?3 zqJ`z!UMs!eN77#%2P_$0#FCXPhj#9@(^efU?Bn;Q{u(-q(qR#p2~;GC0_hzW%~}!eJLz2D zuw5_QA_xoBo#Dt~cjAJltX7ybMgq+#Rlxeu&abS{WjCp*22^I(qEcVdTLhqg@TQQc zbH2#xuhkw&kC`T2-rtDp2Z@}aaZw{p2jzMuux;2{U-jP(JO=tE1Fioa$XYd1_Td$; z4Mt_fi&UZ`XdNji8-;4SuAJhP%P%unx1W|sgl8U!f~_2W1Mf$|m9Irge8|*J=n&Lo zF;`9gnEZhaEkUSuLr9<+WzRMdqRp3{;Uh31+53ipL^;P`O+T}DWuPrI@eI-!cLl#- zL?O3Oe#xgynn@bjmocADYR|+x$1eydXr3s~OT}DQM(I}tL#GAPC#fsWP}GabRV5}f zlmJyZWw>MizFl@cQo0)H?Xc@eKT=sS7MB-0hRyuts%Yy-FW1XcjW!nSln=3kBY!=* z7Vg}tb`Q|b4k`u?YL|8SvZQV5|H#~|4iLm|WJWnE8cW$exG*kd*e7vE7_=E3%Y|2` zTYN!c9#o4VqD1a8<0>%Tk$YWt!wJ%#-iL*1G#LW?9`G>Eblz-M#FuDt=JlYS3qD!ou#jDUpcS%O#)f41b z6FIt7n9K){I4UK0d|vOvH_B-#R!CWk_#S9nqU<<)#P-YSe&!eb6Nsq$V9hwR>0h=} zCo2IC2!sXq1v?rCiS)h?@_~JSjRVaXdVHHIpEp)u5w%XW>QodVje-~xYQ#YMDKcLXp&rg}8|8wy93)cEs4f)Gti+sL> zKsy`y4;EtaJx@ytT~Z6V zf~rKg$=qB3%cBUk6FJj4=5k1CxJLB6l1_M z#069`5xAcsg2RK}g4Hzg_9ZQ{{zL@NhmD|J!ileFW79M5UBMz?dvXWbm-0D{K{)*Q z9asFo-sz9fsk%F}JZlz^G<-&!;xuo34qx5u_!H$@F=Q*aZ6E zZzXZ-LgQ}>rSH!0%%n+=V|lLZK8P958aE`clAB5|DDe5{N;4dktriZ#~>UW6rM0$<>lo1`;E9W?{ zJb)-W$9|r(bUmN;>{4BSc1d9(>Vy3FO>XHyleT6W z>rYGI?5gG2a;U6p-xinm?C{|7$TFkAkdIGK_XGl`-z|rde5OlAU{V6ZP=QU_BL_^?*eoh);d5ilZ7;KIQ9hKa-G8BIy zb5ujK`UM(3^G*ntZW=cFycI;u-tVlq7RnqvQq>=eb z*H%HU&4jJ{ciJz%bobFNdy;ihetRpbD>+BaiG6fAck$Qj&sut1Jr9JKdb_=DJhjU; zv@iM@dO0lIR5AFI;(^Yr+%}Vb2PcCvz!?p+Au3;MA__lZNHMTFQXBKAFU$!AvOXSb zT*C$GMKSS@lJdfO7J^f7%+ZjnO^fcA9wJOAJ`?60yfc1X;Jeh(?bxX1!YnS-QkCiY zLh&R7Da9JFP**~?;WlQ#Fb*uLe--l!zQf#%79A=_&zBU4^n!=L0&&rmYma`+jzwb6 zabz?JAeT4vc~v#gNDg#$nNs;Xf9O*Q>%lD!>*dk=vl1?PYJ}_}ZciZRX+@RurSV1i z(8?d)Z?Lp}5+t3@F&Us{=Fx&xGJ_CcK%!KW$&kh|BaV8UrBsGfcDAh}bX!t|DDC+@ zne2p}_!Dg0d+uy$aBXf{BuN#LTrrQ4omFy4+S!&tunw#DtflXZL4wDSv6mXJV({N1 znsmjX#}4onTjt_~S-!^Fu@wpYTzU7>-Sat#ox9OiGnV)R~Gj3n``_E+0kMi5ILW^>@X zF98K0Qe^q4;SR6m&@JtwBHo>v|4O+bnZWlc9g}z4O0fhQ>BRj(I!a>Rz;5VIQO2G% zHKv@?NsrMeOm&FHV?_zHyEszr`-)rq6<650nQem^$e-r6v~iiKt?joZ>)!_Aj!3PR z@_3@r7~xe6^ShKi{tll9WBO4-$5SNK{i6hha`!~;k}Sm>|?>j!+3;J7h+Oz ziT}>x2*da4b?bXu{V@`!v8jYCLT@~0LFBaS^AsILSJC~CoJptmgH3FNh@W3}Vw(ns z0_H5iDxZ6Qy9CWy9gOjN>vR5);ohY{Acbkas0P|=U45F-y-HIxD$SRVYXUdWpN)Hk zMD@wf0V5TcC#Hef*yP33sTLuPf+2fu+vaMKLRH=_2 z`m^VW&%)WW_%vA7A;~?hRBFAjdoS321z--x~{InDQwT?l6}?h-*hEgIad?j z*mA=(oZOGNv2XVetJMd^QaF(0tJiD|A7Z|Dy0b7F_+xb}febqSA{+aU&t|!bmZ931 z?fASQ>A`N13|>FaDUn37zyHr?d%=b{Mm}D13n}#XEBU4BC<`N1dw()HaR>v`zBWgd zYi6d$(c&x&?;NhcXgLimF4=TkQl6!h6on+qgG{bEmCA>UW^6H+x+D^8Jsj>3UX69i zPezm4D1Oz+#JZ&OH5u_aRo)#v z=DZnn;9@d82r8o>v~^Xfh9W+hY<`r8;rTP2KWm7}0@0-~72& zz%2MuU_SS#L3tPM>p>)XDuzvAs2*J*jvQzV##6<91r|NOzrKFXVRQyB(L+9X{QH&y z%OM4AQC*!*I2N;bG!Y7PV|CBnEhI{}9{IzN0ukfKsKoeYKxlxlSU>4~FZjY&xTuFz zbv=R3AH8Bhc4Dc&Mm*vOjkvDC0T2F2^Btx{gxKHDakdy#T02o``zhmWq0;J{DCaSuU>>UbN9ZYk1hh)#YMl!*5F2V(qySKqLzm7^SBi7`c!C;dd`pIrzJlz0-_vE^wz zJ%%@y6^Of|hIZt7@SumdY&v2F=HKZdUNW*}#;4;Azq85D->SIZQfU}g%^$86N~muh zJ@F@zmGfs{a9N0p}_5av}9h%5oeE{plw>7PUe zi99qx;V1g^F;IDPWnMjfM83qQ&#)o$<_sO&+$*qL^u{72AEaif zU+=h3M&C(cLE_L$g!7)opI)_KT1giE5cD>h(lHeb;rAHWK~FY3ky;g0(2 zBvJP{l1G5WKJ|wY1su^cnO zk=MMVgPcVMD%Vi*Z1m5Zy^?{@v(FEJA0pj>G=86+>lXLJv~|!;sAvV6^XV@m3-?62 zlaGJ5bVZeC<<2robc6GYDFQ!@zI>*7+yh+%IxxTPfu5ryfx+KqqrJv~5l?6E_h51g zwb#b`C^vG`u+7E9USr|X5Eto}XqScnl4ZZ>&_Fy>VsnRpF5QRUkr|8A`TcO{z9;m) z@nS;bRM9BzQDU?DNnNJy`zIBQ+l*0r6C5uqL|cKs*>gFCGvqHS4(($LfOd1ogqw@p z%rhZ00dCIeejvc3)tO-F9Itd{AA%!$-FwaKN2iM~P)^>t+!@7+!HVB1+`qWY{v(Wa zT!yjo^OtbBy-<>Er5qhUmQIVmuTaD#yjM%Jp;y&W*$E5onnX#~k=dq9z)+3e zyjDCgpLZGWJnC#Z!d-dDcr78H(cz)#`{zf;*IphuX>rkF5i^l4jqNuU3ciS{XRrfN z!~S$&^h{=p;8C+22=ED#xnqM6T@-&o2l%i{dvQP4?PZ7BLL1JeG~`)hfH)Na#rwDH zKpzKLFR1XaZ8o$u(x3MYqpk>i?UsE02;9&uZg`C2rpj@{m7f{wflKp7VVG0JC?U{t ziZF>V!9^?Q7au(^3Gk<($c`GZ)WhOrj{b3EU%-Re#O>P4zzU6UTt;yQUR_oO^t-x6zUSQfC&!*Hv zn@B(FJ!v5o4C9?;*U0!0rxi?)4+hjxrq%SprT+uJ>F`7K#D(2CHZtkG!|BpBbZ2ix zh`B@1hBQ%vwBbqq#4;ypSoYGTFyJA|>?XSBUc1N*Cv8qjFJnB4;#6cd^DOf#pknqJ z-b0xG_<2A3ws>zXAz%Tz)A7+USp$O;)_LY}Awwf7$7B@zk&&NF(VPaMBQZoW5V%R$sG#VIDzs} ztbB`JpP%avj|J7foh2dqCTL_f^coOgIr5XrW5pcU0Vc{Y(8GVNCM6IWEk&N#A+npw&^$_)jrbj@zNGD$YDN_L3ZRJ2MVFUm+^E|g4S|0&#h>G5| z4&3#@B#ihY+nFb^?}JfzlnEce~qAjMOA+xEqfAHxDU*{cxBspH5q#yNd3Q0eB40O#y}NV>&ObI zXD9i83+ti=+s_)|&jQa5e zutIrlLo{}6I4eg;%>`l6F!^!m4AK8$(kJL$(Y1eeWPOTYJT-QEaRyQl*5D zkNIi4vYDCe`S%U-0S9rRH7%Ki((&W@{unVY+^};Nju#e=0FOI=f4yTC=aZ*{gAsfY z?P+(#sFCK#yN*m-hWVtWiE74peSLlhci+{+8@|@kt@-r$IX)$wsUU=WrPTh~Y|NlJd8c!UiE_+9x=OK5#g4A*aSE&KbL6c{M^^PwI`z&GJP`Td+t4 zfmJ$*X##R}P6QFEdudHtZ>ef-@&H-WWy-@D1Bg2R~^=zk6^RO=4I6kE>( ziq;6GC%ESq90&%Yq7wgX~;Rz z1?P`|!0%p&5KZ7Bw7>nRs6hsP0XeXfMn7^TsllLc9u*)-uHqwk0#I*$;RI9R2 z0uU#LZKNn^^aS?0Mq|e&{gibPp17LmsM*}8E`>UJ7fB0TD%(Xkf#k+_3FdY`CFG|a z5n*kS3O{R-$ek_~h>r@QH40Lh`YHf#Dk8(G;Rl<>WgdC{d@4SN?}1@OFDKM3KLvl+ ztrkDFfj^@R$k*Ac0(7m?`Y}JhU~ghIPM(D!0p%k}1s3nL_jG4t8r`NC<0Z>EirQtn zW;D80i`M9792jOC7-t-8Th`{Sx+`Zqif0}agG`H;&8~e;Yf=14=Q_*f(Qm=}y03X- zdYPzhzt}1=%7sPpUK)Z}Xv$9t^#Wt3z)AyCeIhTh@9#O?#_|i*Uy!lS_fTwRs*Dq( z#TZ=HckQ0h%idWDZ4qD1i=t-iA6XwK&x>8LglueDBE}_gBJBOF%tYI|ImT%T8JT0A zjqZg_-FsS@^yf7)gqUsOMg>Z}*>Z4`TGGaTuNWJ$dllnU7PFIS&V3q&GS3TS75p1X z!2i5NTAH+eh0t`Zs`IEpR3`!v(Dh2@NBJxi^CvIcO_D*n%KHMudpDEOn}@PqadOfW z2U;hx^~Hp8SdWW63m zpG}lgWZdngf9Rl&8UK&pB{;NW@uFlPJ)mBUj%`w|Yj7|#Rg>iBQ!M*tlnQWooL>?t z?Tmk}rAj$|^<3S|8OavOTO2-*M}4z}KAA_F z{4;5^LrR<~XaJNT^UJ(*Hx)#ns3~{)AnYF(C|y%78G79k*^rlqEmTfwEwISbq>2LB zmNLrGCu*(fBH`{P3G0Jm9nt?;DpqqUH(eP_)Ys#0Sm)$@xkL0<%ZmKKHv2yGYlG!- zG9A^H;7RhC2)_pz@t4GS;`Df88j~*y01rDL_bDgFJuJ}$$z;I2WF{`!2~y+@ti)rm z)S9k-#6q?o-Hlz0&n16_WU#cV4q_j|RZo+mw{YbVi zgyWVkGriklK73RiTh{bgUR z)`<_k{@Q>B4;AbRg3ze%TLg*rwxjs4!Ygx9Y~Crv)EJ<`p7Y|XM~2M>V3!n`fp|@M zBCU81jkpy}c8N?WZs%4`d{thb?De6W-1wCuKkpZLp<45xPLq^gisMzUo`X3yObS66 zKVXUj%b$T{7&QST`aBC$7O(HXp3JfIA0izHF20x?u9zHKGG7pW5r-51w47FR4OsXu zjt@X*Cw9S4(STNl0dtYp+aiJVWZi+^tu=g7YPtDIKBzU9fBQ(SpHF8ohFok;zNg#r z=a@#*eGg8vjcozr(lXJDWStdWed_VyJPXZejz+M6NP=X1+Xcy0@x`Bo)p`$x#U(`p zZdP^cgR!)XvGiD9d@3veYif_fx?cm?WCIu%Ga#%6TiEa~g3T@fp$hb}NxY?36T^#vk59 z2B zX1Xrs>?;pfVMypLtiNKr<7`Pw@#G4+?w2l^QE_pal$g=#iRh2l6&=Tx%3Bg04XzjzS$+%k#s>iR<=zB@sjChZe@5GH7F@!f{D z7s+%whKtGI=t=2*`u6J}nn}Y00~Jn2F03%(FTQ93ejCG4)g!rhJ#81a6k;|EX!4Tf z#RM_mq<=d3amD;*(lZs*pfXVGSEkNW@}q<>ZFU0NF#;j^vF`R-cf&wdjMvyZi%sn) zR5VhGQ<@jVLEry4Lt1E>Z@nqJ4o~uC#FZ|+vaa5S%AS>?nK=AGt5Ed z-b^5x)|?4IdS9QLmonzWvhqL~ z+agFE=B7iHzOk&x(T@?*@_x3=;gu>hNT?t_*p{5m=O*4BIIzaE#{p!91?RTvMi^rR z%6dBY^n0K4qEd4vF#LSmkIM{C2Y*CH#rGf#Fu!Zukc~N3$HB)@2sJJM-=d$Bj032t=q!E=)hAfQYZdfJKea^bHFwdyht8k486c>z^T^Mp7y{a)V9^;rB7|} zU$wLU8)Elx37N~wweSX`kHdu6YY%WuiJ<9gC^XRXwGrD4Ii=mgkbZZ zf!|nEWiA?QDVNWsQhMTOya{Vj99wvpynyG51MMhal;U2p$hJmMCHU^iK%Hl4V0WB_ z$^&=X9g0QEFC~rmlO_$C{yB2Ee6vJ!-O~m z9_mbRSD^UsRvq48fDwY(~Y(Bnqf|n^H@%yh}p#N9LjZm zHTfRm=gE1($>*44pDt_%f<;lyZ&e~2kF|bA$gPE%q#0CD;C)V%v+a#uXw^;t8yrT{ z+IRb=ir(xaq%-em$!%%LNokXkQ?lJBHcC+bQ9AsG4Cov5=MW3TX$kNdQqY;o{BH~O zPot5Nea6^)2adlfc`O$J>uRpo7BbSZwdn5@%i_yslYdajHlQf4f z+ozWX{R|lfro#PSAk%Zx%w06NauRD#Bb!T-kqa|)iAy{a!xU|TesWjXT&>|fu%N{D zhOxMT;)GMA$Wx?|ZCtcQXs%jo{R_%YyjPtA==~p*6DEAn462&gJD*Zfy!Ps>wM4=v z9L?XfZm&)(eghMswk{75%RkT;y-5!uR^9;D*lbaG<|1trVUDLi@23Y@Obi>aPm5&w zMEiLYUy&QvL$QsN`p??!H2v7t$CyFQt1tMokSTo)Rg^{wOV@azdSh{;eoOCvon9?v zaPwOeU@92C&M=&oiy6=JyBIjXneVJ{_pAnE(x4%4n7GFz=C)uus9(ATqVcGi-P@o<6&fhs2}qK> zbD#v<>)S1p``x+OB$%UMkP7z>KHQYcuD~mof$J%aOuub#Ph%lC(Sb(Y3Xfl09&vm< z^w+iy?C3SY&5)DTqVWL=fKBww7Z1B%Unr(&iTCaKr%UBhWN|PqDg9jwW>UhgD0ogb z^-Y@+V;lf|@bA3P-=9-(bx|^LA~}*f@YcOwcymy#@aoY*N8PHQsy8yousgI4O+ZC}Jek0U;`Z);W>&sAc ztU)pRt_K$THodZ=U7@kh;(1*kboLo2794548kRLEY0<2Zp=^<2I?i5PjVuHbrT_^$ z{F43g67=fgoAg#2jz4>`$85ej6NowRD}Z%~wjfGb1T+6TjgU#!U8waYW?7VSCXJA2 z)*TG=1Ug?L@&9+i2M=Y0BD|QKsT)}ikhJH{xS@=}H#D$}K#Uj5zn|zxt-pcg8tL^9 zY4uBv=H&aNi9f*-ulZQ*q8wn!O4p5NyM!&==+2E*0@Uj z5ZvctX;#*?DzRN?%^`^l?~Lp^qQzd~ki!C2tR&(Pg}xc{zi1a*hw1*F$ZL|u3th&b zhP6k{DADwvrn98BbFh=Ip4H4oh*O;-cWn3Gxp#Crtz)5$nx}zXU+C5Yl=G1b=`8&w z@5Q=S?oX%vR<_y5z)zOcMQ8UJS_deGebKgG_ z-6-yXgoiIY^UwBLx9z(BA6su371y#xizXqsJHcH81a}DT?(XjH5G=U6ySqCCcemgc zTpMltHre}}cgDMSj0sKk`a_S^tE#>!U#)MNIQynAyjUyU_h#ekSAZ^p2Aa}KQ2(k` zd-XgH^GdTHJ2xLEZ3X~H4Uu10ev(97;+|Z^y=%RDWcuFKWQYEB;VqYG@@^B9+@daZ zz0UN{!a&V3B%V4qHi1^0+%;=(-)8jZb(Kq3&7RH91sUeCVRACjn=w^91s9vm1dXiLjBw}{#mi%E@i zJ(?8G@?2|G9%7GjG9m-X>@oVy+sJ)vrCScS?Ad=5-SvTv6{N1(Otr$1&Y<4$BP?cg z?U-5<_}E6==8XXKepQt6Oug;yiChJz*i6o(mza>3lJa*<<37!lpHtw~Z8{D6%n?0_ z2cK?QNY3}R3DK@eKX>^O=-I`r2xOi>T!#+mE4=tgE}ys3shV~C%<9E5S-{WM6$5gy z{qFU!F1OZ)-ju1(RO?M%K5=?@uxUb-h{g z@hK73FZ)SPL=}~kw)CD%bHTx9 z_?t{~h3BhrD^_!$uF5O${<~egex`bqL-c_vze7_wqw>P3wNThL*{LVTqA%R6&engH zetg;HitrVC_I+IjLhq>Td_-H)+qn)2mVqjF7i&mcNWz7w`17nInDG)}@8^aLKr!UW zl%5TYFK;65m{`OQEI+!(-YM;$`_D{Q^$!CJE&wtKo%MSlC<9S;v8R=$ou=WQL=YSQ zyNOgx?U1N2ye>48lbp#((g@J7fS0(80nah52r@-IX^OW?7XAc_(A!OFQ!^*de>Q4J zo$7R>AV-s+`VUT6$16bk`TLT|P>8+=I&N*7nJFg0Xtq)Q%c=xpQ=*X-&B$++xY|lm zLrw9)rnm@evcDJ58Jj@(-^;xgWWs8d1y+S0gD-Jzp8j&g#PTt!?;k6&{QJT_@7k;y zSQ<_dBtE);JsX#GXyPn@J?Hlk8gq-dTrEb)2x^kO=SQ3%L%LJ z1-~1vJvv}=)iY@{Q2f~~6Zpupcj~>vhb)^SKt=pIwp<*t4Wo08s+%n*RxH1q`R;BZ z-YIq7GLbkaj#SQs)|K=E10;vO#aoC(PD5daEL=uhf({=DxksVLGS47;ov1|Ped!8u zg9f;UtcEP1+G4A#?3=cJBG5#qy|TXHAEM$d30p+wQo7rhTS)Kg-@qlm-T&6g7JR&c zOBcOg9e#EH2>>!U6%XI{Z=i71HuuY%($=EV)@}>U-HO%z`lD9CnoJW~8N?m^GIgD) zvPGsNm6-O-q3w(0mE%g!0=%W%bSKZ^KcH#>ox1ZIE{{ZlUoU(Ne*lKu$e3*glRJMG zMwHXeC1g3^KVBpFS{pnl-#4bgU~_X<{=8UI-0-ZKFTwflgyZbEClP}0Jat?2Wd=ng zY9y-FG7QLKG|4p3n6mw6Y{25T145tr~>T2f84_%Myw`u+ld?7H1 zAs~nbJu-xkg-(uynCuGrEPKFy2E(<(cXq0)LujN>8|6>ApL;@(`x9+G5pG6__zkLq zgZg1;NQNbMCR~r14j;!lHiGGF^i^lgFh9ejJ})qNS#l8+&37M=N|L4up>`ADE((!f zeSh&K5_}7Sds$*?!$k!~XIS%I!4W8o7u+ahy84jBMM_cYBvT4;KO^8zUgI-{8W>q` zT=;cdN7#U6;&@0EU7f=B{dCQ){SsS)KosaKLi&ti53~|i8=*T?;=MXP369A`ly>1| zUVfNHEC1`pSBphjL=Qz2hxZk;01B4qOQY!I+zi~6x>WW~1&J^A)jHu%HJ3~^%+=fb zsk+;fIux8YxJ=}bOyq2R>=XQ+&;XK%X|=Z>d9}`Jtt{+~vQ72c!&39*a~KGD9{y%c z2^R}+qrqt3xAA8Q#@ZC4K_2q$Nz1}#oKwyTpG$dB{^k(SWAnY{8K+8IJeucQ zMJs2^OG8~Y{9?X8qkC^67@T2i!Hq;Vo-8pWl;?v4&>Z<3dqP`;%eb1ds~|02Wy+B< zk8i(1LX9hhO3`=*_R<}7qQxK8iW{y=-Jqp;;3AoI9yoLk@~9k!F5MmA@K3~+mfcyh z`^?X7MuUKK1y`*CsjXe~P1mdj=YigE{=bGFG?;+kwyj85{I-bLLE!VV9NKPwrN7yW?Z@p zXx6cs&wO+tTyx;gDa*$VL|i@0=4pBo9Ki3{5-Hu7@Vd^%ZHMw69yUxRYZELIxEKqI z#0t!X(nN@gS0BuhpETeyjBhxixY(gbhFNu#l@N(Q;hW{_3f1DlZ$ zDc+?fx4(XkhxuEy?eq{^qOMG}CB;Bpvc(02?ak?nHVGn-NnPq)!_Pu7M*s-FdgNYU z;(zbH`~aO^<5JeUgtGbl+4#SHXiUuvN;H&Z1<8&oB6J>wTPW%)2$>IV7E z$&A@Kl8c%nE;NK$m}88h`rADWiOFl7ehB@q@#WRgW&PGMkJg8#&HS&;{O;BPaJK(| z)IzM02E(8p!8y(%&XQfm=1}4nEcySbdn?B>FRP19Fod zFo}8Vw2uR$^Q_D2{Ze;yk}S^DEtRIO#+DZ7oG-4%mJsMHC=LXNF(m-_81OuhKeNHS z5%gytiNZ@h@H^2(BJ)8a*2GE-z*RW%9(5C_GTmL zx-@}kw70STYLs$t*zLK$G#anaW|#Pp7byC0bxrr;li>6A!^bz=hfm}gatAS#FVB{* zX!A|RYtS@e>XCRayhU~v;hTYXqL2-BQv#QwilmA{M=XPc4uziFC)L7=>g82>XRm+rmACoM z$h!=Uq@7f!+sm43BX0v=y-b|K5!Ss%wO!kjOLS!w`Z0jXJ0SYmYXnlgTl>HntkY79 zzQ>&aw&^5f4CKza_Wwq<9E9AMDH!Jn`5ad{D3K zyn#lU9jDk!vRSf^BU$JK>1n5CJuaLYHJMQuR?W0}`s<%C@MSimK)J4WL9WWPF^o$J(E$b)f5{GsR>2u7Er0HQI#W(5-$OkQ}W5pH(KwT5|azh0<+HsMG zKuX`^Hn1aVWI$5M=x4(GopwMZu|3&4O^iF4iiYqHP0UB41=4UpG%47Pc$?I)S?p^aF6?vy($XvzmVSrF#EMC?qmLp6zBs!+So_fN`$o!L5Jx zC;i*h#q^cydpi^6pR37yv(lZS6}7yKZyi|M+Ms%L0xXvo&(a&FDGjkw_T7Jc>&`Ii z3P6}B|7`z{LE{JP*AE>4LbB^UEo;senqQJoV4Zzd+Q&t!q&+6EbR5e)^#%cjK;q+nh<`8Qrd++|91NA^pn6Ybon6a zK8ZI!ibJfA?Ky&CSnqoV?Y)BDAG73jJ0bSQZRYfCKUa*>3eNf-tlz)tc&~1!A9~Ad z13Ct&OwfEm-F)Hf*Uqjxe_q(bPbE9dQmWLVVn;91Wg)}SZib147CXpgwkcD^Z5mhJ zvuwm_2i3^TZ}z$u$h@j z9Z{Frirs4pqHr7i%hB?E*b!^H{A+H2wgg#DVgI~OwL7{RE_(4`y$y zDc!Z?D#5s3s}^gD6!pQa_a*eJ?oVnm5Is#F4{#ZF<1*@4CvE>PGD+Jr8`QZ<%kJ<@ z9wsPAk}g+Q(QkF6d{4P)NhgspdtCb5dIN{AEB0hiJzUF9*GtPlKAQh)quI%+e5-@4 z+?gz*d{HRB;F(l@sJ@chC4wVS*r8J@M>X)!blp*`SB8T)9v?(g;bXeR#5EK5S@x$c z{GBdGq>jW=(0#x&>Ge$}>&W}V{`y71O6JcIkth9_x2r%BIEd#l)=xD4hv)hGrFb_1 z_i@Dc65&f~iB~uxZ(BTe{&b@TIPHAtXG57H&XV+E0#x>M(j)tv6Q86NW`vg-M7vgq zTqwQl93se}6r_p#>soANO0zI!UYIm1%bZc-$}e>hQ9O$%TKOXV|GVIt=3PAHo(rE% z95VOfe1=|p)}SNvUMlXiha@9UoftkV@2rM&UxV#lpzs-0z}u|I;ASEbwDD6^q&x5* zzC_**CfhO9+Dt=(ic-+umuyF_odB|m<_`ZBn_QVGaTUdasWxjpB&SKkJn zoqp=_-ZT{%aj~P<8qv?NlgUd33VvM+l0KW~Ps#@;q)eZe(VRh9M3>%{3~?4#R8wWf zQw34PEIFk)M>!@j2;-j-)ebpNk+P&K`Vh9w`{}(|H9mE2rMt((tD4smv( zffh>6POUb@pxk8JKebRfNh+s!7S-oLrP(_EMn{IW~uyMEQK zt-mitB7R)Xwcsf3-cj zL+h}@wywOL@A?P@lwlBVMTTd!Z}3vLVCV~;#OXyr|EtaWOY3XbT+(Zx^N}pbx0LJ< zMBf-vlR#4;+4?RQYLBA(WC1@vsCq8&ll{R+Ouyvw#JsQw36>&D?&D~0z{P#n?sIW* zEjge-?n#L>iq8!FIB6CS6@P+`k>XKhmLK)P@FjsvzJg=3m@~+44U$2_f8&~(DO(7A z??RGBN==mK|HCx+4@Dg1DX%twHL9p%S2S0ws;U)5+_Dz74Z>y>f z&}tmBlD&oJ3&m}PS88asmJuymm+i?%0TkH8d9b*x(^dAK5c&rk1{|tvC%bHa5+{U| zR`=FQl0iT_8Eu*};b%8FQ-}@_jQ-LT0}*fO=$bmhqVIj)a6*Hc@cPTHd%?vFJ748ezg8Ozqr$`lIsF z`KDb17X7`wj4*dHP~M=E`YXtLu=F$NcBRJ7jA&j}iaI^wYt3e8SSxDfoy^!vW|C*{ zO^tBvsq(Z*;9P`Vn(GmSy`1G8T<+UG4pOrop;7`1Vk69Prx$9E52^#I&?Zu+Py_C3 z63OFU$>d&A?mJX6$6STajnU?A)%lpN@XiC;Pe1>>G~1EcIS9S|{PQo>1b1C3Y7}%k zTwa6kj?OFf%vlS1T?{`0nY&;3<9Z>*VF*a6ykZJ2{}}|mZ#CFuv_v~%*hRHSb)=r1 zciKY<$aI7|(pn;c*>sFHUo4)d2L@Nd@C#H(D`c}^y4B2|nRfo}DlmYAjlUpWQzLai zC0sG`zs$?34V#W^2eeeOFh#`PdbvY!*+wS$-8plqYw<`Ym-79&69<<$<}OIyEq?h| z-u+AAfjCqZv+TP4P{ZZkHl+iAy=Ev^&IJ=|s z@}pYArI|L{e3ucUVKun>7?uM2c9LE0)|kEORbX4mTIG5<$(auLzg%9E>zWll?|Y40 z;9V4{q=u6QVu1SkyGdSoYBi8BUN65sHdTX)IML8spP(89Ryq?)YD4+!!Rw92W`V#4^|Ne-GKm3!lDiw?i_Ck~DbMc{-C%`_|bTSSYx z{YKkG?&o_d0<`OK=JBRZNGG&Poi7xoX^&4vUlyW08TVf_WD*xxGzG}-Gg4s>Wm86V zBdKybhE-SV)iW8>b?zO9U1?>qw-;BB0<4aT#tW0#GbQQmIg^idwCOGu_QDifZs6xw zyFfkH3Rk(5MVNFL4$)?04p}^rE%~or%mX5(h|hh?>}c|JMYTMT5e{aN~cm+P?s$e+&|cL1s8_13Up(&_fnL zV1iIfdNmlK`O90sJ^7Ti?EV|x&MBx- z>*takE=-3H@TDRIA6!ap4}ZJ_A*_G5|D$T%+oWuvRsp81mUlt$IYd|@dt`a|k5#!# zPyBbWUsiD+^zmF_PEr)qh7x+)o~b$vN&r$`^^6EK;)wuNptOc9y+R3=HZa;1^o0M}vf_tDgykIeAT~Igf@u z$x3-=2%hv1UFD*=T(~=_$sE^GWHl>zJ^pynwq-XS`YgH}Cip__QR_&cVT!cv7IQj* zErNoKHosu#VEbYR_JvE6w1`yhzV~w2sb$c7jlgf&SjpWt=(kcS@HM-bzD7X#9)6+# z8|p^9JS>YJm^Zz{xh8_(%*MQIV^+5=H{Z@>HDSQkZ^<@4X){;ZUdgp$y*_h}z-_~> zmVZ#Gnfc@FtOh#84yU%N5avYVScg=WY!m?AB58ftP=94z_{I$cEZDh+JSHt-CF~l63O>0Dc~>r6+!LK&)MAIcEcf!~uJS z{aDbIYbc}<{p*(dBFzEy?NN&;a|F0f)i`t|61?1uuJY8>3l=K))YJptIZPCu1MAQ| zJ|&!8%dwbS?ff}%<00gruJlm2<32ytZUk1#8}-2u^86MKFj*@k!YFTHW<>P{rNArp zl6z(5!0580mNtv)dbG-|%5hvd>(sjpC0}iF*mAE9#{}B^V`)l=3s>@G-c>Xyjo8v< zhYv5MPL+9ay!QhX2zTTjjZ4-{2$_jnx*Q`jdw0JfK!v z_B#$fTfU!hA;#1?RYGmaKB&)mO|I7)DiRsijaOEX>LqHS;ZW{LDr>nlzWYXj@l@Sf zHtPHXJh*%+hM|x7Z1*$Ds7`D&8SC!-)@^!A7hMq|YCcBSWkr*Nxv#Vj1?{x5e9D^vHP~CWn%6o;E5D^uI_c%)wNp@! z=%Q!8RbOBd{M4Ls@?sR2E=fT`Z?1h^;bRYf+yf$Um})F5%%R>@pjscwij&~K9O6m4 zosEvtc%nnCL0f`_lk=hO-X#+lBcb{YtCe@&zS>`KkF}TEBm`;e&?B%3;@bGAc-o5^ zeqRZP-GJ?HrPt?CAgd59d*`ITx$;aEpvHImI?Z6(||gtN7`Ysk%IDU z@{pGVqgW^j?%@<+;COw@2Oe78M*|!CrUR~V@ZlyBJWGTasDtAASkbUGAd-a*^86aH z0%~{`OMctb)k!>Jv`X-pK6&G6)B6E$YXd;ST3K#r^8v&$i0mq$?3!c%+ z7d$1^o^lfRIY#I1DhF2g+?Gwqf&aD&%2IRP529y&?+z&qIZ9r2%RD5j9 z@D|ppI-Cfqc1vuP3ITQXT2y>2JHCAi?QD}eUNCm3rZakZwkr8iq+o=2k0pXMlmj2d zkAoW^z$pTAgyq!Fa2R4J2RD?16&3r)4MAoPC$WP?6>3;O8kL(%ASlT9^QR9S{0kP# zjp6)sw7ejn$os%)TQ$`Al)l2yciXT30O@2EqxZ3CfI$I&NX#9VWY0bVdxyayWT=D) zKmRA?-xAn@O)^|(nBDpR;N^9iXy>#qqDK|7G1XfZeZpWt-yHxZO**1va-Eqg^I(3ZF>2LywnD?yF|RU&S=z`9E|hz;3iBs6Rhs2&p`mZaZ6({ht#2%UxvC5^iJS{{UT| z$1N@2CH_Ak(aL14BFd8B&Qx1fk6L*L!dZk-M-26T8q7?v=qjO)HPR1OG0#=UlrShz zD+J6C@!}d8&LHPms)~EJKv_0?&_8ufZE8(wYF)6tD%Rc{>taiCMpuD4*K{yHjisR< zJ#Zz1CP<;7|Bl9988k(Tuu@cxBOw`1DvHd6c$tQjcUUlF&Kq!+4mc@<9|bzO3bb(% zt!KuZ%fy|_97l4NvK<#}l%RIX*L;(gFhy;A-3ZiWK!9jkcA`^BAAi_uOYX+-@lr#Z zToSM~<*-d1MxA=`*B$*T`@DJJ6gly?YD|{@SIn;cw89rs=5_aiU;)IN-{LCiah00h zWZ?IOynRHlIK!J?;VKDo6?5zmOxw*ouu>+JQtqI$(0XE**kYe`#YJ%gA%pa?*N8UM_=@fR1(#BM6WVYqpoI_b`b z22^IMJ)!-Tx5mnPJ$?)ONA6*YRNzOQDw*3kK~h4491fr_%9X}BH*{;vD8+1$TFE5| zqKKGe1o|~?V#f(XE~)}y3mp4q zoP}G5?WsTUOJ6#z=W>>O=DwidUWpr7C_XW3E{(P#21Ew7W+K0b!KOzCC?j_!rQGs4S%QOFV2xF|Jz`xY<3j5Q^h<^eni}lrOnJJuiYdV{gEj2<=TXeD5@B@ELUw zk4o7qg|6(XK|&AJ^S?uTRT^gO$L&a&wg2+`a}rB`55E3dMMY> zWBBuHG83w6(sNdn<$B}*=yV4&by41DkK!@afmxX;l8^)B@Tg{A4qAd|5~y~nHGXC1 zw@R6M*ZnnvBi!Qa4Vm>UPDw2i`n$Cy^MkN{TKQ>Az_}9mw$CJa8ZnOf=GnY;>95wD zsSgiOsxEo5C|2O0UyHovWXCRK3BM#L{Sv2HqRP%rw$WxmhQ+~GWT1YW(6U?vh2j^s z#c+z_6WCIZ5~}P&0%wbJpTJq%2w6`x7%kWfORmOXo$!o`poFTkj+L*1ZPOVTqnNXi zv6j%Xt_E{rqfCibW#JubjnHjAsBtb;9`iKB87e_pwCkn& z?AVUd%L+Gz*$AKQvfODnrHNMj1ix5K(hhKu1hqhdHx(;R=w=~aJZRPav5@En@cR1a zy@aBleSayDy9)#F*A&`Z%CX&gH%bL_LWR-nDp7M!33*1XWVkmfUQ_HHaDpGfDe(jS zIe6qlTwuXagGN1)%l%bqu+@Gna)b!s38`K{?PC%`LlXHy%7;M8GecIIO=hqbUwI@I zSyxR&s%hu124= z(%qwI5JgrDtgsw@T<^quaoR7q1~3_(S;=UalJMRjt>U1(L5ZkF^8=arC&J80=5o zcvoFfBVX_pml!(#aA74^0*jf~=K%(Ej!>R^(5cMrDBr#sX(0WY=f z$y&#Zqn;M|bwVV`#1#-*93qs=rF?g;w9t;aB42{Tyv|@NjwfC%I(rg(<3YL}%V$B& zLku2od({kwBuDbeLg;&B@ngq)ob7Po^8|$MH}C@heKu>Cca2L(kefl5VmcrWhpk0j z)Ua!~bNpbuGiDeA)p-x`m4!rkq9n*<-k)SaAAzA2b8*C*>2uYWyal+KHo2X9!7`e_HUx! zrv6A!ChFPJv|F)^aV#FhHP&h|UR_>w=ghx?g9GTb9}jnbUDmsK^zPm4DE~fRzc9Y* zY;zhv5DVYmq?83UM7g!g2uv!MOx9p;SkOL1&2;3}jcJS4c(OQ~mC=--TxqO6sSDL4 z!iaFxp85*Lvn1F@TzvoRlnn9Ul#C#s^;3@r9^Bq9ydXghD@C446Y-Kp{}NS=$pN+V z_p_6TX3v%eM6vcJatBK8h*p)%k z-=fG8{~G#LC5t48WU<)r%1+Bk>B=x(>hxDcXy19pu=B#>DQ!ivF+g?EE_`w$eY>O z6Ev2TE|XAh$p?KoyWeE_8roLWtYe3C*0r1bkJL=V{VOR0SJbpQH<23uuzv$CM?N#o zFzMRnKy4i6QE0$C9Bc{#-m*|0p6JF6_YVB-t|_On zu08${^i~SeON7QzTB~wd6Y0>CTliodmlfCp?j=Wu+MO6Zv)pLV_k@>~6kN6y)#!Lf%j*E*n1kZ}@8+LqtS)mPYt0T{cb-+#kD=(!46c*^(1C%C)b7?b zNY&D&s6k1_4jGj#xt=o@4@J=y1{+3+1@w z-S3rnpfnjVtlQGrjF5KlUzmnEu%j`<{Ue(0N@9`}89<&y@1;NV{F>kxxGwGQeUMQc zwD;OfK9?@}onB#JTNl>!R3+e!Yky+>+lV9g5x^^i)4|cO0ez9>+Pezd`EsIvj^sR4NHa`c&{{Qkm8V$ zb_JHv@{bnsg<@VG)g=>a-2G~4DG5`nMdQdNxDhCXpfDPFi>`I`i!N_F_YME?0V1H5 z0Rq?{{hS1k9Et~Q!>Uf?V z^kj=OuO6tc18%jb!`$?P=Sk|yie;jd3oRxdy>~h6pSnIS+{1s9=$HI4LCe^$efeau zW&7bxR0#;SwFev64Slt_IHJ-efqi&9W#P9HE+4ys9-Gzoawvr87)~Y1gO^{gfGD6eMT|^}dfU|G1$6 zGw6fJ+9k>pa8ZQJ$%OmP^~FubCY*Q!((Ce@R9tqSR7Zc}6N+jTu{SU0R-x2{6s^=) zDvFe2>b`h{3Fe2|<$S>osNbiiBwesR-8ewrEl9tKECqx5;)LI)RNhA%XQI+@)u?@6 zk_3Bq;Cth+io9Uml3O``{$9fs!!X1IAS1 z=Mdzi2db+!mWsJ<^^Hk!oX8z23w?=i6UGK)B&-r59Z*0zy?o|=N59BV$ZTNgFubAH zrDiPgBLML@LxCg3>$BE8z;s#^N9O0rjgl}Gw=b77M8Q9oY4*H5zlgMcdk_=tR2W^x zS<+xlV=WJftT!;sfF?kKHp~d62xZ1G-Ff+C5=~mWOd@WD;DMSx79G0z!*n9ocIOQu zRrbe(>uE@Hz_ZL2CPvs#mo$=}_PpF*p0TLzJqiV?OeU_sZVYEr8%nFp->evqKiAep zUez*^)mCT&hY|XK@HNZ`M~6qZSN#WF)O@xvkNHM*G!>9m$@VDptCVBsepW8Vg-aj{ z&?e;uIDi2)km3^ophjP+#(8P-Fy{uyp9%=j7(%qbAu%(+3UtL;jwahz;~%tydDy}n z^dRMUL{@C>hy3Adzx+FzVn|ZT;rU7;N>^tDFh;}S<4!h2U;XFzo^h`M{QHeWf$trp zMnPp&Nlp2dQb~Bdlvu7t;LOASX40jfNBf&;Etk7*P&XEi=UO|cPUqrJ(4aJqajv}m z&mfWqI{MAX>Oy7zEz#;2_$pS$^3R;NqMGII0pyCJ0VY93#baF{(j?MkX-Xqpyg8q?Z zvz{ECT&^X$`*Yj2C(q(!ShRX3uZi=cTRvbO4DZIX!{1bWk#F_$+&77wC7ONCO23)y zbg720wAAsOp!Wwcg4>LUH2}ka$xOatjul=fv$A1{I!nihDH;zk8n0WNSEGc0Nz>ce z+6w~B;EMd((4m508^>e_vUY*nGkq{Z+6(p=ZJc#Y>hb)(PQcK@M<_C_Jol;F* zal?$#Md=+WWE|75-&)|F#6$AU)rK!S^Z(v|0N^v7FFG5q9BNBh7Lg<8! z^8j>FtJHN0>0bDrId4IOc$7VoFCI`r&#@#X1(C(tUr;)IOKy(bu|#}a&lTQUz>FH< zL0}B=H|Oh*%3Va()TUQ3^Ai|%fnXqEjrs*IomcR!zbFtq`Vtmj|N1E;WmA+DV5d{O zFg943bpNUMYm2bk{fg^ zFjlDRhYJYMRE-2o{6+Jxv$f`_fIaq6>WYkL?P=mfybU|wi8i(Q z8kIkaHhKCQwcm@@$n=}AhPxrxl$ur=?w9;%IuNyDrOSn0f^{jfi&`1CG#9lV3^Ey; zqbNoE%!h(o3zMYsilF=(l`Wl4VMc-coESZwF7EPU?6=~rfZU|c)Q9i8dO8nk1Z8r>F~0h8-iDqlvZjl*?H=emgUjqAT?D{zMSm?rPV46%)2@|vsGVv8ja zbDVT-&6_-A=moh@U_Q@mj@#@dXQ1^f9A9#s1aBNL(|YOnPO`6B(xt~2_Ev201O>_B zrBb`oEW@(){cP|mw5g<3VEGwrJsyivpVgU)SEMD=Slz~W za{mhw-Th!^(<({DH%a27w@&Ig4VCJ1xqqp@-7^7fNV`z@TaXe{Z=qswq z8JoaZdEW=fSbi!EcFsF0oe)vX+F86pYfdU|Y2+qbUmZbfT#7Bn3~(%Requ_&SthkH z3R)e8X^u_wA}QYxQDGOpPQkcZh0$@XD)`wSD|1WWxqF7-vx;Do&sCs(9^=vqwz7v{ zmW<`wSgus%6po16Qi?0ljGEx-@c5xqU5o>s^l`MoR&u%6jv|Pzzf&v3ldbO-m?-83 zL)QSgFJW}t0pk-zzqOE9pG{-Rr#k6#UZ1Ede_4K~j{mYn&zf&uv*Q&n-IuPV7-qth zI>Ww=-2*zaB@8)To!@|o21u^@oUR2xvw^sAl zF1~o`RGnueS4Yik%gg=iWll7>Uyf39DB?kzz&7dZv=}_ji5Uy=%c?D$;cn}58QyBP zbu2SdIqQ#+f@!1YC#OgKRyTlT!0%QDKp#)B4000DSMEfYZ|_5E%l4p znDsHk{iB01`XI>13s|NtLZ;FfRMKO7{jiPde*(_-?JBb{te9y+FKwV9p)}Q;b&k4d zLE-bB2btwM2Y#7z<<#}fzy&AC4DBowdh<70Q_$ut(e%;SrC9FXIpZ{-$tIR-J#>Ov zm1an?J55CD8LOr>SHCTaYgOkyJjkk4>zd2U^EX$vrO_(}6DRu!_u{syhX`#>_SDsZ zBYf5ri(A+H)`LR8fh2quJ&PMJXrLAF?-kx9LLS2mzOZAR9#HdRy4tJx;|Hz#1IP6_ z!zGw1FSC*Onwuz2o&isS2W9E zONv$Mk>dx{SFK@Qbb7ww%h=4qLnzRLaY>sx`;?=&!tStADK@o5hQ0kaC0!qQ0ytHT zGt28HmDPjGDkPN`3#m^ujbOGu$1i40bExr1^pvmbNW-6k@eJ)&U8h$az-diccyyK= z-R2c7g{SFE4LI{)E;WE}x6{Gfkm+c=;;gmcN6^9CX6YD~svaW;9AER4D=pR$R~ZXy z(S)^NU_WWF;)OAy*eq5r*73_T%l1msR<3^{2>ts*Oai?l{LA&@n6@1?Vy#pGTX9`7 z{ZB_t6JvH6O|H`yr+cefu-!-yKA}c_ipMI6D7K=#c34(|V|g^KnBg_0Wke0f~7-!VV*xw@TZX}-TYQ>-naGwuuBjjR`m#i`F_->e&-C%FHK$fjN(@>3GTB5d(QX3ZYI`V$z zoO5tR>Qa)aX{jbmU&5bsQ(1n9P@`aOec(e>W)6ctH^4nok10qIWw9VOO~PQ>(Nbh?9HzrE(dvYI$|aBqA& zKvSk~Dr-x}Y~!KFCCsO+u-hchG^-epv*lHV-H}c-g$~56j7S7ti*W|)u22uD$kq+q z$PFi~CFlMLp%2`ohv-5BGH#9e)q}n+oA6!)mjS=_6`TwlsW@v}(K3OazYZqQUnNbJ zW9C?g(nMh6ZonyHhD$!pfV&ndy(G$ws5+1ZTk&>CTJd^_JOk`|v#*NTN}kof(D{#s zJMH;be^31S)?!H`D`6YNf{GHHZsF`79=AnIngYE4CHX_zR-og`_p(|O@jlTF~qw*97g_o#B#}14HvE-t0G(Tai>43Ve zzu^K+OC?u;*hxJg^-giaP<_+A3iZ;rNkfwZ_3m?XF>|F_Lli;9ss)5p!~G)7f~SD- zjQ19*W+YB=$U6JZ-(7Nm{`=g7L2OVT6!Kfk_2KiqsO)z`?@wRZN-bH^yGQAgLT_kN z=_}GdE~b8*NtpXI66MgPgJ*qyW60Ga;cCT_A4S!psNKM>eL}4%x)|_zqPCjV%@1c6 z_EfB+W?`*`UjvP|0>7a`FqKsq%(aL23Ih*$4 zkG6Bai7Fld=kl~3wy=9wV2_^BW;WL}W!kDmhx-^-d@IE0sl%#rOmX@`J?Y6;4g572 zZ~Sd}l;CY<)%E++jn;S2Iq``i$WK1~gF_@bpRKsjcVM^g+kad@bRh!y^>(d4Uj)&y zmP2GMTdZfHWi?C~DakXx)Saj_k(nm0=w4)aChDrEWno3%bTvJam$U;=F%6cgz&O>s>Mz*PwV+0HOGgEu$!Vr^W!fI8VQa`XVh~A z;=T($X7~lczoo*FRez{{N*CsqXk2)q-%+Ap8FVGG3K(ghtg@&!UB`7NvfK??-O{o( zRc*4UY}Offz;q1K{)+Cxpqi4mC$)Bu%m?ud+`gjjUO(6B?t%v`SW+VHO{#X})mu{3 zj7?84ll17(je7vK$6U0bVHjL>KO8f^liHezl*3Oa3i|0OW&`CZ5s=cr*sT!mJJUK* z!9o(#DVfSG6Ba-JzFt0T{F0;_%sgj*RfltQ^b{Z|7U1L7C8^q0WZ5urK7DbEN&1&5 zYQ|ml-ehoH^fh|WdEQVY+56p zVGu*dHXNvL`k8op@j-j>_9CpxSM}?SYwJWzow}=Zd|fK=rZeEJZDNh9B;*2{)Ca*0 z_L75P+byC!MaH30B8XVWjHUbNW77*_PUv|P8ZJ3cl!Jeu$Bj}9JBidE8>vOKS^{$e_> zhvmL*%UkkPGK~{t+0_-bz9b}3XqIv57=`w6PWM6yC?F1o`;hoH3{#ga>H5Yx z*9S?ZZLV8?3Cp@VkD+2<>7`iFpKgGMel_2dzG`&*!wt#}v8J^qlv#f-PB87|qTlI7 zMr!Gz36LdYfk;!|=&(pr*`JoXxMFL2{q_SL2&VEY-x1xCRVGn4NyDH??x^{KHh(=? zyHUfosX7kSPiM>}@E@?a3NgD1VQ+>|0ziNQq1ZJLXAO$21=+@qWO_@apl4>vJ~Rvx zqu)f2p?8I^_ouxO+-?ZgAhNx-=r3oot{o^kN#Kn`POT4J6t?r|2QAlL`nt&!mgq-*$+YI&&&}z!Kf`^EHi>;U zKKR!8ZF*&OJal|~HR-71;Uzhdk0C=PpwSluxorF+ALsWMb1QR*Ohsb4DhfNJ45vq*Zu4n!c~CB5I~ zr&rpVhb9)lj$)AS2X!~!PaUv-5I?;sJP8$-q1+`MNIb)bPu6W9Ra~EnpF`c(Prwjp zrYcqiUF5qwfmsRiS@u7gF?m+yCrv1OjG~XFe?>@Hhn=tBIT>tXY_1|KBJPa*DRwve z^juV`NCaW|O#$ae`>B!|P~MtpH6O<}oB5U3{MmaJ_*4M6=ijAZo%~R%uABu^&H2Y| z{1&XHZ}a}NlbWr@fW|^!W1t~z#B2vXFO*GeBpYiGuk^Rg|6%SegW`y~Zs7pIHF(fK za1HK~;2s7IPH=aZ-~@NK;LhMK6Ck*|GkEZUAcKFCJnvI=@BQ=rxj$~zI@R4ZQ`KFk z`<%1S+H3C}VIN1{DD-;M2c0xicZq+aci@7MF;BP1*FNF0O={$TkReaE)%R1wCyySJ zy+;T8&VOvs_J&Md22py|`w@!E&`wH>^g8Y?7Mt}1!JflsxTNI=fri@#4chm+qvF>7 zvweCC*a~07Sj?Vk8>7OJJ>w;yVc@Kw9^>qx{z8&%a?n5>J#Vat6Pf4dbH2ZCr46Y%oGC^B{2F6}wypyNB$9y+G3+>(@Q0HAz=C zax=hU=6fCn@{9Apv{zX?Lfh;J-w>g=M%bRu3B3oDj3pB+`c}U@4J#$URuA(!Y}*+Q zrjU#nF^nN8_5Rfff(;TP-UGq!eWVk;6=+{s3lEGpG;6%19&Vy{uFsoozAgPIeReLM-Fknt67)X=#0ZJo5=KXi zlaKWiDd8KS_q@FF|MnJ&6@SM8v2zhef&7K%o>O#GNukZMS849jK0KIAbp$#*^av{-0PZl`J> z?(UT@l6QKlZm&XX0e>B1j_O_5JspizJ2g|YCKfB0ZceU~mO`kk)Ul z8qIFKqAW9)pSS9cXFKfBtznuq!^<{iw$_F!`3((TYHutKgLW82}KpM0|3+& zJZV*j+d${{Pe(s4YVgNRbcXsLrZxU_OdX#KnacTZ2g%<8p4amHf9?gF6U#IH7!H;P zHo0>OK-(t&ST6&n1@XF~2^`-tgE^JYIeD2z`S&7Ixwf3`JRIqS8VOcrpuvupZA&%W zMYAgu1t%_b@eSP)9+@-41*Lj7^(3+u!OL`F7N?k}dxB?w5m~$;ydRaVA~-oE|9O#H*LgFUkq3N`E7%k>2K)9SZ=I-d9W&II$J1(=>v>JJ1Q$RWpX zOSyQs#tDDgATFY83=JvYzYV7=UD+Y>d$4abtebeU#_4o#d+9lhx~Dj4(O6SpCwzuh zmUNj(IQfiRlE*^HV?9aq@jjKldEdNovkeJiMs% zA|rS`;j9AQz8bX-tGRgJlBLf0m!XLe+joa05|3CE7mImLJ?K9zQBp!fG>z3N^__7) zi^9K5#<@@gHv~)yz@zoAtaHXR{3wHwI!UUAy*xpDoR@1Q+ke@5`_z>PN(6sBekwne zlb$rXEdFXoZ&yA96CjJUr1Ek>t*thc^eZe`lSu*{ZO zk`BCFXVbc~53lrX>C@<5-D282bxb*TZyoUv(%b7;Kk>gG8FML9RRc6^b-ftC^;8yP zu*R%cVS7C7xi^@99GTBMWxFF!&FeJk;P6Y5dj}{$=-+o{UZ>6O(MLM!Hy2m-mBYKT zXk6u4RlU-@-h~#>+41z$=fLV$;02Kq|1XqPv!n~F3Hq#a$!oQ+h}%27JVf7Eh~C{i zh7dmRs}3uwXW)2VMMRLBKX z@~sXA>^hKK1qUI6pD1bYhy<@xZtsizH#a7WFqDVKsz)!8o|5@&dg_Y>027NNT{nAF z%*~`eg_dvC0*BQhXyrz|*RaQ1Ha37mvOy%SA~34eto@1Rh2==bA2UgTFbO{i7mJ`G zD9?}3Gl`gs+==7K0SN^WAs8|V=U5@lvXq#YECU=DIh#MQrVUYs_WEK#owi=j>Y<*8 z!*d;|d>{9h{KqJag+d;Ffzsd&k$eSe+vpUoMa>?vJh1Kfj&5)&S0$?KvFqAJXpU~; z%T^_%*Mn3ImRA4|#DljmEV(bCXrB!a6xMN1u8wL}Ijc0PQg4>M;DHpW|}NZtj4WrE)0cD?oOP#?#_txZ@VA>?eEwHubv*Gj+pUeGh`~*9fZL(as}GQ+@co(*`~0k zi)3robA9rUn@?Wp*CH?JQO4s6yrXp%m){LYM%f|_a)<=XDWq}~lUMEu`W-uaEwg_y z*m7tdZCPaA6ZMsk>978RO*@q(v3aJix#02TZj)f|n^y9ReqGafWVOan^NoJ9$hmVQ z-4uFt^c1+6Z}BkAGK_JUTETG!z?po9hw+&vm2~HoJsTzW`U}A`FAjr#qTX}Zi$n7zf~3QU`8uC?>^dnB@~_<72cZV{$fbVqbK&_wd0&eHZnJIdW}` z=0Fl$u&h|}1*gVX?^h8Y7lW9(RM$v5>CyIqQiBF}log}e-#z&T-;*$3AN%jt>lB|Y zj+Uy5g?5r){Lvh3%>$BU0ymWyyFYEzO5_Bicc6AtmtsI$YD4!Knd0@8d8L<6^DWxK z9J96>&`7E46ZbXR^c-_;c%2*jFYS5@eDujbZn)}1*Ea=*rz6|Wbd;__3H!2|;6cAJ zeTqwKLj$G16ip%jGV@W}%x_eN%sn)DYjt|#@-O4u5hgoM*(O*6qgVM}E^^Tmdm59Z zEvl+Py0Wxdf26-4oA8_EDnBL0=u)B>_USb4d(B2=o4#()=qc5@?a;}xH??b5Z9E(} z7!L~YPwq*Lu!&Rat#vm$o{z65Rq#9gGewf}*{99c5KFk{P-tyR8Ab9^it7ib1x_BH zS9{F0cn_x`8=*^=#;E2-Af^^7qDiCkJTL64!t{ubbb9udh#-pv!!M_PlWPHjrqFoKI^EqO`LMCw{6M%`*wU)y6Xny?Qj|s0nc$RS<}a8c zwpqDSXGSRsMxs1&h1`7w282H6rl4qHBWem!T=d?S%!}O*tp1FvTSV3D124;1 zOOpzdUrIwiah)FH-L|X8t-+0+er%k#?b-zr_t}?;j(7W;^kU(ShLD%o;}fJuC%p3w za{3RaJFeKUxAo5mu%yk#a(M8nG*@0XUQ}!z1ghK8e>zaISDuUXAHdRd?M^3+T{sRCH2nv|BFE>|S9lnD)lKz7{>4y%@f@?`{)P6qsE9sTl&%_}CSG zi_a_y7;iV5B$N#zJOS$;84~Z5U*P^RQyxnzp6TgCVE=(Vq9E`?bY0x!bTG5R&=h$@ zKH6*M#9g@esJQa_#%S;zokfJHEY;)|PF56y#8df#kV|UTeM^Dh=8Z2iawVGSr* zFjrYJ;;~El^ZH&?NM3{%H-kP6Y8civf$DnqHnJXDTeioU;jBJ?==6^ zA;3hj{uH~cIUHG56_P@(XF!>dL_83D5PQVy|I6+%a#a%1ewE5b`>#w4No<=Pp8eG` zCqygYg=DEJG$Dq1c(?>Lc7pIeZaQ_pq{%DNAkST%@_1mO4Ay+XJqiV*UxeOTPp8zOB_(Y zA$h_>E?|CH6(mtiXx?gw1?apXAS=)Uq2(2Q02jz5@Bl6k`%!BQDl(>djOR|{@kY4e zwI?HF6V4E>6QlLj+I965gCe%AUP{gP$%Du{?>B7Lyy2|NveC5(#K!MA>VsR(r&+LL zwl6geXShxGpJP?GjDbsyGAiDb0yMmFOW8)WSU^FHLROD`d9TraW#XVO$t-?Wy?UBf zwhR4K&0j+P`V;HNsdVP+3h*!PCmlko59Qq?VP_ziRRt66BVtQZ~)R%Se?hp-niX(xa|O?qkkI1K_+7`RH)gyq|vHGWLgd{|@($@9^_q3_U+m zWq4EbRW3+ThSimNu@iIhxWO&XAxaDo0p`ZIv&uuQ1n_{zOcO&uu4}T3>9)uw$ZZqV z&a0Vf@%fNvtoUMl!-LD`dmLNwN@+B+JsSccs}GiD`y*7^9hHRMPPsOd?{uE5P-& zp)O#_mgQYHJpYS>)Hi6wQbEzx{ z+yKn7#r3U*39n#o+GRo0dF_Sc1axB8>T1euIKg?FqCsY;=k(oUi3O|64;ed7D)pE$ zVxMHuLmOr{Ha?esz#dMI-#%)paV0ZF;21*s8ee_;L;L(A$8xa5qXuyW(L<~auRou5xk(hCXw3y<=%P2%HX(H}1*=gUl2 zQ6T1U!MoGXpziYR&gnai2nBjlURTO-Fb~;awBzf?D`j9h{msIWzIc zt~DRZ8$aZ3*2R^0zq7%qwsmAZSgcmce-SX{4MobQ-8_nWwn1U@Qk}4#ucxNO{0Z+8 zb2HUPGxJyy_mj>~m}a#j;ubFJt|sCNE%sNo*V?cJg-1~AToCJnh~_tsUF8k0u31x+ zXLL`@B$Bvd$2dq@~|p z2yh(lT&uZPBplEz z6%L|v29AYzJ*6E~o|?`SEGlGQ48falJ;=7PYq)=YWI8}VoM z*nY*DX#B@mtjwH~ife7;7!x5ShoT|HTb%AO>HLxdW3RcS4Mw6)Jj2=7p(dN$-W$rZ zjSN)QQ}c(@b5^evuaBm;Qj97ZEmIfo(x*FfoX5UHTg>(C;l$cz*ge~w$NURIh0Mg> z)CnkjqwWGKZ^AJg&l}C65uGO&3tE>XOtd%Edc!e4APOy$Zw#M7ln+nvvnFC;KC6JZ zz=igsh2`R;zC1w@pwP_eqVuU+ooJxLXnwK3%a&rG9UZc!pfK>=ZQxdDg`M2epAVS1 z<=1zewacyxg=^PyzKvr=xZXb%m{o>3n&7p-}KvO}*bnW0aldqVjY7 z_P=%qJN~zw8Q@bz$-11w2!{iqx;O)8iizYAH)rVL z+9~9tmM}shEa3AHg%425hGX>%46z2nx9qp1^UDtNl!>|#p+2PwMACI29{fL9_6N4> z6U*)T^==)e$L`J3EiUMtlos9vC44D6o{EsHvVsYBRv}y!w5UKWw1O%6B)&7dS&FaA!gMQJ^jm4|pE5`D!Bp=Q*wn z!uN4s2-JeG>9tg54N5YtQtEKO^olQkNBq|B+XMQVxS^4fe<05t;`A<&`{kj*Z1z}W z8RMar`^en;x-a%r&(sijBQ;XsN%G-vZGHwqsqgp+M7d4gG4f4>XXWLMd4ZvG-mQZD zM$azc?Pw0?l|aV(d<6cc8hP@aJ4_$IM|Rv)AX~nNHr%Fh=r()$iUN<)mn!y9q^~r+WrirU&+ol)g)0XASt51=j!L^W z^xfmL13lV{c|F8Mbqh#Al`X0RT?HM$z0g8_!7TeM1)J{&@L65k{pLV^CsIeQp)n+T zIMHk2t#dyWemG7Q1I9;PhVV^<7kUU~K-R*??p)kwhxohKd-=9v2*PlloRGJm|8+G7 z_q={i+|YYo=D1==Jg%b)BdUF7GkVgmML)v^-f8$e{3+1)%^zm#o-$3V8;XQlC+VN) z;?xkWf%strhguM0U%w1Z1k5^+@noA7E(ukP+RIRg4PMYMW`42s6I<%%sCeI#{l{D2 z;M#fOcrS5rlopt#V8EW%$z*yPztkGuzu(-6r{sNE*d4nvJp4OEMrdoAYphVj!1II8 z*a^NsF11A|N}VD{9f;^;JY!Vf{7PUPCFUuXq^EG;yiD%nJlKt!tp1FoEs|iHNfX9o zXXvD-a?wgI`;2hk;tbDQkLb;=ER|V(=gE%vLY-4ui4XHiuZjpi%wM(Ul0M6%?7tvG z--2U6y4N>_YP6Rc^VZEPdp=S&FBjw4SSw~Kx@A>&1G@ZwT246C29iGg^iAWbE*Su8 zrjC$TC{!Vt;biyo5}D48{T{LfiTuJfI7#Warnl3IBiPu}7+E)#ihkU+-o~=LCRP_`QlE0p{ZU_ZKmpwRAYO0^L6q6@{sf6y>dbzokfYj^0~TztH&%%tJC|(8Mo*ClqfpvR5^$PjyGfj5~C%U4O1^&&6vJ5Wa=<;Y5UAs;^*YX1*QZGSO1D^+UM%#Gbcj$6m1B%-;n z2ljN?o|Wd=&&y4ZUWcu}#$r%jvm5M{JAV8=9U1vRz%xARwGh-xK+nd`@2-8 zi&9Xy3ce`Z62DXbzK;HOl(;$T<1+&E$qXzczJD99%=JrF__Y;Gzb5Lcw1zmDIa!iR zq3Ocj6u?=%P9(y!bX*G*G|l%-bH;q~O|}1?jBej^i>O*DURBxi!y(@GzAKk*rCqng zcWOrjdtPssjX+Ti_g-;jhWDD+NrH!bA#V97VP5I38pR-RqH(%0hS!BVu@_J z|GsNJPnG+)&HeanXRL2JcE; zhv_kW8o$FL12);n_XYnVOpsO-9ZCka2;_sC3<(k>Z++{@3%MB{g9R&bu$tyADpWr>rQPrCD;*w)Tqh_tjlXMf3X|E-Zs>OhQ4VKD9vGVLI?d<nww7wS#Nxob7rCMw(GcnKwUbn=9k9tz_XZB>OJ)k6qTY!GyPsk#dt4 zImDvC`}#x&yN}f;92*ImOQJpahmh+9+QNOct5RNX<~@qdZp2U5?$;CE9N{Lr{tJ3i ztcu&1iybZ^W+$=p;!VoPQ_S-uhM^^f;n7Xx?@cZDdIzK#`qTDKsj(Q6v##)?G%x+fi zA$6rjnN@TDZt{VKWvNjOPyp$*!{?aGTSN&WvyrIh1?}qhlJ-~5vdd{IT<86YrVK}} zpAxFdZ9IA z1S9-~BCLY+yz~??v;`U3+=NQfct%?O?G}ydEEEcZxDl4Z`|%@^x+WQ>x(MZ_+=Oc9 ziv4&IVSo!uT^0g|C|I^o+5)*0WCDE?#+1Qkb4+tw71t)Jh}_UL2Bq+Bb1RsHo9`ZG}2B|<(p{rNOB^Ym<%Vb z2Qo{A=giGW|jfl@$xddN!2yHMMcT%2esXE=(H&+XTF6@KBXJT zRw_cmqKSa_O5yrS1M1In??4&`c7f~%k(I19ouc7l2^f!Ldt!n`va~uTHLb~e8YZeT za{X3%6bk$RO8Rd?ht^g!#g7^?n6NIG2`#U3|Ex~UQgy)Iv<7a`t(ApcrN1Wa z2Dz5tVdJ!Qe7PQ8OY%%_x(S8^;IP#O15dUX5bIPuV{V4NO4ikpNIi;gqqj;!P^u?b zjH^7E6E?WJ*#V#|^}-8(NtxLx8Mv3yH@Q?{h*1B4RQ$uQrn} zz}S8wx}SMXRjxjg@RN*Z;&)hmA^<*+) ztOUu{n|hKj z!8tk{kRNyWyIOtn&3liz1aA`e&*W{z$!}a5sWN>OP070DB3GoxcxDv=)^l66w=~7i zPE9(Aa;Dj|`HxKV9<3v}(n>XL`S|0bQaiD^aYZ^g4UaVQgf=c?w#7sATB7w5g>p;@ zj;YoVG#%sR1-V^TQDO}NA#4$1|8r92^+Yp=>DN{IMpni8dZ8^hXn2t7prfMNFLuObxx)W7tpq{~=Cf!m_ zQ8NFfLOyaVR*mV6QriiW93wqgC0@Qsuo^YSSV!LvnN^nAa6&asUjEL7O;;A+v=~h) z$GFKf-`Y7x%qkE20BG~28@cygmQZzKtPA0S6_}(~(X*YVS;8c=U^C?ahfNNa`5kA( zK)XBum50GvuY#sn8ZP$k!S#bnrt4U1ap6yvj6MlXK%n7od68<>R%w?bzme2dUxCCC z{?&MSjpRo%848nWqw!f)1DfKK{yZF*y}X#H&XnN}4W%izK2(v_65P^BkXM`hh=-3= zZuCBaOFz(MJ3a3mV`iSm9IxCj9ddW-c=>j7tnM(mTY2tSaz2?ty(`ZqZCtSNNLJBFup^c;d(-kQ$lo)d53%{%E_F80SCp5EE z?RfVUwZM%0!j+Ae!&c^_#(q}0!ny8MVu|V>R;*YEN{6`@Ba<&lQ_Lct7-0pNOeg~O zHIs8(qSp}^4`efof^rCz8FeU~<)$$_*UbEOeny5@0%I%+s)wU1?U0XGYufBGRg12X zWsVRWhBEFYxtCB6Vwovis*jKW){nna zo+kldI>n-Vhlj~qBCz64w{){~q)2ov@iu%i8C6(x(N>*~KJ26(Njxoa}L!giCZ;s z*)-Fy-CAdw`BX(A7Oyb#@Et1;y^*)_LY>@+@(fSTJ*x8sCTy(nk%Q!2LUN2I+uDWi z${Sro1>*t1svdHt1*#T4MNi_W7RN)Mv2v=LuT_2%$X2lK>HI7t2iLXQaLWLOlSk9u zm%Gk2>C(l^m*nuwk=SU6CUNOIanjW^uU8-qI}LW~g$XBVSDJ*V0CpeRFPBP$J<{?d zY=#;u2UIH>XR@P(I%N{&Rh7vBjgve_zVA=dmD+8Uqi>2O^@~Z~i_xD|*byWhCF>I= z3BTHV-?1UPvzctN5wd^wRT=w>TtX>0U2Ukp50;>>HR!1ub#P4LU5eu=-uUYd0B3B5 zcw#}5B5c|Yo~5oaNah`#wihi`7oIP+DSfA5=73u4ri7Ls_0_3zr zkYv07Y~!fDm%Lh&GO$&Bl)f}W&Exn-lFG0m zkeFsyvx!Q~Ocg_QdB=-EK@A9 zrCmqIv1F`?zLtmoTc&d~NS3MmX!>rz$Y6qXp2X$Oxw{VI+oC8ERqb%MH0#e7|h zn%8cl>>=b_jw!vsRbEwWx7M(6ljbaQPb)XOez(R;KrkmWvcp}p1xeIvj!{a87ZB@Z z2fI7)66Vc2f+zE|0i3J>?l@wMgqkn^Z0s5yjaIBFVwR zRKs}-k} zT3~ULGLMcd_X1G;1C{(iCut7{agrMHVZ8ijKfdfH%^HqsF$SBNvXkLJWrmnop1I%Z zQ|HsHC@~7u1lnz$eMu*)X{5yoT1m2^P0 z>(^Jex6!mIKQ8TEI_p>=!0N6>6S>erb=%+_x#FtX=y3UI5$j#_g68P=QW}epn4ef* z%u=Sk;}{9ne3Pxow1k&@))rb%tVWYZN}JN$Z5da9L8soM%qxg4-Ux6{H?2+2c!j~eBBHX}pn;7LX^{^Y1b2xugC;@meFg)-Z;v+9a z2y_nLgZ)Sa83g6QQ$7blR6&FAd9Q>KJxL(0;J2Xv(~-{p+5p3s3dW!RM_=bi$dA2- zx`wHTR0DqtXNc)b4#5QR!EIvrGDGY@9-a>z2HCxLB|1kul-4&0$^59Fh~OA6JQAMj|g=G8-roO56nj_ zNC)T~;Ty^$2Lwh`^`P8i`?5e#L23b|a4N{TaKh++IT=TEM|ge&VIofo$S3eG5D~l~ zhA$(;43vgo5%>p`16l`}ftegBA@iU`xXo9-c#v^W3;ZUMFEZpd@Eoq25=sT8gnuFS zB!?t{R1n0FI}tr`{sy-|6hOdNJy^mRkIdkfz)d)RBB&o2J5UVi86OHs6MqSeLllMc zM1ydH4?$c37I1tBlQ7SP@+*sg1Ncb<1C-AHO>4p8NYRSdO4^E{hj@n2O#&4JlLk1z zcfW;df>#61UpOg-bzi*GrY!a z(&D(^ygE;EVYiY~BzbBTJQNO{oVaU$6r;wR!qw^c&F39Os9?)9DR7e3ivGiTK)Q9K zdkV&)_K9Dpi2|ZcRjlxgi0_Tu25esHbeOr8Zbzi1u0=HmOLE4N%|SyxlIEaENRpiYtEr zwMzpsz-KoDW-=`tEmDOS0}e%8R2eYSmcJ(gj76r^j_VZ3y7D>7(onIMvTDm95WHYs zthjKSHIQ83N0AYBlWMP1GI`ujP9n!AM0cv&KA2n};;;~-V{oBvjNa+n($Bx>HQ^_4+ zq>iNDxzAxdl0?}3i8pNv9L1cjO424>*xflYG1bQ9Oy#`wpco&vqrO8nOqrvdpAo+$ z`!+I)wq2DQ>der5?$reatmDSoFYamTRb0htn}l2y%N;kZ-?Pdi`>}H2NDZrk+BTv@YXiv^F9VV0cXda7r(a6vP)Gw6@wpEO?pq7~#p|;PM=$$6 zWXJ?s{v6P;xm4-bdxnQO@`27WBR~^kjp4%5y0x1b9uME*kbfU%CDH z=q80omxS6&|9TPK-pIE7z;TN!7Uy456f!WsBgsEu+m=hf!K=YQdUD$Az|8|VnBm~7 zsI5p}{*_5aaHLqLDDh8}MmhLSsq_R}fu-z7<5?aft9vuK89rel}3DfMv0&b^V8l;=$gb*r!LZ{CUO`3w2 zvs|7;Qxwbd%rag-i7hlw%SDh*=s3=q;i&!WV$8p1{o>G+)l4Y$RVK$e6;Q zyg?<+IWt!r_Q(@Z>jXs3JH^1y|HF62eDIg<29Fl85M& zhw#V(p#x`xqyEdn025Bkek%EOIYv7eis+fF8hw6jutj-0DYin~VNIP_xj1s?tO5ku z_<9q&2ceCorF?>(TH-tpbElgWy6C7aWpfmj*W=r`s3yQPUAKp)g3-iWb^o7!s6L!Pu5b5&*g`?_gP|0sq`0b^}2S&79 z)>HJ}X{K+wjveL)7x-6IMypq7SWoy@>;0VZN>n(IW6ME3$^c;bgq60@`(*CrnOEL6 zYIl|XIuaR|y5uGro)xTv`{%XhB^bH0FOR-cnmk{O)&5S&!D}a~ z=(%Y;04sapo2+1Ahwb4_@7$_Ykv|lb?IWdwt&APguu;*us8D0rtX^|R-hFd@73_2O zvrEs`r)}v*zV0;T>nd~3FM~stn@<*XX+lw5df7h9N7E9EoNQ@>lqrMD3#W*>Ekw5K z2DNTJKmT2%9ow-lt{T*|#49yW8_;w{S~bz!BmTtRE#IW1>wMj+K1!SpTzCN`Xm8Y4%8oM@(UnT?ZW$UZp3 z8Ub)fU3d%6*3+eUf=z5@OY4t7bx{ce9huQJ9htH1eM4VJcpU!o?M}$cndcUB0AF7N z0!S#p1EB|{Q>&%IM7`d}H~`PQ$V1UXfSWbtgH8Kgp1-*IXQv>m|B6=*6=LytM`Uc1 zyS-WtbQ-_bKq2)&`-E0X4E(Dr{GEt|t1P0pUGNjCZy_ zEB84Vqxj!PVWn?{)pvOT)vvGLsXgEgBK0iPno-Dz%|8k=jh7#_uuZbN$*BLi(ehq? z)>C=2*%|^vlrbt%A1-4UEdWEIh!|hlBJ*ct=B?j}?ek(_?JIQ>qR-kk{8Ce{X_|4& z*u=xk*y#lT{FSEKGG9XiX1dNCyp0J|hl7w7h2B-#t4l2)CrP#+hSH5G z`?RfzjD*Yr-FmdeWlru9N)%u^sAQwe(f)yL?+=8F!Bp?M(fMs3_vi1})IgP0+nD}~ z_IqKBTeCLvvmTV=eu=ouyWZZu3Pjy~?GW;X(DPb0Um4dep^~sM=DyZ#;$?DVkVUCF zfpgPTA=kAp(c*7?V%^wJ`T$_)_R=fjKZ^)={E+iR*=D2|SWi;ci_bF6|tdD^3(y~c5?Ms@H)0~V*szicb; zl%lFo2CxZzq!r(C;fSgPovldlnm3Z$ael@tPsuxN@?U~Vs1fM+7@U$t-~&PCHi~tV z*M0GKN*zlyXK3Eocgvpq9q`!5{x9FZ(NoI6FYPQNQpB0Zb3VtJqi}4*o1-lIE|tBQ zw83S4w5ALpd;LsXt9qdSIjZ9ap~pwovml+dUro@I42x*hfdpSRL$+|tlaS)r1|}Ng0G&=0y5r2jmwQkZ1MZMe)jGB!9P)$69zo5fVqOgTeoc$ zmC0F0MFI(*lC$E?A5m$&$-PQt-;0lKt2KB4iy`w@5qhOpbm{wb0kPG?l=_@K zowS=&S5tZlZqc#4xIaI<*>FXP4zXg^qB$blThf{5k5;B<5PdH{nq1&#u;Bg6>(WO& zT~o%a!R7xWmr&^GM@9jL=LT_{MrVpaO>1W)#qt3*Nnybd^h=W4H?0YahfepoBra@{ z6hXH5!{391Z%CeP(=6I7_iw*%CLLeZrcdq(3f=xV!>H8FRT1mJ%Xk#uiO<>Odz4{i#D$w5c+jByAr%W)g2MItRONQdY-iZh zE*)QdAk81SN>)Wot=mKKi%gWK#PD(}L?f>SbOD;K22GwWTE~5ml{SIjAN+p}xX{7! z)NZHtZDx(?y4Sf*aj)W%7UT9b^*gX$=qkX<&H^oYlQLAOVS(m_^N!vw-4w%z$Uxi& zzF*(foe_JEjH!WJk_LUvdn9$Ni{I_qq-{rekiCow;>nr6HcZG0<3U-#|1pqeK?lad zgW|#!gGxPNKiCLKXvouP5Mq zK%x*IBD7o3Idj0bKT2DIkIzETClT-q{2B5cESL!nN*VZ4Xb8poUV5n8n+KQs%2ya- z3WfzuAUq%NZoP#({GVI*&CuIi?4B0_h!iY$Q5yUUIfMW-8h{Sc2mRIUl0cYX3e`n~ zZwSyV&?eIJr5LK1Dna)ve?#mZhgTaIzNkb0^K29W7OPvgV$YXoJmP^wtN~t_)Gsl!0ZU9Q?8>stiN`~H>_O>Yv z$307=&04AFlL`x?g+8W>&x(eJ!S^fArpUaO&WVV}u!u_-kb1QcZ_&H+M-94~6OWs? zc-@w+f+JHo2-3%ru?46Jde)C5OaJuE-Wf}EmYQncBxCfg+3*_bM+jsw-em}|OyFPO z8Z}&T>i_x-Np9Xnpk#`gFE$bONgupL^O98R#9oSyix_vscH$?*Tp&gx|JdpBrJ=#v zQTGaMIaa<6`I=4C_K`$NA!8{E0LvblH4NqdD;wHnVlI1AL2*3%oeEH<)gL(L21)BH z*Dli=>|?(Px@k`Ub8-Q5~baJS&@?(PKF;2ONKpiSe>?d*Nd`Mz=Q7*Db2ZU#TP zs#d-8opa4qr|tGf07qX$Ur$6|Me{EM!W!url^$jJHqE$WI4<48br*BC)>%w-SW>`seDRYr7Os#jiG%&4%SR^9Giep<-Apjvf;F(@{tE}_J)V_<*$?{oM ze(P0~BN^{YX#sR*C~KD7M~RmJ)_GhC+l*=eli%DymEke{+PE7TJr;O3tg-!%3eF6x z-|y!VxG?z?(mm#nquSo_s&C|_4`L4Lbd~qN*QnGNF;WB@Kki5Juxfm%n*dGS%+_$O z=UuMUrT1h^VtQTKsVWmayAL!t+mfWt39{0BCMfZ`loJ(p)NlyzMeHrzx%=DYE^}WG z=;Xz__t$3glnl|mb~(3He~mNnnRdWUGgtd!?G4Al42^?};UjrB@R^-^J-_1(Uz_4yJ-+0OJ2i$?EZBou+SH+qMw*9)v#Gp5yzY_y?JAAxV_+ zndV}DDIc%;dZpSSnR<+=E@HDR(_6&sh9-!5Od+a?h>PgzWlHN_>Fc;6XPnC`!^or> z-=QABj{L(;rbUlltscdnAGvesnWHQG&BF9z>seE$n18$Kv0rj>)oWYO@*+(PS}>&FBX0jr@2~tuHyErr z019Z<0&sPC{@bLr`zIEKy~Pia`qd)EF5Jy0JlWvGlk7J-RcFhAYz-Sb!)1TYntViY%|-IqVLr|GWGY* zWHifj+Y${{tDsXSTMi5|!23^o7yGt?6K#tGPhUSY zv-0?k;+?=e5l{E_8b5kKYQ5bmRR=I_W4zg9LFPx@>pYh&AA_ljJZR<(N;?uY2~Q`IMy zL!DVWjPC#Tv6t_+VE$w`{9*9lL8iCEx)O8J6-H(&`-U-@vub{{kEtK8)^z1-}vzKO=Ciz#|ElS5EMz)``)@rHo z%#tZD4NRv-34*0E=Mm@a%5QyH@lC!i$G1!e$+hlZ-S~Ew`YjAH(%C{dW|RBH1kBL1 zv&r%I&zA;>UV!2-M06?b9)HOVxcJlX(plWNgay+KqsW?!czsR7IeaeRBlnwTCB8~` z3%Z{}nM-qsALjO^4GS(FMzXaf5@lhuTW>0>bDl5gAC`|ov`tEJ3#yX~s#}6Jwl@tX zal9n8$L7}B84rxye=U z{&X%Z{uw$OtJ{KYm0W$qUzYtUHmNY5tor3+jhw#k)JpB5*pjR~pCs+6PK3wF7Lp?# z?*`V(^Bo<0u2;l`CJXbGWG+{15gvGWg%&00!z+X(TW`isYhkP2C3l5MP;!{`JQ6S1aZTqzJF ztYu#=-6g%9@vA2nG~EXUo6o{`k&<)8OK(s72EEIZ-WQ=mLGKZg+fep)=UCQG>pW41 zfegJ4PbV7he%sdiZFLH^nbh)`F42ujI}S6t9m!kd%Z?2yRG;$vFfPN4!Eeu^P;*R2 z)Aye6{xg@UkESm(kb-g5a=IU!|XFXEEi znB9AhWa1H4v~x83nECYJy)C=hQV&=8qto`NX-~mQMwcB*tx@vJ!6kc7F>Mb~t%-(I zUU_DjiifkZp1=IkZuOdGXkS2+?%_lNWbXhq5$U^PHWW$+IjMU`d%>gq`JE1)u!0oJ z22`HCw=-S8SIbWQ((yTk#p3LeB#(^WQL2WSe-JF4G6Aryh-1|R;dGPn9nQ{u(=C!n zV5{m422;zuWzYe|Q{Idvr#_bAJ&t$y?W6-~D1HMN71i%5(SbkCXry`iEG0X7un;Fs zU9ScbjPV(W=EjvCXY)M#>h$_%X~hrOQ3%^g1m2VeB4Q}@=tKZXa+9SiY)xbIX3uu| z!lg^(;xGljsJKfpkwW@|dUH`m38}*K#rWi;Fm4x;t*1;<-h( z075p0+U*ZE#Ji7%_osBh-JU4haJ*Hz`3|{cXQBj=rGx&{zUA63GWsC*u53ff2W8}TI5ew`Yc-Ze9;o?pCxvf6ps^$xQUjU)r4}C$VKNtg}UXi`4*-@?k4y0wzb=d(Gi!+X5bg6x;(j zs$|wdH<|!TG&U(BpkGKZC5NX=m=r3G923gw30>htQr@X*%U7FB@%Toj%6 z0f_w4(+N$%^>-GuSfr^)U|M^)RT#Ft$|=U3^Pry|u;r-b`}&GRrHpflZR5w?Cup!= zgH*0?F*@z1@;1);jvVLgFM6dugXSNw4<7@XD|B&36xVG9{P>c6A4RMi-fNKBY&RZ#Id4tw zwz0p&sV)(9Nw^>%(oN1?;@t6z^kfu;TLg73f}|EeK8qkYY%-1Y{AbUKEulrw#_?Ta z4HhXGR?la!eI!!=t*`{RInq&8uadtMK%iw&O`D>a6!E(*E=l%ap=#a>E35q%kNd2| z+o^{yv&GfEg;qvlqnR60g^C#Dk=srh{8DCjhAjlWFyvB0sL-&sig-wGny1l?3DiM>Y9<`^cS5I6j4lPX z0ZrR>B}MU6oJYpAp0W%NKc^19lvvf5D0w`a#cceDAzJXCWn3JpTaUo@j%|?JS2FtZ z6Ju53WuSV!oR7PgKe3>bh|FGnVD@K}D{ns8+aF@d2Y03xD}q7dj{(%#)5p7dnC?-r z-t2E>tfBO}!qm~XqH;}!>CC=EX57cdd1VCN0v~7J?955nxfO6eJkU-LwQ7h&sRZB_ zzcObOTk3K+i?xY46>ig#SMYI=9pW zKbxkc*>XKwhf&vy(rV8sM5LU_h61|300wUQ@fbxn(TxqA^_*3}CPRit`Hty;VF7`erEyFf+kKAs zvZfB>3`L8U*6}eppgkTuNUclPITPqH>$rKmgY2*O`MIO#rAu8>#DI79OYnE?;RDFX?&c)rD8#s)Qk>QXN(>xNV4YOhJ;Ts6{Xyop2(Ksv4o40SJ%kF}y9CDAzbC+7863cH zpgSGGrY`&iAZP{qM`wl@;fkd*p)G)(f-S+rP8>+pLMb7EHmenLr2nJa(}CujZP%1Y zRGz6e@_V+>Z+H^yQ50!IGVDrYIb@y%O!b5>;GomBqikVASFoSgBK-So*SoM%hRZyx zJng=B$7S`hHTW80f3HKbitGG}G76q!#Qok9KppjIunS(YOA@Rywy@u>Mx5Pmc=bRF2&69>r1K+%t74VZx8>sv+5WvPaWzxf^qz#qEh&W)M(I%wO- zyg|`Ken^RSEjXaB7*47N~mp94o5RSU0V|lCoFD>wt=qe<(8%_5Q-ZB(?-maObe4 zUJIGU%?1Oe(XzsB$6$uHkg1Fx61RW$ghS&*OI$PD`0wzTNpT4rWA}7YX5jqR7}ZwksnXy$p{- z=o(4RTD#p&e5xiZnYHDAuHmTM+TC29I64ZWf{jp|2Nmk8JWb#=vZPIZUQH1=OiV1%` zd}9{&Nnr(Hur47jEO=1(nrgEEFs8Kg&?1I!CrZ@wsOrXa>*O&x_+mF3!UfQ?G5S-k zP?OsFWy*1vb`||_ICULg(r}+r(j?k_IPIj%C(9P&+7IJ;L#Ywhr|EmGnpk0q*yqtt z`^gpBmr8p zw9Mh9cOy2^Wk9R6Cq$gpvT5|W`1d2*MV>3XNF~jPwjALh(W|Yu8wT(+^b)Qb#+=q_ ztQxZX^UIf8&8SJu*8I+{4*9KibCK!R>)*ft_@Os+%u95j?^mEN{G1;=r(apj)l+;0 z_uv(_p`#R|SSb_P6zIzw!N_rq1m{vdNt3$}M(vol$9(+Dd2b<@J=nDRWi?=20PrBR zf=*;SC+l@{E)%ji*`(i4PvF<_O92HLwWU#0Aw#g;CD0pj)gwR1X*O?KNSY-xY^e2~cW-p4d_?|ndY zJHo*RGqKM?@oRNwD>3`5pVtO7#@zjeOFaqhxkPE-{vd$q(iJ;`-D1`H^CvzeJm^c^ z$DF<&ntuQ_3v}~>=|AzL^JU412sFYnR1hZ=(W*(H%3*hwchw$)n8dg<9$ zbct}@d^V(D)A)zxv-DI6l9#8)EqT)$xuhF9rC|8xh?v@J5PefnSry!DC4p5ko&9)+ zmDKMsUV`W>yIqkNbKVHIkMDUjcV2=jc6R(dG7U~IgWjuk#8V_euh(>+` z$aJop%D)moC(L zy)dmB3FhUqMNlwI{q>U7x*4M53He3#XNsm@%@hv9mX2Q%VvOGG=%34SIX~36Kb5wM zTOvEZC0%^%s}5X)5o-E4{+Tl*LsHmMa;^|t8>7ACZl+P_&P9yS29^cNx#N62Dkg-t zA?Hf7c_!p{w}WgF(l0L!nx9AZdvphR%lHh3Sa*HwK$!!PBE?Q=x2={5;GT zkA8(hJ?IOC02YXRqCc;_Uwpp}&ims0R&7>=sm5|nr9Lc$qzI>vltCr(Fx$Id#xikd zLM%!8T4r|N0JM)pW5_ASqraT((gZQTB5&uqMrGMxRdwuNO&vczc2|8m$^S3K2?lH( zO$LNVH*;TWHDj*57ymbGF|BbgNeC_f52mvsMN!H&1z)u?wTt(nLZb0;bn;}sWi4E0 zw<+cHQ4A#{2xRyZr-!+I4`f~#`7FWA3tX5ukQq&E7VKykab3e~a!qWmR<=0&$SnrT zapx2<%|x*&c$3Lbcn#Z1IQQ}1pS$|4ZD)IXfV~el;`4VD`viuKSQj|P$iy%IQa~6G zZu3lGGaFXMMpn?{8}4oVuRKC8@sIF2PQBN-5t<&u+R6izU-oLeO!<&Rc-2yIkPTAg zRNUJPnI^sY-)_tGDp~MYm-e-@KlA9!iz|k%yf!xP_(|~Hjo*sx#7T>WXfv3vNZ=i6 ztr|TD=v=2hTF-GT1~`wFpsTikm-JRN)rJ{E7NAYhw>nLOEU@?!s7*RZ+k# z49ktmO}YSIp~gcsqMH{Vb#gKG9~S6p*Wi8xko5RN$hPWpFMtVVqG3HZLa!W9N~&v` zXXimz7HUn)&10it!vctGatq4mYOD zv~wQTou^<~@m|Las}VgW;d32^B=N+Sq=5V=KTwsF0}pm_MtX#ARZnJUNMPwfwMK!p~W4!ln@aReyJX zXy>9x&GRp3hb9k+gSd)ALEY;94OWn+B(?Lk|B{r%mDnE%!UGZN9YJuPqdIDqd9Nqa ziB#iKoZEW65|%P1)?H=9{Y+uubdgj-QY*Cq2*;k7JH}Nc?L3-$?}~scT30W;GcHXJ zk&K|0W|yX*?}?{mXpz@iut9`GJGZ7mM884APjra`j^a2=^U!u98)Y#A0?Q+}?zQ!; zKQbnYNxT){UnjaJct>(7MLfOR@GNb$)?@NiQ^?}Bl7#C?d&B}XvYGzU;AtV+kqEip z17+3Bgpa;X{)i2QXy)S3P!py!2ZO;fN5kl1UfUwELNeoP9me!0&G%jQqU6^eJ+x9#2>U{FAZ7ud-cWx z+LPW~)L$p=CeqmD#Ox(zXI>4|?tJps?ylbhC=tlK?%?Ig&EQ;J9$gJq0Q zwxLWm$>NXizp0JD6$y&uRZwwEucH6eNxaB&mM>=1DK4zBPmBJzeYNC)hG&|NU8_cB zeUxT>rv@;qT^tEDkAtbn08=Ee9A^OTs3b8B&v;(N$QpH4s#9ys|5% z2fM;Q`Njf88ulavDz08uRC)>xFFEslW!SvDG!PmL(M5JvJ<;v`d@!0%hhBs)IJu$R zSm1+L27ZyBb0or%W}-W)PSz&qW7AUTD?Y_jm6PJd^|lyRli=q{vkfq*b`6X#4VYyZ zvTmbp>pq!-^wSoTG@VKq2J*_eAJWAEJN1mGV;7$={~*g>-8J#58~J!)xp>id3% zI2TV9-?p}(UeFyP^Ys&(E*Tf~?Xt z8@?{S)=$SvT$-P4CbfAR^A|9a{nu9-@*Pb9Q~@uqnr@Ylh!}J1i+g6KZbp=N;H$C0 zRzs#Zz4XE)f4>x~*x;QpG?SXRLE&whgZFG;-XS5Js{|;ZuDY=L(r;+}An|H0tF9vb zSSHLXjL$$i>?{6|&6!C&POw(eRL-_ETcuKJb7gYARo|IKw2h@XJGE(lpx>eiDkeek zR4nR)dhoN2&>b$yP~L^jayN=fY!d#WA&_qFGukhO;3u!)4KHMS6(KZ4x#Nsemo)pl ziZy{io1$_;>k5a%rFnD^h+SqWadPihe5r)3N}h}hcujJ2uT@flxq=2T+`O@!qLv~v}#$|uDm zA_B{*vFX$n*AsUko2|1liPl2Yjhf@pvolUHdgsa)0*#U0VOt$ub0OPjh%)KH=HR=*gP7B+*NK2x z+TJ0Zoft*8>O2lFt1s-Ng)7fy!iLwMtbf2)mXk=$!s@=2YtfP@;_&t5t5TFd#cknL z)2?st^&4U`3sls`iS44d@ns$pmV#Tk0$z7L+@C_h%klCjk(~|MHy$+Ce<_|@ODmkEl}u{j0`}~^+>={u}?{SpghT8<(IvU6RU`$fQl0XlVJ_fK_072=#8<1!Y5yS z3+;F*Vu}sANykxBbE}8KxxGD#gB-rW8%(5Yw`>l&c^STJsUM4OZVT0S5o(_Pw)7CE ziR@UT$d&pSK#Ke5wQ_SfR1=m@#`v{nu<|{Itg8B`TVA#Yf2K16VU00#(;8f;RD+;E&STMF0(zpCe zYvnF0wlnRHK=#Xq()z~Pu^PtyB>v0+?nX^({%})srMmQG=007%UFCuUc9jzn#4`-V zHQ)xc@*6g#zOr9B<3I2-GxB`v4Udv)Ticptb^L>Q_3cMm7}TIJG5KG2b_bj%qr_v? z5p1ozwOwNsb{y$Z#!3f9iTs=Y0vGmIQIMD*3njsvD&fWhGJ%HWNnnhzpVKh?c$I4Y zCH|t-_wkXgIY4ch6Tzl3v8q-#1*Hq;6Wv$;`6<9)C1H=LOz*PF+@ zYJ5Y1yq3yP19qH#e^$|-GL}{pUs(qc2g-jetgn9AtBP&gSk<_$M9m8`W%&#!)Dbpq zPC?T{(WsF<<88H|+c84~df*}I9F9Y+NcC?nz*H=ysguONQ-_<$A|i&wQ&ST#n(sz} z7{%treqk0#^gKvC&|d!lWXdsSU{An~Ia-N*zG_YfzLxLOT8f%6R1AG2xIsyp7C2An z(nYQ7=Hf==CWH3caQT$dd1W9kc#yWS2L9eR+`J^~{n3FsSG(oiaq~a8_aJD2s#uV@ zda1kACZnJ`p{}~-#x#s}-Zx=ML@%q!+6M{s6SHzyX2;yVzQ_FrGOLU)b7jqsCEE^} zzp`#D!jk&n^_AGD(=J@7F1Q8CCkNr=8m~b|r|(Dd>|+&ZB&($CTLHr-QKT7BiI_Z@ z88>tVojb1F@X;2`%}bweLasmC6tBR?NbmC`(n3P$662cF%~iuurRuqwU5 zPMeZ9WqNs@^?<2t;Pcu0RYtK%T^fI+?E7j)7GNp1Xkl6_CZ=J28rdJp1KX%@kh0-M zq5oFp{WsvTblLm*f)`S@3c0Q_PO&WYzs9K#{P6^BhqyyRIoC~s7N<%pKL$byiT!x;Aeg-wSN8in&ApN_e{mNeXf%gyfC8 zuX<9sv-j=f2buP=Q}?$7$ZgMRYQO&8P`DAPn0l)F3>v`gW^4KL0)-F8fS4)4<6?%0 zI%o8L(>WBb9^q$_3qmx<*(L|k6^|Yr1K$|Y@p2z~>blMTH>qp%RO%&7kkx)sp@ zZ=Gg^u}$$JZyUpCwW%?= zPN#=FK{{|lN4~W!e{K_ZDu&+eumW_Y)OXzV$=q@#oSIXvPDnPSMwqc-jTz7ayX4FO z>4`h$GNGwrp$iE}n3%H52U$7e>Tt7lsA$~_#f>8N3$-j}MC3m zha~>ABzDe8xXODkT{_JC%?bAtKN5Ks44nBY7d#bR*NO99z5Dk=wm729>&QB=CbrLcO)zLOx)=W&8qj1KA+I0< z5;)I>f>e!VFsLHgPpP?KP=0k|&Rf5(Tn@ zvtX%?e@2(3ZxEfq7P^Y0;6x%kik%plVc;j^EW10&ZZj|4zNMYzQ`otj5P36GyZ_l9 zvFr99=XvHJWwAjH^P8M1k(!IY*iiLI^_{d&%MZ!J54UV#EB*=YA_E5&a>)C~a9!PX zM@cwJRJB?O?v_%*bUO>+1BOp-mf7C4z6=aP5@xgPV4O%VZn?=qV-r#oERb?9NZt2S z+dr1rBBX~VY32Rrouf1EAKnaGygl?;vS)5{vOaZ>DGctfbu=p zugK@kXv0(nOiu>~akbuFy58Q>0Fcw$_fmxypVH^eV&&pH&=jUMz6L9qfBqlQ`==|I z-}}>e;S;S-)~SwnSgArJsY1!JuZU+RuR*enyK_}~uYZcJ;~3G{I;(uU4W7xKyZ0L| zZ(?1%Mw}m_Tppr!=k5Xv-nK#UyP)_;_wtP3R(44Zj=63DT3oVRYoBjI-zc|B^YaInIb@QHC=slG4&t2Bf89gM3J<(=g z|A>M;@6f@A0$?u%-<(L0CZ27;b?&{-sR{TlZ5PCG!j|^l06PL_GOw5RY*k(DI%bmH zL7CfN!joXdf1xGr;W^<5gQg4Haa}jMNAKR0+dTF7{!3Jxb0Lhk37P-t^k{xb=wcCG{gMCIl(w^zhmoh8_kbB%DnMTz2VbLVs9H`+ z-s7AW0q8X8DNDPTd7xF0K)tN>Z?hapb}|0`nkuaOh9@U8UC zJKg+)0m`qf44dWm_1`O$;5a5!1J%#xulDR4AFtark$Q{#Yh#hF_OQX#I%|uN3}ufP zSS2|dQvc+r?3)P`!Vb`MR&%ZfdJjcmm*N~^^X-)Jrz5b{)-YsgACM(xW}@ZaDYmIQ zb#AlvY4rI8!ofh~JWS`eKf73O4M5*ssVGR<&TFg6qUgzJ>OC;>}XGhwm=T^OQPL=Vg4h7XlVI9egcQgD0g&!4+!z**hi;M}QM zL@fAf^yQaODO9k@2>CwE54Y4uG9hZ&mqFiD>s<2a!taWopsEvDr4PNh7|x5w>Hfez z2nyAk(%cAf)A#;>-S-T0qItkE5XrbW+VdCOmwK`2u%=f(!P6Hoxp_R2Xd@Y$kizU~ z^m@@_162V&`h1NI+50giy%M7o6{EotxT(pRJ>NY5?qf?J6jV)`e)Q+gy-{h8E_Y|} zUZBREer)#gc57Q&t`HVR{&Lr~Y`Oc8@>N(@_e8))>Mh(?57QfU>GtJ7N3?Jg1F>}d zh*beRA3wD>Z!r1M!x7~-Qwj3P6l~ZnJv}~_@cecs-QYm3IYXr#Xn@|>Wpvi>CjXPy z0qBFO#_(7|M}qyhm*9hb_(qa4Bd;{b4y`CFQb2PoW4ajc^QF9tztR0;4_;i%;0|X1TK0k;|JHqt`*DezR|i`muG*!~@!^RgJ73peE{GVPs!nzrRs8CArpO zf9|v`OSB#`LF;;i42&;tO*1^Az54&Tf69;C$;A__^8Hw(N9v;YdLslh!Dnqy;85;< zBz`1vPMelOM!exUHg7bD;u`LHt}{47{)n>ywtt)r({BCedY*%a=2!>?X*M3k5r-bp z>AfEmuZF}|Uz`t5B4F3TiMq^c{(NtZ5-d_)<#Y^UN?0yNBs78|U|q3*8%5eEM4&ay<=+g{pY<*P6rk%_nHCSJqa< z;f@1@MiTQxlY*suBnL6}65?d-21}V1DZf5Ohkdhz**w^)$xQGHGlqgcdriw1i{2^r zC@~*BS>~-$AL5|h^o<7Tp$o3LZj79gTYP8OikJ^B4K&}(MQsXKz-yOVVzn@<1hPCS zTI(mqbYE)*QPa#B8-~OU!H|IWB#y*ZBZG_K2I#k%m z8*~{fU@Er1Eco4btoT~D&MuFVV#nA&?l*6&-A?DP2HuVI+TV0)d>&T?LbAKs~<%j3>icn*+8WF=Af>53+LUQI}` zY$HHxczzJ#5&<&OM&<{Ft!NL#xWKZ#&)l_?B9TILmq+51M^YBWm-5s{|B!;zya3U+Q6$f~D#V{w81{K?}#=?wwQ6R}t zEHACqxqIHyK+bV6!+wmS&a1_=MdUx zu6r;_VZO3e4(F_1bv^mH+XP;$(?@P@QZ6Tr`T?Lac9fV6yu1i%rSFjk>kOf-&5>XZlE`5XH-KpzTEQ7qZJN9A=ZpM- ze7dotC`3{-spRYMN!i&L9pu0K;M}J$&XWj8TphByj=~wW1^0^7?awiCR8GhQaSgjf z(Z+JZ%%&w84oPMk>Al?U?N3|Dc7R>_kyjoJQ)|Wij;W9r3vahnR(9~6->mGy+v_PT zf+QzlBmOywd}V-p*!1_jOz|NsC!ti&3KjX^$-92YbUj2l5U+f2v{#hTEdB{6xVJ>h z^5uqO0l6Vr7@sSY<1S0tFtA_8C0OXUU$y5U^Rx;;FH%Jx0^@j_T9R`)J=G2^xlUcN z)WxGf6?l$ny`G2Lu>V4h=krbYwjfxUqTb|pMp|igYJVgVA)PYwe{<24KN;LjM2ZzA zOBW)hF-XyDuqY1Wx#+O(6LxUj9SFhmwcq}3$6buS$Ax3>bFHZidt zQdT|({rQSTrZOp%8h!}encU8t?GTqCC2S_xiX`k(Z)m)MpN`hr#Zd$!Wh~X5eluQu zKhOXbY9990=P&pvBqmxOhtp}eu#Exsf)~#Yws=z4^zDQI~aWuHJakW$@R(gRudZzFBLSlbwJDA?@!1l%b z{6|5O3!IEfyVU$44h%*X6AvY)kcf|`Ncpa#9P8+;G+#)j3FcK0?a+F=EHOqmQF@cb$DG zyVNW{Rt*#|(TZrwYqRB;o+*oho|uCvWk*J-xh+o3|KCV!h%bxE_XqGn6Di>7Wb%E3UGZ<`+kzE^Pz43){UVsaDe8?tafW90F3gdgl-ohK?{2EsH7dPI}jpZXS1_h{Q)YJ$&oaYZk+$b;i@U&Nqt#dqpB$1J- zcC=1VzkU#rh$31aY-znymT%(X|j8NxDPAXC!&?UUl8K36_-x7$wMW>Ba4+=wCPgA-! zHo@Xcm!uB*S@NFx{vcnY`5q|(7a@hKPoa&ks%H3*@k@OXTN zoc!Zt_5KAW_c2Xy0K$%8;srIZAWXtI zB)durlrncT6p68|4wVHQcD;OU=Am|AR{ZSL==!mH_>d-B_lcF^lAv0;$ezjUrkRAN z58YF2Eq@TQWtfL~3>#wMucgC+_E0z8t?gnH!S62;ck7g%49-RuuJXcL*q*hwg70bg z|H5SzR6Ji)+wloD7!_t+-n_X4NoO9W`bZq*Ogy%edPINJ8P8=sL}mfThs)szm7Nf|Ay30{}&i@AZ4|pB^Ni1?MCzKj8tUvZ}F{IB89`Bq=4I4PK)e4&1`O zuEpOf#j@21?lVi<4e3JJZS%I9#43nMme$E5eV&ET9nXmSiy@YuHZD4($I3@v?0E-q z@e_AD%|~^*gJrJ}Nv)-pJFZ83MGbt&DS`_gLj=M^f>b8&v`}Vq8K!;$!abik+HqB3 zoV>M@(HruWYe2zfa@Q;}8Q4>`m2hJ%0;i%d{9 zV79ihP--WIpT;O#rP=yu<>J$kpw+DV=(hXFh06{HX$eKFoop!9FRUv*l7UxXCUt&r zcA)+z>fC$tp*8IP64R*Y1N_qjP z|2dPbX|*a5Azu@AI>06UVI7X-4u3ulzS@~#mRh&A{G;U=?b8+7Hlka~ou7-M>%`hb z6l&;Ge#AAAI0688Q3yY3pE@@WbGt^%Ll%0^xW#v8UI((rTIhdIA^tI;EV1mnWVFj;= zX7jhgQC~vcM=LD4Xmv+@rb<#vF;?fpPpu;$Op+fYhd&tHAoZtZqYw~%R^-F=ga`73 zkg_b%nmJ(2H6k3Xx<#Knl1s+#KcHw=pz3D<48N#~V4k;Vm1&oHYGTg0Xvx0*=4hYv zFM~drtQi!Wr;{AKG|)Rf3dK;ko+| zwWe$wa0I9ZB@G)IYrT0RI}Rf&i_Jxd&yB614hqY431q{aqHMX#-G*XScJJ^S6}1{j zF%j-BnXd2f{43=8uQ50rjmUfYP-R)?%27J#9nOS;ef>VuvF(y{PHNeOW%;9>J+L3Yl-zO3SY%K35e|8fEf%>`m4kDZr>qAV#(i7f{l>0wO@zy7nPq9n)gD?tzu zn|HQ;rJBGa*?s^wfvuZ8C zIMDpu`P4@smSR{>eb`l9d+H;rJ}6(%p#9fkiM5CdCs`s7v~2aUJY%+eh1{x5-MdAj z_t4Gn)cxL9bmT+g%zu)=I6i&OM1^Po{*o{R zBf2KOm~VwW-f0oPK{I-enN~)l^y@Wzmf^)bJ{nNBy32Zv7CTXwu%an^h15@1gSjav zd!Gk<7!T0k@XU+|aBu{Xks~xrM?N>+G>_kVTYZgVOubS8`#L8-A?#iK*cD!*U@>DQ zoDg{V^R)Bg4-bCbUAL*Y{6#=C*T^ay-r$S=+u?7WdB!Fei~ITe_ON_rG^*cW%I?U< zJV0Y#2!ZQTkwPid5hI9-aKF$!&%a_^IVhW)t6^+aJgfa(2J+9!I7_CUW5yi>%@A>d zlHfV?(wj)!4Sc&#(gtP1a|63NzS9y`(*v*{1O5+Te;w7<7j=!oZK1epahD*$-HN-r z7uVwME}^))yA~<#(Be?EcnR+Ac0+&f^W1mbKfZ5_xwCT431mP{)?Rz9x#lL+XYRum zK&tiXjpq8DS74{X>EGbu&RGeZF!yn8@QHLNzT0L*9q3SvYKaAF!oqb|dsKq;LAL^Db!03-O^=SJkpr=(Zw|#zBYXzx;&3Q`Wx72)9DBu5AT2@Q&4Ya1-=H;=*-oM| zZ$8o~BB=wE*+3$?-+XaXL{kTEkg0U1t)|`)m>PKV(PQB%Ze==kqH`a>1hc1*GC|dy z^5EPquC@WO&RNJ%+afh%bcbQFcX>h7~L*T;Z3tYH_jU#P>d55=_AUOdQTh{P4{Cr#s&)=C&@_ zVp+Ol3XgX%JM<8dPiq_LEq}+|&yKVK)nJ&FA&VBDzd>ptK$+7Qp;VK^ncx7VevpAB z@D(-ryeXWV2l4P|Nm*&h|A3u#r?K5F^X#|Ys$&OlU*4cmWbSnu_{Rgy~&SuHR|JSjo3^FVTRcEFUmEJ5jf?Sodtwa&)g_avII zPB@>Mb#9_cl;4fUs&31zyp*I$P@p1gUHRR+#P!K9qpWR@?k*eU1kt}#ltdim=~u^6 z$Fk}@G3Ap0?eT5g_^Im$5W6ykZ+a(8v`pF`3cURtqiS}~#{VWOk= z$G{=p!eF&{@RFd3qpQKUTHuMp1AfW6WMb6d3*wpKXF5bFGhr3&y`Im>N{ZbXWj2T> zH9@BoOK%XZ?MBu1C#ioCL>jow*ULJ~A<{628@u<^BLXuN?SO|p`cx}#*hWu|dz{(h zil0T+klam0DTEIGcm-n!T&^14;xJl*!lj5z)#Fx4x14oeya ztF%fScX0F0)T9hO#1HCRwGZ-{Ig*q=#r)9E`=Um)u@>9@VDo@jh92wckU%1uK%$B) z+XBk6AHHj%POLHhZbZ6ZpwsZ7`<*TJ>+K+Nskc!S_N^D~l$Vs90A;fQrDTf;jS0L) z^;fmY{H+|(VFB1Ce+8H4Rus7rG)M=J;ej*SpEpRYzoBer(sge}=(pa_Tm8d(1eM$W z08$&#T=_wnU;|p%ZsI7`e$O> z`7CMMl#otp0NID@$3)|TY(ezLTdURvg*uc^I&h#sE!a1*;Xr9-A^Z|?8pBomr@M3v{z`MSS5?%C=sRO6!gaV}x^9}N;F$_T9!IUq3 zOC{Y8(3#Mpqn~Xt;Qn{DUinwBH#mqW=q-e-0^P6;qu6!3PkM+jIFqLEpp6ou{|}T4 zc$C6j}Nr6&$Qt5dj-vpEa8a6`BqK1p=F7qbW*b$OCW5-odkJ_UW%i zCyDsBJ@{(`8qW#*C>7nhaer-pn|5nOhuc9V3OMgilUzot=%!E@D*@14Qb7c0M*Z*x z9!M&gNHJnO{Q>M)^o*cn!9e{T;g)X;B8c0(@SbJnFVI}mfvn;7)e`;NK%xRXs>N>! zwi??D-{gMRuArecoYNS*wRFeQ`RTD3_G1hH0KHIj1E{qBd-mKOh!mHiAI8V#)#0KdO-#vcU z9W0#P+DPp!NY&-bs0F1}Lqk?p7;P^nA&sL09TGy6XS$okIO1N!rdqM6_fu|hf zb!HFV>Ps$$yZD;`2GD%QdspSy$5zbxj|^v@*v7xB+8RNl*W;8Bmvj_V6Efxejo0Yz zDJ&P7pfxH(R#<>CXIu0bX+^2?zx(|l*1Jf|qvsd1H9h{Dcv6JiH2BmY=b0|)N}aZ+ zlG(Pl!uqiyZB=vdsHRB$LvP(>9k=HQ})^~0t@pt!eRkh-bw4`!p(2O^APG;3l@;~X z!#~)Zw!-_glK^(E?R&a{=Bx`@XLn=PS5>|G`IT#=g_{8_t(S>4<2D z%1vEj-yf=<4Ecu**<5HW$sp@KBuhd_mm7M>%^yED`>KG3YxBR-{O2ARiu^fhsC+qM z^7*-~UTBc6ju!2#G}qMVaLzHq<{Q^sZi3L@091&2e)*P?uT$#H-P;*)WAf255uii!5u#3C5P0GP2AXm z7^@*)WQN$k(&lDKt*}rxO!fo53xt6P-@kOt@f#@8{=Qr>&e~$l8d#7OMY~Hr(n>ed zim|W!%=RNa%E3a}G#yp3XHMG|q2OfDX_F=ka+4u4 z@h=@PS4nn*A_r{|K9&kHLirA*g0KFO1g4wWY8HFh|A3U{$6~3z&&G{>Mz||=WqckM zMiNG~w6t$R#L*A+g|eOaU;G7Q6eAsC>8E&9$CFnLi(vQ(f9_$t_MFuXO z=XK6fT&EA1`(9TDwi$jQ?9Xsk5Aj9&k}5oYl*yZKric!f#a@(p=j#wH|IEXDY4)?a zp2ux@U%Mjqns3F~iE1cUNa5J8M85*dEtgm6A6mDvGZ5Rjcbh8~rO={}7R9LXrQXL5 z(U}p!`B=I&j`fUa!`Zh3cB^O!%1Pz;Jx}>fK-QMYJ|S{)EL-U7r*C~G%m}f)wEQKI zXEZEj$h;$3>U99W3(Ar}LjtFG2(FSSRai`nye$NDU5d+!n8J5iqH^=DU z3HeX&JM0#UpD^Vi83bH(z1#K`X21FP`wy;|iJ=nyW6-n~I3A?!4NH!GZTIV3T{-Q2 zey%C+4xh<6*Oz!?BTYlg$khgBU4@Y~1xUley)h@a5_?i*%z`W89zg)iHG7IoHxUB< z2JQfx6Otgz5R5+pV%GzH5RkOQm2uS~TH%7s7o-j3>s9F5yxh#S=@A;S$8G3myRfa- z5t{7P-yZG6JMFPQ{vW6#D2(9-qF+`g4)`2Wo@ayZS-*nK2YtldD(NOP)U&E9xOLSX zF)jtX2Ndbo@;nN`+q-aFWsTK6HgNeZ#np}V0*_du^Zz(arZ!qB>a?7tD-T&JY$R9Z zd6+xj_8+prf>n$Vl~Y!<_z*#IaY4!pVlTFbV>Ax3w88dojmrEi%q zz8XIt_P@f+a}e{o`JK*sTr~Ud{#u`2BQ zSsG8fk%RN`(pfDA2X$E`?p>_57H?WRzQGYkf}~AO+Fzk?m}_FSn~w=CznAeAsSLk7A%+9ye%j-))IK2V8dJdK5aRV>bVw>*)z z;oMR`D7STEe5K9^&#a%dlo=vs18WPzn5gA#@XfBidq`H?8hlS_Xx7g~DpH&R0Z4{1 z)QoR|o;#D#AFkgu(vgMSMrNibZ0&0z#!k#(tYZGAjAf~27}*!!>eMvK+7yPm>n-wg zw9AW}yT9-EK6?x;!K>59sh3W9V7MW;2}`Qnw-km81*<$GRk-A6)-})Q0ICC%=Ced- zz9JWy78IMj=Uoc_l0qUPdp!lOBHk%-w{C)Xbt=84l)Ws>8zs}?=xqt zyMnv~X4^{0*;7jB(C-?|H?LLeog?l5d`=InA|DZ{3`Cc%JUR#s(|<+T+xNb7xXSz> z!mCL!{54YB!Zdc~a-Xbw)~ts3f}?YmCviBibs@NO~RG6A<7L>?;fq*stpM>-l%~7P8w_ z&NtR>`8w_p^p3e^C-D72SoHWx`6m}UvUqi_v|gcR4kByP5=q+F8S{cAzZNx%o2BbN zd7RYD%(u-rrqH3d7%54^cfMy@>g7_eD!{u~PMm#|)LtJ^t2E|rhL;2E?(#)JGUZ%K zbB;wt5)}+5%Z1E{6X(psEah3{rMwwT?jsD3seIdaYJXWUY-(o4hldo1wG1%4@`}Im zJ|zSFPU)%~vBWzSZ?{@$bbgW!n#6%wvg?|IZKqbqg-%Z#+ba??9jA$J8&B^P=F`uI z!sGR7etxpI$aFF*<#*Q|n&S=oUZFaEnLeR3;PRP2`>I^(L5eBg4(% z6P`9no2C>w(iRps_TD*5SILZ@EvFzS0ZAsKQ~h@snt2<9iO*kA8ck5ZX~En(QbD^e z2kHnQV2bR(s+T7lc{^VG>bD`g6bM!@?VwTIyW*~_6K{&q){0lPDPzte+Y9y^Pd`8Z z(d5l$7Cc5kRpeTo1I);~yE+Z8eY|F7M;MUDev@Rtz&;Hj-|3ed@JWljBOE+MMq8`! z$OQ+3Vrfs5R?1ssSx9W#Dpd{0D`;!gn9#9X)skJxf%~k*MWeGSz(ndKmwyTtMWaOt zKq_b6^8c6er^Z^ED7)k0G@PXXOjm7hna`A!#*+gAf`_Thm|KgGs8f@Aw-Q*(=m5bL z|9=eRhYlbw`Db{lf$6yi3HRmynRFFaAyt_j3z=axMS!-Ts!YjOnc+rx#`GWMR5P4S zMOCFKv(4oSel2VY@*<_Iy%zA7{G2S4CYYD}Zd10jFNFw?Z>hR}-#?*5jq0O$CdAq< zkvp5q5DPlsES$Znh={5advYeESx`i-D?QbKQL$cQ!Km1$${m{L?+3$6LstXP z#a9EQPBpXH{rWm_L|5opEWN!%`?SUafXBmgo^BKyN^WD@*D$=xYfLX87WK9Z)Uw`z z*?h$pxkJ^#fw(i3@^vJcJtc}~wwwvpv@m@Qi@8IPQI>sSG|-4`hrYgU8qO?q2R);B zRE;*da4{kAxQKmsgmC}oA3j}26|x)lg0ROS@*bMQ&LghMydk_e2$9e?a8=$=f zGBIezT@)c6?Qe<28$`6);dHN0nWqN#mo)V=nJpD-){6|7J#HnA<~5(Wo`8`wF6Fny zhJ`WH&|zfjX!%@A^3QcJ3O|^)39OHPDt5KJ3vGhpv<}CbM*&n3sc4A?NAxWq%zb;M zr8ViwpO+Q)Wm+iUywWnW4QBn3AF^D<3KP;<6S!q<1z+l6QG4HN`Re?|{TsX2Nt9p^ zA#vdKiKw6NZg~@m$6-Jl9@vVnPk|KQ?_Z3!R^1}cGI@w`Nt8k)^F4AGkfUA_wXDd~ z&NK0ngeZs><+#1duR~(l%P5)1U?jYVw|ps>%*gpqZ0@N5{Hii`iid7kaW^O2R||Np zoIrmmH}1kny8{l|(+Szr12ai|dKos}gP7DhCUAG|EsS&gsb8W%{*cH9bWe^9_N9x> zRQEDa8Dnb0cq7D|6Ao^7W7jC@6?gLRg%i7) z_qce&e9{s}g}u)RS=Tv$02U%x(6X#%3~0mM(SYu_R^=2lbnTSfWO*nBo>=rFTFD`v zbVP>znSicbd{JrPVmz%rJ^6GePjA zrXMmyMiDJPQJ)oidY9`YY7#+!--rBpUncDPT+^S!%IedQJL-Sk*;b;)YsC`$kR7Zc z&1R|ekUyS^U(dH(gWJE{p#f|L@-Mry+hEB%kCC3lU7hRxKw=p9nO+H>z6e|$2a;@I z{l;PYl*M^(FyPEYx7V5L#AX?hDI9G17|{&aaf`l-d&uUq8h{j_{@u5KG{=bOz*WXw zF41?pApi2ab?jHe!P>>cg`g9(b#dF{QHly4FEI|L*s`5%^tlfHf(%@+W)9lRnU#5Z zVw#?y^7sW-s~ljTwJAw| zY3*WT`pk~{%<^y8<8vwR5=}kebICvbGPFj;7T2wt=~i38v&-g_>Ok?KhO@0v9klDyOxmd@{BZj*z4yX5=Si{{Tt)DF}YodrSI3zORKod(8=H z5E6$>Qj21$p{|;Wr!CH_Tnqr?pJc+N>-D3~;7T%SPEA@n#(yEzTCrgSa^TsbJ9UW z4Tunl)|-YHmLew3{_V%|B!}3bG?FERj8L%*l6^++xs)M)pPwav(A*c{-WbDmbFcY= zqW@<>{N^kj+l>v*$#<}s-i)8seG!Kft$Gs4w0dMql_Mc)RO; zR9bb`X%stbKNA88{#cdf)ri?3w1#;w9M>Ra-O0hI4m@#gkiu&o@~qZICCQTON6ca4 z_jhq{^7!B2t>YDTD-wjNiXU3!7AikxVLdo)yxs?&g@aH7?gb3J#+&Q)kS(LKOK!lk zTpq+NJ|f$AE7aM&UoY@hDjEqg%w&8nneP{4lq7EA6bEDn>r3nnGk=^mE^?mM1O3h? z(AHWhUQ*t81@)O}Ovm@gI?&@dR|u1#63>i^z}pfzwaG! z?bVc)=CBlbEG{+NzTYP6^TV(}S_om-iJ`N(suqf)%pd$fA}{4b`=#VG!9$b~D$P?` zZ1jRB=%5#v#f!QVT+pef-Gp;v$$0cz=TBi%0ilgJ58QQ9ba`Y4R!A^)FL8L%#I^|? zZfv>UTVXHO_~ahV8`N4TyuuQt?L|GeU2!~%qB_u9;YQa%Bc{=CW&no4ynpJ-U&zBn zm%s1Dvl8kWzy@FHAMCM;FK+f#;EK&57u+h030Q-fuCcr1&bc1w%1f?GUqdb)F-J}n z^_>80_e?U;4?MeSAzXQj_MaP&$K5~NGj?4n%q}bWif(@9N27TYtx+Gg*k)? zn`xLQ(AmK`Q1QxUKV3;Pm+2x%4u)h4E6bptEx)etkh=MDEf|abz%hhdXVK2B%WeCf zIp|sFbM@1%iZDjWD0mvQW8K--=0d*15WIr){y%)`+b_4{5tw5vEp0OjLGFXYY(S^} zAFd#_CT)!hzx>HxBbJ|sE^avFd|_d?XIU=5Rjlx&&cn(hY(8Jz1;$BQ%t=*#!}DhB z^>PogG=hN05?$6-y=o&|KJ_HG3Wj5LX})oWsB(68+Lu0)&X2j%HeM4nrRBwfJafnt zwK6vLs-rYXBXm6KEi9C3B5a^bUvIUHByZ0x(N(=O)cn6BLBv9{(cVyPQ3OAW{h&kr zmL|UV4ByA>Lz_=)XI(U`dty;Xu2W)1`iwft1rcYyL9Md^=zGU|Uz)&4Va&!qzg{8S|;02bG0^F=jt zS4AghE@HF8o#d7GMt=2LLd{{v#dfxTe#~duZ~d_Hz~h`k`G3*ymKgKrK|eUhK3_d^9WmuJZ~^WytYL>ySMrQ$xe0RFJ}{OvtQON zyoJ+|JgdWzJUe7?LIyWv@InSZWC%jWX9xbo5V{G!!>8Kd zkm<8Y3R$3q$GlZuF=P>fmwhVf%%ItGGX+OBHc&8DNu4A=zuvbZT}P5=Je7feg=Pwm ze&#=37HZU8bZKy|T}I5U92L1hMnC^TvHWca$x)JikHjKFG$kLYT8x5NG?MB3uf zJmUXwW?zfbnrZQJAl&#jhGySc2IYA(7L(FgyIX{3DawCUoJU_!DWFRN(tq!niuxZ{ z{eMf3EZzPXMgA?!-ToqDeBlwL^gG$2109g8qB>*==%;($Z5pyLhxjV<{BnAyKW?Gm z(55)3fW0Jr!;F4OObuo^a9?W{<5zf|cua|)dDi2;k==k9+*H?ETNWGh&Wyku@h`r3 zJ<{*XR>U={jvY>A!>2LqU;}xCJS@=;h9~7hqAE>*V9Ar5TDPKxkIMbM+W9WXQxp3f z7dy9>d&S5s71CyhnVMr>iB343k1Mg+>YzP=lDXpBo|?S_(>EoegfxH*{YK*p%1lZg z8F@sTm+`%3*9C~KOyLc*asH?B0YhWF_804}`}4hKhb~L5DWzZ$IIA>GlRUCkgJ1TX zIysDMVxF2$GjoF5IjJ{`NYOwdi$byOn|YQSqc^aZNZmJvGgW~%9#$361;~54@XNPp z@n;$*)+#b>8$r>YU0eYh_kXt?Nk~ej$8J+!cE)H(do401{z=D9(o!|yOw-?QId>Dw zlI~eM_t{D|!JT-@UX_9^uQt;BJA(cfM9RgdwCd!3+LPpI5z`YN*M84br7G_glUZa0 z^@V_&`XaJ-YNGPbN!zsu$Ew2ZQ-3;lj?Mj2?g!JBaDxDT_?glotsm8!N~jKaLP^xF za5|~Jd`~(x2CNUNaNy=jtbb*3>ePa6)|v|)l-b42O#yg;VIU$89_hvg+hi~K56{Gd zw}6*(hK=0v_1C!*NknSLJ^UbBR*Vz!z4I<5Em?46L1>*f>G2yBE>-CDk^j1EYZT&C zNib?f>(t>lksfIk7aB0&Kvd{0a1L|xq+eZ@_QUZ`%hh;KTfHAh#ISwN8r!5}e3tjw zbo*Y(sh*fr`d*#z47iuM9hq zDC!?xdoMwM{8Smkp{{8cim1n@3B=NK+V@>oA0WVZ2%>b6`lO#|f8<(n_w-XXVw-B< z0%PR0c*g6XFOo9j_Q34M*?iGv$W#f1!yvdJx&I19xh~A%nwG^-fR~hZC&Pnbhq&p9 zt&w@EG{YqpljkavE%6N3bc2aGI_zhlhuSSJ`XgEltxUB(-7bGVKEn5~9L3skoCFSq z!y8Bv1A+}mEg9poCoT;(jHFMCAR$Ugj;`KM6?m#}b1Eu*%r~w&5r{I61&&OkKMa=X zgC*ODYXGIfO~x6f(vkS&#J?4qK=*M%EF>2+JEAXPlOGwOu0NKay$YGwlYCNlJbg{I zWk7|e^dW|WE#npSKV_E6<9Tp8VFE8HR6JzOYsJWip z&O2j6ACKftVLD;21gBs>qXH=zn?c4pcG!cBD|8^MR&}fyHsR6gf;2%7q5b~6)T&^g zKyJeKzDQT_Qr>5@BM@(@3F z`y=mvT}V8E=_I<^nNt~U&Z4`?$1pfft7UBUy>~U#)l7U*KjHh}5x%2xc%ZU-pmMqs zl(?h~RIdRFYT|ZR$~INXMps7J5Z~!t_UvZB3NG-UweJM3bD%!ec>Z-Chw6r0(!cCE z&4Bg$-%Azxmw8JZsQ+tJb&fNptrwCs+DjUjIEp!H0M(B2R?#*xHhQW$n>tGzHJ(bF z8L#dohE<7SHPX!>nVCQ_QQ8Y&Ix^ZkkZU=OksJb+{sc|)0nA~t}keXcfSc!S^(lKa=$5Ln=-$M zD#!O0a@?B57uEZsS1W)tXv8a3%^T9_(8>1rLOeC%v}@zctK~S?uzI&$a)1{r;;wm7 z8R5V(6n!P4HrgyI?{&zI|_8>}`2r84R zMyH(iHS2cloh{f<3QeeI~iP9kG-&4Jup3~WFjuPiIDJ?SQz zJ(R|xs&Et0=&HKZHmug(`w!})j8|^c2S_LeLVf0}89i*A{Pxp{YayiT|6zdCvwzdI z@2X^5==(^4Td?>sOw>{|P7?v6HJ8q;T_Y_D7|sQ@Nc>ph-|0*SnI4poNy)&$KaoA~ zVv~>46Q;eH<@2O`-9;=WgNvmy4; zprf@@%xGW$h1stm3#oqim6&N~(7_mh?pW1Sv$Us1ArL+50|oa-2?x-(p1|*vqf!dw zi|@E(F1bJMI3kQ~VrBdSu*a%e5|@^R@{8;50%${3r(AP_Y7$}DV1nWk8&Dz^wP6R^ zh)`yvfbW?ySt@kVevn7V`w+Gu^(fZkbjS^4(opCHo)HA>Q(DAji94aJ{E4*cQqfvt zHWFMjAC%b*f*b*`W`!(kMpFnot`GS zGX`~$!NLtx5}fTyoBvUPo60DA$^x8JouAx#^BU6+t!prC1dz{QE}OO^V~a`Y4VP+&gIi9P$r)Me$=ey)B#-gm3%XR~%is<#tsk+r z1T?lnI8&+QeA*rUVha6{QXQDaq2>NLRb+r8j&VAq$~a5pX>eA~A)cE8Pl|^RG@8ej_iW#0IGeGQdJ9j|1Olh!3G0 z%yo!aLwz8Grhxo*2RLD$YKPB0A`W>{V|{gBKVgpRq$UolZaVF%S1*41?x^sAA;8`y z$p74fSE~$@GvM6o_)*1N$D2Z1nDIA=f3AtSybTAY-e$v#!XrT+F&IEO+WUwwJtOrX zJukA9G43&?lIuLEdnc-U&~oyjGof+sXNbUe34+Pe zYkqNQAJBB)7Dn0b(~sgMo_t)s1*j6TsP)S!TK(XUV~ zMWM0STt?wRujsFT@x#Ts)WpLr9@auyl#;k!u8CdLFZ`yXpEwtKj}(weQZpIsuU&uo z#i%Qo=LKcECBlf3n3Hd61R=Z9qrP}I*7MncF9F&R9fPId!QQptG@__eUcO~%&{-=Q zQ>;_l_@^$#c~Z`nkZQvALn;-(cmDL#Wj%3T@Rm~B&Ns;i5*ilH{+B+##g&%&^)PJXzxQ#?{48 zEq^c;4lK1z3^f}3qDXbqgI^9yOaF+H!0=xg^%PQbg_WZvO5iUkvPAvT{}ab(5<2i8 zi~f@~7C)Z_5ZKu5p(PvJ<(p3d^<_?9T1Z@OeMU1FjXcxVD%?}eoH z+qac^ng?pt5yb2(t3}sV$tJB-RcK%-oZgADdH>sdJ2gJ|&HRyyk`9$mqtqfYuab6; zZUjU&kzM`p=!tw^eO|UD>Sks{M?t&kr~A7H$TuhG;)y?5LM?-hoj^)j%d2WUrzInvT(c$Z0#_G9 zu3Y=yDfzC#Av>uJ7fz0{-PWc0MzDaFx}9?1#A!s5`N&DAO8(wI_ofYpIebNL(0^q8 zyI;y7HCC(1xAChXiMT##x+AH=EWYFSy@D9U2kb&zc3U}g1-vUEzOzE_RW zlHGfEt~>3bX5H#`0*3AV?Ric9XP#36@)f!VH`mxoBJBmfug!veW;MQ{%c+^(IhwsY z37snyE0;ADu@`5(36%zRg17v)*UB1#h6>A{$XA?pGo4Fq01N6G>aE&(`er?_)kx}0 z=RE4jABE0(l;VO{B1`2~`%$P62{isJTNaI#t!zooPN9~E`AKnHiCUuzhQJ(%TIN9v z=btq&HAOMT#z2F>34YS^GA(z z>?hb%D4(=VZQJg}toN*?_|2Agt0qG~B1iYtEcq7WU0SO%u4U{Ld{?&J-JK$R$-Fg+ zb%7cU+ouM{CVw7~4w2X~O8x$~?qWb3s;nsU7li9*x@G{T)UP)}Ww_PFFKQ${`S^3HozojkB zZhpPDwjC<^L=cmdgL(d?z%lZvhQ8iexGN*j)CoqK!*^2nN&KM470L^Cl~~(c>w(;H zQUEL8`@+goRFKjBOMd6AdO+**yMbCO6d&Xbi+iuj_^FBVc&J2|sKt}Hg+W{VJl&uR zjF2X_)SWX-Ru#aH^*T1=#0InTCqL`j9^2D&DY~ybKdD%ath&5(ztm?H>1C*ZjM&Y< z2b$v7eYN+NocotebhR-)*R7Df{$6-anvOIPJ-cEv_6>7TFUJW7roCYmP)6ft)s}48 z`r%~>%-0m9JB19ZfoK%dW@qYVCA;nS);z!6%WwR-43Xbwi*Qz(A5%;O-&+GsLN>|1 ziX9V5izRRiw}w@Hl^2xvWUUq~cKib(rP@=af7_x=Kt?Ox zty{X-f)SNqPl`N{{4|V{{rES06BJ(`k=STV1HH_j@W=JEaHJj5`%SXFBsj!T(;Ns{ zh-Ej9^!g_4_})M088GD6F7S(>^ZbVo=sXFEm}(Qa@36BxR{WJ!ZwzOXcuueJ_?s7; zL0}J%9j|!uqgq#nAfqXp{wqz;BfYm^!NUdmY-((t^~DE}#nHUdi8J!%POokFyw^(h zursjRFvaAng5-%>cz^p^jQUB;b?Yg^mzb`sTOI|$1ybKG!JOU76N-|qj4tv-w)+)$ zKa~CL*qe zd9TPTRHrTH4c=K8iWzP(6);`k{>HtJ`qFwTUI)<%u2|5sr>Q>RfL&yDN{e8|!^N*l zGduP>NOzCVh;L}4JRpk|>uan}~QU@A(e@3k}kos%w>#}E-GwcEU+{#!Nd1H8#|+3XBij)?h^0y3{f2@`UJ1s-Wg5A9Q{J6_@0>EV29SFB(UybbISf6+VS zK9mq9AXJMPT~9}O=Lp@GWkb8=Eg+C;Y{hAr+IjeE<``A!*9)4DdNL!9quMI`14~s^ zS8@~RVy?CP3#(29L7ORG;hvp^NSCM0ccRC)zn8?O&0c|q$2#g)0$cuE=LNV`$oz=X zsTQxHJg??`%Lf^|mg}=akgfq5hfgRW}MscCQ+7P(Ng+rm3+7A5wu6WOhrOzWo z7QKXAFH$K|DOxG~OjB-hZjTkyh_kO7ZD=h66)!J)(hZ@7Z?27Ru9a`Dop&SYUF^yD zr`uLIWH>~095Mz8tzdB+@l;9?{Cp@Qo<85sdZ#==a&VVlNOMQP8RbuNqCPe_0yMvG zXP6<1r?7WCZBG~*>LG>{9WiIreaj}!SQ^RmhR*&L-%lpR<3>HXedM3;Sk-=bukFCu zWgNpJDUpb#Cy|J@uAQ#v7Mu){n2GV1qAIO(r!mj~gxr}0q9N1U!6r)h+j@G76&)p& zY>0z`Fed3k)d=hzVw+FEnGxWMi9fo$F|Zpj5-Sf_d0cQle0Mz<3d!j7Q*QsFu4#@Z zmQ{K3-hN_gXE!Oi5~30FADl-!k2>Jn(q}m7mW+FCaFFtcA)V+pC1tPkMs0X2*J%jmE8 zt71QX-n!Zu~GywmDOFDk31!gsK(g#qFkV-Ocxox*Zp;TF$w8(+L4nc_sE zJ>vTXa2xNsB5BnUOYFP;?pa7?R8HcY7IiW>i40XGjCt|1%GXdj*ybfW%*#?d$e2V01 z@VC~%*iefhoQ=^-+voYrLxX_LGnkC-Rut;NiXd;fi*e>#sSd^x;wU=8 zD_rO#UqF&o7)#JZ490|=zQQ<0EUyB!Th_=Xck(YsOXyfp3Xd%Ows(jQiL1#k%(?pi6?!t z5G@R&a6DV-(nJUT1lqJ(B(-RcL?^OA=3OAYNVf=x-~zUyMi#5(s<^Xdr16Z6|Br;2 z*1(EXCxC6xt>mJFf`u&}{WU9Myi4HYjmd=usSBAc2?{B}dz82TAQ}xK&lI4*NxP=Z zLpOS&49{vz%gGkJ;=MTl&(qmVpuu183L{{hS3xcZ$p?L|4=&P+Vbj{mylGgMn`{Yu z-jhQqU1BfJE>0|H%J}?|$B6X0O|QSa!tD=Z*yZ)owkH@p(UbUVk4C{DmUj?H z_-Y%<3T^z_ZwmH&BBGq>UFD}TzfEUj603O}Zgpg}V<^iB_t#isYaw05TFtbwfG&VqG~-(Fo_h ze`eY5sC;;@7mjxOu91vER4Z^QbV?}z81){fV3d4(S@j(~IL)Rh6TniF{|JYLCFh``aPd6$%oESfBqr zFx1^YQA<{@viJ^~6i54|$U{1j>y-DglTq>xC1_^A7}e+k#gJ*ZGB0wE{O_e5JYkEOYC1j^GiWJLk#%}w*a=|al2xD zNclzHo2~qngtwG$j63RC{9ci`$lM=9w7X;8>PZJo!CmM~acy)4fCaymO_Ro>5M+IIH3=RiYV21Dm4CBRM1(eFKwI3PVKSk6mhnND_8rD>et5UyF41vDLRI+dpCOA%MnonWdszaFqmE z7vE7G$Y*LWU~m<5<`!}uHx1Bk5~r*+!+cTZThE$yg@OeSL^Vb$5CLHFMYo7}e(0B6_9=?Bn36~nmOF@0^t z<5=Z^;AKVIWJkpb+yD2_`eCdx19G(la&@1r_WyfWe*yY&T32@13;|5Jl@elj2o6#; z0|zBm&Q?qdA!s9}1J)m&)ZJkBEPU=AWM@;FzE|CB3Zo-??c4crN7qr-U+RBb(M zdMH*M68zH@<57vKwAT1b!}5_IGAMGy)>!l9s(v?ioQv^JV+D@GZ|~&=gh78~@8pyV zMN^>s!p89}2#-x_^oMoCX%{;TI>2VVDF} zsgy*ub`spFyNtu+qPe?_U_uq=I8keqXLJNK5Sm*g=9lma%34eGuL)lwE#nEhSqd0>@a35TP1}C@- z?oJ>$!QCN*zyx=95AIHY;O_2(!5u=dVEKo<=X~dUcisQ4b=TTORnyZwJ+->4cJ1eR zcE<|DnCv;lvQt7UpLNb~fw|?06+VS^kDoMt+{4 zA#!K$etWw*N8K)H^`o_E3in^uh1;}K!K@I;YhT^3gLd^~(OR5Z|EYcDT~K&)MtF0Z zSjT;&n&(Yfj}6=YHC*Z_Ef*3mk-UgulH&MBL! z29x=A4RSNx`yl_(?B(E#E; zgeNp+`f~j=UQ$f|SwoB^t$3=?`bPJs(khDKbKE5Z!KMUQ8c^GAS3W3~jbiaZpV>iI z&8{^jE{Wpx)a`=1!_fVWOCWmYaP4yIj@=ZYQfSuiOA5SN;c?Rkj-CQQXRG38gFl9q zF>~?JGhl(uFxcqVYArrIa>MciW=wH0y zvP}Tbvq(Vr*GyMz`QDnfv9d&zAX#IJP$CWqz?Fbb5+!)VhYjQE(qn{O%Rm<{@k;ar?{jvTyGg{68Ns`SAk*`@ zf{ERT(@{(2_`no|0)cpJ;d-I-+yd1ovb01RnWA|>TrYKtcoa4<%jaVk3ohi=y0l&k zz`t6bp-~2}w8-uecwGha`}BN}OBfaJntJ!gm>y$wd(S}#AK)!E+aWRsVqSaBk$Tqt z#3Z-JM2=_%kK;taZs0Iv2AK;~YwuZUa}U;_CBdLSg$o)bSiRwN@JcK z)l5r0nS#&5x6A+aG3g$xlc(aPb&XQd{NZ*5YtngU!}iP3=?PDnnW8dHE4WZMX(*ku zt(9*pk6^Z(H6!EDJHh37Tte5Q^iiXn`p=0^1_+~K+FXS7l+KdRV%}k-Y<&)NUKDc1 zrdjX=N02Bof6*q`IT%Uz4!1FsAuUT_hsqKqN}4)zXZ9??M$Lm zwU0%KU1BcJIWZ@Gm?a{ghTT}K2;@*|B!4mhe7bEU{%N_a54d&Jgr8Jv_Qq@*cm2Yh z(sd2GpxuAPkJn3XLvc#B{8ONA+jUCEspFLcIec@tf3KXq!P_<+Hb(LamRLC+FXN32 z426@D*ZCaAHG%|YbB$v%=GxR7mIJ3NgfsV@Y1x6@E>!ro^{eRn!`+r#4*E8e@;^7J zf|5=#_urESRp>b?y5&wsH)K^bv?eM=N#}ppWcdPpg=x@yZul_qgs_>OQ)%qr%-S{ma$RKCLm}U4)e1a@* zS5%$Hugx6zj<_r6n(<%W4V9PP7Xg+)*)nTQOc%1DJkb}x@glS%_cllbaL;j2kQ);u zg8UM+1qvE{CR1;FA_#-44yCPm&#j)#_m7!o^I;Yd#^v>pXjr%UHfkq%KjbC5XdN5% z=p*0GWo4=Svpr(GK0 zapGUz7+;f^GK@!lXfT31g?tm%#r~rf+H`H0tmN_=7$S-@Bx-B|ftv(U$S;^AD@UdV z@viWT-8cta?!)X(!q%n3oAV%->|rKM*1uBIApI3%%x1}b^vgF&Q{ImX7v${bBzhlS z)XpRLR!_E#nJQ&Z%9ejRoa%AWn7>Nmw}N}oj3vug`*1Z6ucWktyLef2oy(3f$rbT-xUgw)GDFlYJkF+3i=Y&Xj55e z1j5YW- z@B}>evq_*7=~J)tmFC1B6klFqFM`j(QS$3r%8^+&O=wxcX2y-xbrV z45qMwG4;?%ezUbvm<0GBahMx7r)|0fN(B&`Jn1?!H!mlayqGb#z8mmC(sCkrEHf%? zSlr%p!kD_p9Q+!a8QTv43odV%LNc`i-~&X!ThB1F(-ufQEMNfuAJtm86KM||*bz9E z4Rf)=AHX+I`aOs+gD(@?R%cHAx8uN=T1EJ!D|GSwqrj}gu@ zvI&LA6?7i^Ri~a(_n^`+hFSM-s~L-?;+7z@3L%=XseNU_MXVHBn83D25h~kF^E(vW7 zQ=NZI(o{#%{aw_&J&$(tyzaWT**_Z#HS@Z?+GZHp&gOLbN&Qs}GQm4jr9Q|dF6fkR65{CHF)lHJ6SVubFD{P3-$ z1R?5I9{(M~bmHnU00(!EJXU}m<>ddIv}Or*P@m<^TiMJPIeMb!jZ+6tVd6+yg@jTa zEvDzO036NeUyZLk?%Jd7*rS4n>1gMbksLKP6_t_MU65je9`Ab~NZ>|*%OncsOVPj{ z!6~AO{EpgXlp8scudL-j#|dtV&!y$kQ&vB-=;B&ylTtzrts}skj?@>VgA)Z&Q4}Z& zfzsR~(;Ll}Dx6azoe;a+7~71;0F73IhN!)HtstDV`b2elhPX@#7ZN$q;X_(2@9eKP zS^=4H!Vz@iQ0|Q@{I?3}*nWS4h%Cu*cbIE{#?(839&QBDo^nt4Omb9?YvurzsjsMp zBGM_JfPT@jeCV6yfL`nYjNWgl=8oWd4+hByO=3;~rEBXZ&r!SRrRvmV;+vwA2h(6a zyE@08`W9?V>S!7}hD;_^-LW_-eZQwSlu(|UOJ}Hg(nRBbB)!RJY648&ETL9Mez9w; z^%y$PeVAwuVTTct&;7Bxcs8>RU9D=2wmW3hq+SbsJ8x*TF#*d}Mpu!mw_w;(qaL zTD4f|KVzSsNnd3w?+DYj8x6J_@xZK<<{Dn8jdxWQyBVqoY%iI$eT~LTNpm&B!HmyFSk=)qYYp>hFOupVmu^swq6RS=iB7+&KFla=@-F|B#E z)IOX9XWXGJd~T?tTsCSg4PBwYj<4a%uYSL)+5a$lVR;?>C(Q5J2E#?6CNm(eau_ z=q+%F)mC6AjypsJO|vvLj-O-|`vJA06uY(Yvx_bK?gG+KCB|I3L+*kbJWrnDL~e1B zscuz9Y3+t0?*Mer5!5$sj3!YU)Q4h&z}MX9MX%6Frw@{-&z`G^{@J$W;K}g~8s_ z=%!|nnd1xK7@Oh<&a0@0vsRs>);OUX)9V+8HETftdG{UM|o*vV(ON|UsLIz zeyIn|iTF~n#~?mu{GVyo@i+XZ_lhc7&Z7FFvdu*<(6?RM(MfK&MVQ2NoGj9D5(`PO z2w~P(3F#lMxrCvYe_`JOtSEU4;U}S;?v!Pk>Z@od9$SZ-2rJbdNv7fb2n7vw(Qr25 zRwl1bbq9vWhxH&JF!`9(b1$g1RZUn80`Ey zga$B(J#hn{8UgeaJnBNKh9_;uw7cNhkwUBN4wC{t!@31!pVfOMyvjCnn ze#L#mwRIZ;1O}%4Z<3d;-tAyDaPLfKTzk$bPGXhNKL*(BU=2O{=blUwU;M&uJTIo% zoiA*vZn=+n*9y8KPIuQFTu>u7tNUD7=5Rb@x2Wd+PG)>l@XemP)!6Y+>Y^Izi-}{r zLsps=JaJwyIUf=CH_??LXMR}3)i}l=PR8e~^e9jw)qBhY5ok1$25tod+h|hdEcuEq zzEeFi&0tCDblZr{5k8+OCwt^ z$wB!tpGjLTAlID*-c&Bz1plRp+z&vz#cY>@7=j8$MWB>`fiSZ+d?q51Kn%nZSN`r? zBAxOtyjHvg1)>dJ#U=py!Hct5Zvs=eoxI>7tYAaH%W%IGsUcJ{EZH z9zCk_8E;xs%~K0kSbQ0^h&JkHp2MhHO7Ye-Q5~2O`S1fX1QVIj7gy!V<$L~X{r9j- zC4vm4eO`(m*ib|TWy+XwK#A}O4RCIR2T9mtL;%neuuHruei!%&dvl614<-*Fe)hTt zVhHYl4ttn1WYVdj0-P_s@B?@vmKxgXiPGg3&m}vd9?$DoK8;0bv9TwXd&#GSsgN^4 z9B{J@bL;hX!<`}UF{fTCt%h&LiiFc%eW~!0ukt-qNC8p#oh!rym zwDV)xyG?PAq5Cy@mo9?IT{QSO;ozROeIvkl5k6~9*rQS`C2FVV2*6*;oY2Kg11mg2 zLJPZ&c`I?rEb1*M7NbFxhCX$=(`QFpeff}zaOH(Z>8}~H=+y#N^$ zr@!gxZ?uUNCJXKlYK?ORBG#0bSYX6Qt^;JcPBOD90= zJ&~Z@Rr>PI_enaFq$pTlF<5RSk6>|C%rj`?3@n-$5_9}(r>E59Xg++{CH`_g{rCkG ziqNtB-tx84u!=L7%vpXfx&3aZWp(@G%sOuY(t1#SbuuLVtoV#_RflXp>oKLU`kqp^pQBt)7L{FK-< zoHAYXW49A$1IUU6J&S#G7(RV%(@1Jdm|QOv9F0sdbB^qO)q-WXQ#t{~z&WZA?=UxL zCRts|?CG@Mfn5O#91Z+|U#5a4D&32oFu_1sy-IQO9(d538xtr}wX&&DWbx84RV5KF)Dn3(HH7Y5cAMKl;ZX6SQtbH|XlvVdy z^u=*_5%!?1rw;999dw=gFh$;2%?}_f2rPFW%<)3)WF zrMplU`TbA<`RvVfOIl9{alAhl?USYAJqJZFzD-!6(*8E8`^O}&F|e7YI88rab6-p& zTJUW15u))vT4L7dU}1WPlG^OtcL+@JE?XMcX|NM9y7E5~k>n#nM4jPSr$H=C>1vl1%xScb$j>*GdwD*7Op4%lzQ} z+k5JKaB3mX!mxd5i`=bFhA2b}7RunTn`I_5_fY0#=r)fo3h@f)!36(!}v5i6ec) zqiiwLswu0t&#%OVN|G#&!Di-IGvR$m`jy~Z;bI*DaYgPpdMV48uC=TR_k{V{6pZ~`dYmZNHr zp?od)A24?`-yTsQlYmd+cbkjR>(TKZqyF)Tqxer_h({mTVt*UL{Az>Q^MoBghg)7i zd{csErAj!J%a$u{C>HcB0LdK|?H-Qc3X$aiO}B}#q~F!YouQxUwAbh-V7~3IKe3|= zMJkmUN@oVdi=v=Bnm6`j4iYK<#8hf1Al_glz|2Bci};lmRu=>%PJqT@ujWr4m$vMm zQ=bvQ{4bR}vKLM>nQ&CBcvx=}XLScn3I2{g%THqF^TR}jz7c3@O`@_AqB2GiD9?n6 zkj$wgu0dY|>T@t{*61i+)|%LG%q4D*AKLh=&0q1;o4Ac(g~#)u{#cAZx0NZm&9r4g ztNzMj?m_~MvAmTn(^@0jqaN~R!d(4TPebqFfMfEMgJVNSPwF`GBTTAjvOqBh8Iji! z!Tp^9bU0Vm|9F)xL&qCa=R{#KA~b^MUtplhgC*}mk+>toGVHAz|Eq+SJXNBO3{D^R zMIHyRL`NvNSHpA>$48DK>c?_^!*NXbz(~h0j}omOSdhBONXuXL>ZE;ZTRAJACIw|{eGvu(FZU;r1YP9hW&79Dv6@~ai z|Dw0jCCRv6|4)ADU(Vrs+j!%HG9_W3!}LCfVH~%6jRg3Ky2*>$QrHyjTl=idUbPe- zI;+fX2WwyxE3gOdmp*0}U;1W`OfnI*$(}TyR(t~cE2`abN<#)|oT7Z06J-xS>Dd>x z@y;4%Fl}XYYw`t^Iv{DRM;48UV_pd;N~LDTBwHe&9mNe1d=+MmF-RdmGxW@iD zcnlYG|Gj4xLeG1IYd_*KUo>Rb+<~wfsi?`7OrD7HmJ!!OmHq@KV*{4BPSPSYp~K^D z%Qc#@|4**^BbLpF=b#m0&T<0zulj-)1Hx|G6yKb&cvXEh;psN==6I90G8X-9j&C*a zw+R&M(XQeaigU)iV})&x?NO)9fTIOx+PhnOi?=4jF6Bqp7mnZIqa^sdk=QsKnMTfN znA>7XPDJwS9stk{s~BB|44#w6L=vL+>GwbCxr9G4c=D!|P;%Z7OYd-n4}EB_oM2%5 z8w)O+L;oEJ@nR<8>#KgCR=HH@vblR(bvkSNaK)UH-|&!9vd_Wfzf1nwF|2Rd`2!VK z>X~A=_}7CNH2JxyV5o*`mzH`F8LCsL^q<{yLJ)th?}ipmO%NlAoHhBiY`AE`3q>H& zY?Z2=mW8VlBZj@`fvrf&5S`Of|H;LL6ZFS4k`wv&To8Cv~pD=BwcJL0nQ1v#Nj4&y%vD%HBB=NL2QPTf3$|o!arA3?4ysmyu8luQ?mDps zK6;Hqgb{xKOqWCpCXm*JzEKfL80-DBm%|D?#m5iVx?w(ATk}QB6k|=BnsRkgJYCRP zc`F62T0_G}D-oTCh}h@VIiHCvqmXBEiDhR(_KKX!DNEjS$gzEHn>dvJj-)}hV;tTq zg&>e>8oU^f(rEKZyAE@Lbo%>n1+$u{%Oxb%b-^w|h(d90WnNQQC#8h)m3Iu3Ku9-r zOtW*1Q}#VZ_4*@ta9L7s$Tug|L;2{>*M*WfZ`qZGNL9fZOQd>_d9O05>#pt0u9^4y zCF&kq4AD!{;frc%6$NkfkS*#kN6g6+hXolE+;!=XOBBs{>1S?2<;m-SlNh-ma~d8= z(o*6T+3{HTOLtc@loP*6_0lK_e|hh&%1$0UeAoRRtLE70I=1AG%9xEr_wQxf-^F42 z5pwzUy*8h#Rz>qUvx$0cCP6-g}CTfjSa%{zVYnGIi z@Sn~E9%ox)htOa?V+P=qL+~^S=Zcr~;gl2v)?32+g8(5odnV}ra8SXH)N3&ph6uk$ zUm?Gg{S>-s7rMKun(-CU!?-w`tMQ$eHBJ~b@MZmuih!1qJ6J!cl>4n%6Y;62+)WPc zgG&4p!|-#0@gKRGKeS7tvu1M1aedBW)M;C7c0ct*D)Rhz`K)yh0rvb<@!w5pF>q3~ zd*Lucu+6I{#63pHb`%kj1vI)Ld);#&+H3C$twhdpM(-CZaegn2G0S`a)E1{{3}11i ze-Y{k^D3nYTU+@;4gr7s=>pbnGJ5e4T0KcZ zT-?%vfzAH=n=&c0lCTrhiv7MK;wj8-rQ&yZ9Z&F(!9Pe)2KnT4#u|BMZ`*-AJ8b3k zPc4Z5(y}tonKJBn7%%lc2f&1=haXH#70~Gjmm0cZS->|La*d6g!gc=oPzGImv5FI(UK zUe8)%>GyD{$6ICEJkvZr(@aSkq90460}x1%_Mn2UEowT3$4;qsbsb+|Iurfj`HZTk%GV04)0vhmEbb=6WS>)}N$^m*ia z=2|v>iA!hs$P?RbJ~~td-*xVv@&meYiQ1Bqa=Jre991rjxTYYm`F^A+!8YIw3EPP; zAfOEv;hrPFXA#DB-M(O99mZx|p>?5y(RMvz#=~W_ME_R3Da!!fjW0mo6TZa#Kh>>z zl{@?Hil8S0v~^mLcx*VUweJAqeikK})n-4Z1(7TCBZgTWHp&oqFi#|j785 z`>pSdzK%c1@cza_Vf_lNXIHSYGv-L%uL^7F?i2`{Q<=uPyVpI@_E zFsCrdD*T`m2a8=RVYDD~-<4hbfsXC#Cqn2PObj)>vgGX=xDO$rhpRD{VYTLMyagXo zgcDic>Xv0uj=XWP9>B{m2!BhjPN7&RWDM0qUBd%HSWVwYb>Qf4m7v8XjxsSpwd8t# z{k(YYMlDp0cV9Ug`-SA{cT~|mOTOg#od)77@9MV!w{Uas5Ey^M%KHZ>0##8%`08WF zRpCC-)MbPd1hBa=~E}Rc#pN^hv|9p9e z^d^OL=*p4tYxu-9@6=zJ+$SlH`r3xyzgjh8U5DFsA;`O&9+!nvNCfe&Qtbg*2Qxu6 zGJcwrX9(tt==zCt*?xpyuh`@d4HIYDfL}e6j+D|D6LiiB@{B2{QP~U+7JP|L1809LyN5H>gkG_2?kXzY)?b`%V-2 z3d?L9Zq-ADtUEhN^OIJ`5=JT!l*o-$rmVG)I3q{Xd^v zW~ALRi`*^(pjRJu!Q1n4%|b#5n=d^31?mbJFKC*U9tD7?${rC^}vs31ShV|#yM?>4{QI=UCRU&0v3ekXzAK`RAI5812LlT zY7aVqC*<`{VL%i>37~+z1$aAM#o}fysT*7amxpG;7u@s`u7Cyark-%7&OA&>I}8j$ zJizBxzX<(dTK`al#NbR&4L#jvu8G%RuV8Bf6L6Z!??wWY4(oIEv-%)L+gt0@cfxvm4}K> zqc79H{=t)^mvs8DBr6o<{-_70q-qbS`Mq+2jB%-Dh1ObU;6fkPwxfvS>8zky=@IVM zl<9#V`#8k2V9i!SNB%?j2wG#>NIZTXrwxvzvUiC$7 zU;m%#J(2qvbnBmL(HHQ@Vwt_>uy9y-J{A{!AD(IAO4uw^a1H+jJ%>2KK(Kpoz-BPnGBO1} zGsQl=Jdp+wmW|}6(h~(Pcl18KP)IcjxUZH4C!rewtp)z`K*D4ba;#^Mlh{vNm4iBG z4tSzArVd!6Jgl#(K)yUH)zjipn6_@31=}Q9a|e+iN?SMOf?w&v?LoU&P_jF(8#9Xp zJW>t00u+#uxM~8Ja7qw~E0en1G4+hXWQ&_!&qIO61mly<>IRMF&m{>3(gt20v0OfALtMGY843)L z1!gL`x*&H;SV1*MFXyc2IS>M0*thS)g69D-K%w9ZTIff%p}Sg`s%8{_dLA@@T<_rp zh0D@@;gVF&TXldYZ5!kYQn>HaK%G-o8K89%`$el_kTA*Vf>jLYfm<+lnkp*V%1yBV zmn3W9paPU*byW)bGj-q^bvZ!&QL8|l1Vdb1;|4FlF94pTx_0S=5u^#+IgRS^l`E)b)eG>@FszJX%rXh5w6z=S*W$!0bRQAGwUX*{~ zG#ZKhf>i|Q9nXCdsM`7}802W(pitn+vr<0oABAb-rdv=zLcVxV2>QT%uUp_slC^li z6|!S$@_;xW$?G!L<#hh-f_Z`ppn4sc?IV0QD(tIGhD$=rm7G-kXVY! zI~8AoKId|}>ppBR7{5y&0NHKU~vw(TQ_yFiRdzm9ABmqAL zd@00qqb>kFW&joHm;Qq8%GhEa$NLnbY|C9Nnmb#NE+CpWtsk{ud({rg;P#O#$g#dc zi)yl-tDN?T^01jJn0AP|v1(8$fF~iJIS2&}atr27TSraUT!n#hY_71PL>6VCzxlol z6vRyuSP1R$m+zURegr@e!Q(Jj;X{X}Q3JMar63KSZ|Vi|QDr=3vj;X&mNtieWDq9S z>6gn5xnS4#;8WIrlzhiUJw1mwDkfEw4-M`NIohQINDwX zfXaD%q#{D09j6>)OOZ2kU>%h`e;`BBkvnY})nwJ6RbXU&l@4;Wx=IGMar@{Lbda1b z9^`^Tcm&I)ouia(+&~2}Jc7m3-cfU}^L_M=-RHW$ZqNOx|A#R9Cv(q-^uS>XN*iD$ z6&Qk+|62s2*=|QQf^8P(zhV#*&rz2;AKHK`Wmh^^dSi{NY*vW zVno_9%RbE%uAE)C_fre~;=et!ZagUti{LlfwClun5iHx@RQ@yu9Li7qV}AoT*I73j z_f;64F&dvfaS6OAwQY(~k)Rm^H!Y~WhBN+>AzL<>cx_qT)l*Ri#&0y|6pNJWTXyp_>|jqy>}Jh0^t5?NbkvZ}&yRO*mki(#Yc!`!Xrtstar=?0T^$6~Mc&V^#45GPI^3hnTiV z+H>|oIJ%(BdhDaWktGQZGhiw-cp5<1YQpiuOW*-0P-{~Ev2|SLm#I@DN%f^78n_bSrgEHH; zfcsVa?LlnNl|~vC=AxO^FYL3i0s`7pi?(;e9?kKm4s@&Q;Z1G$cAl@7&a~?cmsP_C zL)ZRb>^?gJZ(BuFl<3-`CUZfnS4#Vy>dEJ1#k{aCE6JLXS%*pS$X25os!S%rnhHK8 z$yZ{mhiZ*d`aUbNA2Newq#l~FPk%5M#095J)C|aHV^ufmc9Is~tU7JkKAc|hexNqN z9naV$d5c2kC@h8}%Ast32HA1+#l2-hJ;BCbqGG9$R5cFC?ZPxMa}6aSRr8z$m1(_w z9pIQ87Y){5)^67&jE>PLV5Xn{UPHFiB+N2!C`BDk=VOz((z}C)KhIRxt&w=Ap=nc` zJEtsOia`)Fbx-lVT4_PcmrOue6gE&OwB+fWztIHEv3^Fo+D!D1`0z7w+MehTw_fEW z7}rYNsD?#gHO40{vc6dL{kz(2s%l01cfC-}l&frbLdTaZ%lK(9&O{T9<3M;mIR>)^ z@z@UD$Qu&6a#ytAnh-Kc{?EY9Y$s@JTL;1Aj-;m%P?xt2Bo)NON`dFs_?aKdm`*Ki zHfr?_uV}uB5&9Dt$^3NyHBNwkG8vJl2w?3y;@S_#3KMb8=)03s8MtJbcJaY&y=J}s zg~HCRK`>sp6cUUjw({;onckXKX_QpCVNfsc=+V~Dfu;wr0#zj!B zk>M3`>q~*>4*7k+8o==#g%h!pEGN%vr-y(Spx1bn9W7aDu+4F^jr(CkI9u4-OpW++U zWbcM@sK~fnIxrgec|NpEn{*-|Zil%QGUdm7N3&<(6?B)ERFA_lpBdf)qIYaFE-hc{l2W;0|sQJ$>RWIYG)jNH)^nN|y)PkTK!I9xi66h5T?pw>B&Ehqx??=zglr%3l7&)Oo z@L-?&B)1d1eQ*6B^;=#n?#GMKb->D}L-Uf2avUf!ThY?!K78=;m#BS~OCzD=OiMvv z_x{}v1C1tjL9v=H1%}|AD`aZrQXs1z_OySJ{I1rK{rj&QdoNZ0lu6?)TRt!sNjm%9vYznr8KD7hQItFKns(e5EyS-Fv_;Zxwz5ut@mx@}2lLfS`0D~K09 zEHGYG z1!$>;@fV$_%P)V$J6B-ZP*hfzxQ%p-13Q~Ji;9byxRF^wV1{s`S1Q3uI-N8uU8ec)bEDp>2$ct-KyQCNenze-)lvalm)_}K-So@A!%K5u73r(St#bK0q#gKBTsh1UH#EXnidLBEFc5! z_n$jIuJ=9a0qhZ|S5eEEm*h4sIw^0L63@3dbG_%*ZJ<=GQJ(-iLVPN@EZof7BQjlQ}RlbVjKKWm%?pwT2qMqGJ$#q9$5Zg*c;=6{o6TF}YI6n{@Y4$A#681b1X zpXR{^a}j8OoV%ep(3>&hb?|=H3embDkXv7zq%xrQ#iw>5)W!U93o}NET(kEkpnTu7 z$;|2{ASV>@g|XSw9j=S$AGiv_-DAaa_bESOtuHBPO(jW^>6<|$2L(hOTnf;k)};Q2 zF$WRm-f2zMa!HSR$yyMccK4FCU>)$9!*eI5ne5w?1zq6d&*a{7&iqdjUbh$lUkG7Y zBtpZgap^p=93aJne5;PeHl$X19iGP58=vQWk+mFeUwPk@V|nX!i0(eiC43&G z!*%VEy7GJU!K$w&W`OF!imXm0O7d=eh4xIGM3+NP8LANJ4ELK`wIZ==`(yPw*aa+M z@>i$sqT7EBnmLMqMP4qaAg&%rmto|U87POPPiR!`11;f1q&h#>>UJE2ul;svCz1Ln zEAIb~@qef6IDac%G#>5d5u2kL{7HiN8O7p`;c86fAT4K#OEmApo4*k9h^(kM%`Q-- zkEln!a1rLuYutmi6_hgW)R(Nxg)18!Txa&CgWUSv^n-Vo^r6K!%^kaj!8JYzUCccA zbJo(_56qdl8zCViSxj6M(S4)^X%#V=qjwJ&+97$knuEiIC;Y7h1(T*`X?$~gO3kU9 z_GOkewdgmkgpee4udlczzjpu48^ioN8kJ+F^u8cBLn&sMFF4E_=wiYUfPr{WM+D7P z#WK?_j9BvuBK|LI2C^0cvyUSpc_(cCZi5o%8GP{p+zIr9+58O=8=Hxl`tbw%nGli# zFfw)$B`#U$W#J;Fsnq}2=^t2j{*RY!bk*`t%32>;p-fq0IwDh}dTJ_3(Mxl-v{Qo; zB-d{6J~OVR))FRdoC69kapiqsl_3*#l2+rjh~kn&=nsh+m!elaZ z$#2Y}Cbi--yS~=k)0U-Qe92YvG5T`c-(!X8wLA87op!-=s4wdWff$Y;-hV7<+^!?c z)s_R_hO;-V!aB;A=@yB2^wl^Hi^PLGNz9jBoj2b~J(L2fImf17Kd><;DssP#O#NJ+ z_9G(~bLWXd@A-DZR zkx+rij!X6aC99DDnxCgBZB<{Wj*0TPj3ca@HvqzH6Kl7PMpEaDpL{E_Jn*1-b*?ep zi6#9<1n&ttVp}Y|7q;U~-;P1ARfE1ypwDOsHO&olU*=!qu^P_3wR4E9$t031{}Wa- z94lAd4<=~~z66ib`0FN6RQqq*KI4jH`9_%}*)ak6F@ZAm{StZ3(!CMlq2^3i=F^@8 zzflNqQ924QX1s&t+STWN|LSUzq2%{ZoQYFNs73G$N;xiC$s7}KkaaLVdwOd_im_MZ zdkE>go@9^Dy^7{3!9U3&s7?P)d0QGQyA#{_VU`a{f-7m!VD*g}lUqobRie!MYfYE3 z>_8Kj_~f!w;%FlARD}v@4amiMJV7VSeO9@#8I8EK@aJ10*0n8s`esc6_W9Y7O zvdLf98%A#eMkk7H)w`@ z5xir7=Qy-XJ#yhr@zj}x00w9?yK4aQ{O!gL4 z`9Bt(8;^rTwT)r8H2|t<5Q)|mov8KCG<)J7ymyYi-X=SyE9htTJaUc93aw2rJJ}(6 zD=?rO4Q*ylaDIEDt4>LEex;36AIdg5Z6WXtnuTWfpibPKBdIa}P=@=7Oi5H`c5?d4 z71|vCf)};Q?(y0)1-GejZHUqly^JEOisn5kOI1j2Uf*EYn0&;`XN1y!z`Ktb8{L zsY9XA8E@>bzksiv zj`3T`+JrF}WGtEMn%CUhTSRJZAJ8$Y!<+4tC9b)lTd=hn%XjON`N%){OuFwMe2o@!NJKiz%2#akS|hqrkAoKH z`T;q8;+r)OR>86$dhmz;0flVOmE!+_nGn|#$w~hqJ>Nl(dy5a(lN3cT<~6wteC+!# z!~FjTHTp02`oJtwa|eob2#gcTk30*;tx-W(oE_easd9uvf&k z;Gk1BDsGQwS^EYvI#Lv2c{x2c$d$5TgAuzXGW&#i|Fm}U=RdUc%M~$`y*2viD%y+G zOWuoY%t)DSS_7m9)h9xEfCWuxzX>$Uy%j2W=3%C|Ufo`S|NdGo=$=dQKQ!hh{!nXT zFyWTf#=zAK44S9>r%PKIf~WZnrD8K^Uj2=FMZVQ7L~|byr5+q#&ZbHrUEVLNk*Y?p zryk6&VWOzfDv&FHjOdPbR9jTH$S@Ne=1L{g9{1j0B%WnQmdLqqmXZ3#RzXmuy3|kp z{;KGS|28i2n1g9(7kk?|%!z-XmDE%}hLm~#{{dj$2RNAlklts%YHO|(`=}GRQjgSR zficsCbZ8jpS|irJNV#Um_kR#P?US)!e!oNQ#Dcs3-xu1+-GR1Dz7)KD=PgUsEjh%J zSv&eFSb@r@TbMJMOj}HW{;*2*Hr*m(*+M{uF+I9CYG7PHWg#0fJvucgFtbohafXuC zCJw^Ir`q&HG_BJ#S09lEH(}+9(QcK0o@?oF6|8S1Ai;Qgs*zL0Qvrd0IQB#?({Hpa zaIEIJ3Wu*oRF4Gxc_-g_fbTUHrRz1_lYWKP627_{KDV5Aus_%Iy?b2zkpt~?jH!{e z;rkqbcUgzqpb}^}IPE4Q^2rg?Jy&==xSvp2NldOXCN(C7s>&+9MQe=__hJS>Enupb>1 z`eh%l1wLgX9&qxpTro;U^@)L$uaJ;X!l-uvd1vGv8ih!Z;5B%3c?F;uqk*wVC zxV7&-aZ_UQjht_X>xZ`lDya7m&d_)8y3xZE)e_di)xKeaUqW9(T|#O_S0<~{+7a-Z zTvyUySX+h?IFXyvuo{or!XjrLEennSVT7gp5zMBWeq#??Zve zPWC2oZem47_9gpGt5PZNZiv_rOXrPDHFBonzZ}RW&83JP!KahKB?yk26U8GNb9$vo z8S29Qc$MQX{;FV+N=o)j{RKpo*0KS)CM8Rr zH^;%6He#0nqF3ctLCrcrK$!_gDD?IwkH|<*`h@LNZ2s^|kT+!>d9pIr>uChB>o`hp z7VZvZt2-5Mv$Jk}hmm7bujfhg8oLdDRq-d90i$;OH^b_5&O?2Ulh=k9V)RNtMBpE@;_`V+wEPd3KYCqDYVRz(DcgG!QWa4ZVHWEQ2smb2v4@JI^ z>WaBL_)5T1fTr2{8d*~ynnnANtKGOrtxz0ON$LG1I>h3!ETPjyKr5~1L*TLv;fGmM zD?R&&L6+vFM`m|=_QKDGpBDC_$5+hM_lN%kK_5p85+(R@+a*uUJ`=Er6}`h`n*a2v zEF@5#n>6$0ld@a9Vu2RXA(!_{C!*iOwi^3NjcGZD^L~A;02!!iq@&og<2Y#s`H%+X z0?ww5lUDI%z(+Qeb#tJxenO4m^a_UNu#nI+YCo6aCbJai?Hz>e1sF(cG+j(bcnmRS zeRX|LSV>Z6ycULdEX}0NYns$gWGlS|7(!5Fy_F zI%)H%mm`xxJLC#sV(>}Sgs7O8#O`qmeY^@diMH1qD$KNqpDi7WuEbnpA5h*6TI0ow0y+BthEO2ZDH zU6ZY{hUTKC19iBQ%YMNk#;b|*WmEDN!~>h{S-bJZI&w9vJ=G)j92t#AVMR}Yen|?U zWJwCbWXT+?9b**I^7!`iA{hgSSZ%h}(9 z;VR&?u6X~<d|BsKL7`$ass8E>rsLmUK%aM=d8e*bCr%5uCSFnEDgv7+9a)V%_ zq^OHXYN_;spB|B?NaFkGXy!cUY386zmaej1eZD#s-@jZCt3-h?{vqeOj>S!{-OYEL zMItI4q1Qr3mMY^Q^a!Z=v0U@#Dt5JJ*hUG4J8Dx5_rP0^^VOA(3&`Zd^7MZMK$}_ zJ1mzE&uqNKST1G{|GXVl$N6at9Jyyt$$A;NEN9Y8&PMI3Gztr6Tf`1DTKP6VRABw_9R5NYCq|q0jth zs_VaBsqR@D%Q#g096(izWntMN8zpw*=vTA)8rj9=ms}bIhoGrpc~h1`LKTZF;g*rL zK`Xm)>fMHs>lb9l8f054wY~fZnuJw={!ICFH}ebF{gI{Stg3_F@eH$(`e}wcqu110 z#YAl!T_Z_{QtH5}(?K_j#in-pngTkbP$#dfcXf*<)`p=vpUIkb+!}#384Hq|5r`X9m;`Dec_ zMP%JmnAga(>>?C;n*!)XKLTmi6+9_w=@rBh%QIQ2!5;i+&cbBQ3rS>}f1yp%yRTu7 zlb$oeHhQ+$PHSvl(+^8D`WIRHo;X#O3q!Rkq43tc{3XYnv+ET2dF7$lhLoyb{9A8k zm(>`Ybxz;vf_|@ROexTB+V8mVT=HjJ@pll;>u-_mfV5md!0$wR4m@JE{9nA)rk2di z4)=o!&aO1_BNBY`0Xf#p?|SKyoD=1Ba1E?z(t<7fA{n>Q+my$Dmj^dl(wsccNU$7- zWaiV}HmH?Og7ZTN)A(yhF5tSJA4dQFWxhYSIAYV9$sO5TJ z>VOj=?(ncB0eXtWqIYxh@PkeePW(|xYKJRyc(uYV%J4t*GO+(Is6avxHpp8DqNepW z9~bZj+z-Bf)J@=OkY|MO0OjZObcoVt&Rm6d(V)&I1W&I73povW2Ni{M{9$_o*x)zaRj&MPg7m4- z?5>M+qA{Nao%lZNLsm&z=2DAWh3_iXZU@DvhX{D~SsJS?JFQlorN`5-sM;qhPJM{` zV@!kt?LbJc^p%_@aBds_aYn~OeK;FO$Dw8=Q1DbN`!}VMPpQLcUVBsMQF8AwoCd<@ zaFBYA+OI}X=g+~SF4?MSVarjlp~%X}7*6bbI!jT2_g7PfuZlHOA9PaO&(sQt&&P@e znptf^rHLcwF3|)26pBFoG5cfd9P%pluEF-DTZE2lN`EYv-LIc;qw4}JoA*Iy(n>bEgE*ExP(OK@=J{R!D$?_m{B@oKHn(rD zHyQt6P;LE|k@W|#0r&E$uwkf@t}C5=Caogei_q%#+b-(f_5+L^)IhJ2pHW=ary6)x z87s`Ww&PRt6nY-v-vkIV)dhw@OU22;z>M+!x`O`jp4r*7S*e-*lQ%Yq`tYsjwMW{g zZyy#`8>mKLkx_#_iv)B{|V$wI=>Cj6O7bMQLqelD!y7Ras90 zg&G5YHI4YACiVIzMlib}7bk)q*K=%afCBmP50m8ceRdNLBybWc z%^l^JcfElWX1G=f=JnCx{7jZJM&n5h^lpT-U>)V{UYZ7{S&YwWwIwsj;x5%oF40|bqY=xkN@hGP)2Y$&T$XC` zl(MgD32LkAGbjzuiFJlWA~HX_Hrw>QY*2*yTWdkLxSG6phC$;PdmX3bE1vU#?vjL) zKeWmspA~^w2`eKMhsUd`4bb-C0ZdYD?XfDICClp{>Dc}&WXNqgHF$~FD@My{%--9n z=0o)ALlIE*`>O1k-XZJr{jb@v+<2qix6V{{x5n~uPAD9Np9Fq_Uykph4Ov>aU0E%! z$>_yob3ktA5PA_j_B8hcHfHj;7oKa)hmGN`+m~|Rj*>s;Cp^Y zu9U|F4-v0C=ayxcp`CD!%I#})CO43W+wu84fd3-NbM(8nfrgu%U`y*NPkfz>yqv9r zW|kqZ1Tu%Hk1Xu@h_9fmA2@A}r6T?49Ma|#Ylh7X1lm3~r`@f^9<@`re-c^ldrpjc zK|SuVjgn@%;dR2eDM#pkmnQJ_Kmf%%h&Rv#=xr*RVCimSF*9V20JviAPXQn=TU&Vew*iX;V10I_M2cP4 zyBostOTE$_$2{Tg;D`QGDcj>?(M+!^kzhMv@g-szVkN>H zP;pD)x{Svo!5Re0pX!x$4tZA#mNcE`rYxr{HgtF=52pvGK%s-XCX+0AYX+Dmvjk~g z^0K=xkDJ3mg2C66O1NFkOi*FWc6lKio}?=pJ=L>SeYXClttRCG?Mk=_lSC*A zahvv>E4SsISZZ~KlO%hf!0^Ao3}zCitArVLi+G2xQteP}z`WFfdlvqf%AZu0GV);o zj^%9kdP#j*NqgvEw zFR>&h2k{SC^SA`76St7lrhg_~KC6D5q)}^}2}#cXg%xTFDFFh~f}O?wJc`{kKB@}JX2mKXJh_OOF}2u+!VGt2RYCd*IIiSvpx zwHs+K*^>f7hkk3oNJ_UP;L1@lW=$T@4|kA~Msxo@Wz`OB=_2To);TV=(H=TNBzE2X zd+5Py;fu`SxkAjrYe)}ATkN+#Bpp!}gTlS*u#unDl{ILN3n>G$m~ceGB9fQMgOc01 z^WF306&phkz01iU9}XygTnVi59STnWVV4zXp8d!ID^}t@yLK7k?-ne3eH~`I#F}B2{%dS6)m`sJ5zVz30Zc2z0_4-|&GMsL0V}O? zs$-HQTA-t)qAwsx4A#j-oy!gDCf2UViMq#M{YIbp*3B{4b@zU;%$nEmqS9*7@v|Up^>zJFzScN98RN^T49-Fz=T z*0BOi8^D7!%le#TL(Y>N^*iTQ&dZCUT0MzpNmi^9EIyk+S7N!QeG^qZ#1CaYE1P1D z{zh2o;KgQ6Ms2g#(y!KN&sJR~`W9cv%Hd?b2B-99uoXfvswP0=tGu#O;k{>EuDj(C zFwyv*!5V7=%7-;)Q$d`4UuqVJFz`6lmr_nr1eG3&NIEqSuC}O8hsvb6vbCiJc1IeV znZP0uEVlnFl&gIgtI(Z|G~XQ_l*hmeA8i14y+G`exz*2xNgT= zaN3tEv947ccebr*_a;4_>TyZv?k~F&=vW=ziRX)7U z{EZl3;fWn6a=aEvc<1B}=hK8GFh_SFVshsS>|k*z1@vHB?ic%fU>xtL)uTJ2iUNys)zc%_A`hx`bgJ#E?xR{Y&O@a?j0%Pt1W*PetRnH-yAVGIk zgWvOW*7CRa9=e0_{52Fa^zBqmC2Ff5=-uNUyh|o2)X~~P=i^L9O>v5s46%*W>G&2F z5RB&fC*C2&SxuPAIfcAmCK7oU8!rE`0 z-p$2#EU$J9=f+vGE3?2*QH7OPg;D7tDgxk&uQ2qHb?2_hj?IzzOC`>RR1Z>r#a4d< zO)1IoxG4CjJDpUknpdpLp`4TFcd@{A0V0o|707>l2LybHlr9A!B5e2XA&aR8iqQaX z0x+&$ziL9s(k^Te;-s(Z;#bEmWk6+GgPB`?*Ky)Wa%6T3LS_z}q!_luTjUcWCuuLS zuEO+(2XwgPek$Bd<9spdqwe^3Bo5r*eEc!2GZxAR z+-Kv@fd+#u+3sIK#!~es0R!gb5IRUj%?_?9)q3v^5SX*4>b6{z75Ik@(qrY!jJI}k zMKikdi<-KI!z&A#lh!%5b54kNKO};)JZR2MyI%knNWFGaTx18;wkQIHz^LGdG+z(W zcnUW9TKWSk=LsoEO^&vB=x`b!)s^GWgk!+wM{m4;0#y1p&y(;5veNJ9PfMpBXyL2g zJSR$vY2*R0K~{n=`A?XlEnk&MG}Z3PW3Z>4E#)~y-Dx$Ajja7<>6LZjy^iLdl}=iY zg@u3e&8^Ntg%y?b{3kDv2ANkgSAHQZ7T zI@=DS%RX&Sin1F<)#fXv+m#2x{y(($^{%1oXr|3Fm0j!}_Z&MW)sdj5 z!>{w?yP+HZfXjafm)Tlt9#9K*?GbuylW8Ztxqp{^{Znm9LQ1mvMlca3N#;8iC78oB zNn23?4XJhdmdZ4t((-&(Y{MJsCV-KdGb;p3U)((I4bE=odR_@@VTdoGm~f=5aAcG( z{<=I&Ygxu*2p1j{a;nQIv(WMdknepIQ3E?i(A4QVQ>WYG2v+7<%s7@Knvom(JHc?* z*u>+3;ChOr-bkW+f%p=+{xkKf?lD}VZ3t_JtJ#Gd7Dx(o@R(RsxAN5u63gX_j#NSI z>Ip0Pt8K?lO1{6_$B6!cEepl(=Cr=+{jH(gJTTYk?EGBzZ? z=FmBo)8k!=P>J87uEEc zK8fWhkb;4@1*HZpjma{hidxlpX3AXFjcRh%MoxF-QN#LNE3XS)Q`_fyCDC?OC|@Nq zmJit#OT6bz-bNsNcPQ!|dA;YYvQS&-5mcy@7TaYI1MyU2Bi&Ab75->4av&6$0{E0^ zAcktVt?8`8Od*Cuo~JG%PVX0_`hdK6Ak!)>($D>XQ#~E~DcV2C?)trc0fkt!reqEQ z2jb?Qize@d(^A*4$t}5zj9L9XZVko{H}1mBO8WW+Ki=b=mLp#LiR7@lCNq07rt(Gf z@q;}gmkCeFcm;4b-@2`Qq!gp$RIjuU!nbR5=O=XV1E-6Eqn_yO4?+O^lKn0~-8rJG z^ISDj=gHyl@#_2S{(d?{Vg*0hc?$}>(w%qxQ0r`XYg*GBS*R~(HB%&}`AbB+@2@pJ z>F9@_*Tp_bC(kHk?>p||@Vl}bZEzQHeicp}yV$&SO}?{?W9&mw|B6>SNLwnLnXBvD zKZh|Nfpx@EnXvd*T$aO6;t)L4et&!}Ui_C9x8T9jvzf!(5*cx>i{Q&VdR~odn>}58 zv*Y*&PV@ZiM(w*WR;Y#GO*6}1Vv2rIYV&lFmmMS2kmcG;?qPGlWmmP^9-|x>0v|2Z0tk(W{~3nAqed+-m-&h(tzB>;nwFsiYm1GijOF^DV*fi19FYYerA2~MS+dv zP`RH)vi6;|b65KJ9m@xfisp}(XJcO51j!y4a+iW4VvLN0Ei5wEDWOr(xN)}~VR%W& zD7X!GG%a!N98|O!6G;p;Bi869KSUxLaF!h;op?e@Nhrh4kYqap1rO=3qyf4wiTKOs zSNA-6c{Iy|l8(X2I~+i7#zuhmZ387vuVt@hFHbK`z!)7LtbiT&89NT!O(*l?4ccwp ztjfVIoQ%;sbN}1UlFXnc?`cCf=7?1ij>0WPrvV!`4Ymr(K@GYG4XRne=&SCQ1(_*A z5zmFM+Z{L>x_lW#DMM!&_9tcx@g(RseBlvelH1>-JVz>xz5pjJ!dB81)qTopVu2mk<{fu}&IRew5$4*{bD6N`QnhEQS&UB6P!39mK#+Sz zU#CF&uh_8foO@-7G>y@+57Ls2>;qWEMfztApCcHLOLE0>zJf&v#Lu7AsIJ#p@oDxg zA#I5z^-?trP+sT@@+?P<{Cdy8JnD9A-ZpIm23oCpyA$Xz<;@Gg8w1eoZgVhSBd^_^2p#WUft`*)e^RL1i5eZ%8)|A~y| zZ2>YOmpn}Bn!k9~4|{CGrU|bbvwS&&nZpbn*fQP(9hJr~)oY!L3B-u!cPWu@U`ovl zzFs#49i?)yP5%g=y4tmeolOkg@aNCz$~RQhdkWN_WAY!!q=?Bd(y}2Dg+J>b1ba`|s^VN!}};6;I~uJz8dC$0F~5AwdL8b8*Z zf*vSy(|E22RnUnZJG6WLhA{l$Rd;%se8SB}I-UNK&5T)Y+cb{g(fXV1gIfWlWMclV zb!4r7QUT2R|M?@oTtzJeim89ME_zzdEa z*?t{OO^=IYa8?+^j?kY9XEGkZX8G2n6j*+V8>}vv!Y zcBa1I)cGeVW0qjfzBii{UeJxFT#kMF`h&@HZf$}MqxlMIT64nJrhj>dc(qF#7+dmq z^267c8*g7#?IKa{G9=vn!tl#h7d)s9#@7ff{9+5o6zh-hx{Ss!b@IDw5n%eX0pQJ;0ciJ2Hm8St1UGX|N0$N~cA^1I+tEWF z?hLbGn|@ZZsVYLAdRBl<7mG}!Qe+5*p-8cwl@k|wjQ z9=bDbzDIgibFOEN6*BC>pVjOKuU6}q#Tgn+AD{KxbsrUk#+8O1O^E7_)SlFOdr3(6 z)F0x6o#T{Fy}z+!?e*Gpk4!G9~k zk7$p;<=vix@fEZHiF43?GN+9Z%3Izm&>Wby#zx7NO`acl&B*x>&1&v(Wv0ipVNb3pHXm4S6Vu|v zWp?WiDI{}N&qsB?p7%vbKBcjyx9DJ17C6=T8;JTS68DGec-yznn_XHF7=I;e)2!7M zTwDCjWja0-uJ+m_Jqyp;ednR{-jr>*A|0Wq4DwUk`O=-PjJ_`Aaq6 zn^aQsmoBX3Y)Px)3biH{28TNcm*^f6w$N4FR9(DB)o&#ldnkXqZI*ue4c$okiY-0F z$4!vT5^{WlCuG5jz9*mOI_>mSfNL2$x)Z|g9UH-==sktAfd6jXxl!rpm0OG6mPvoc zfnL|5LINhLwa`zbhu{BM2cmvO1{qO5F>H$9`G@}MNaXT6j08MfV1lkO*b?q|dk;?7 zbUqWu%kVc+aC#*`r&0wcc8Gy`i@%*G!$CKC2TME4V48#Hv~!3=O2U&jFF5# zbHls8s^(T`LCtmc3B7fZ4I!FJnNN)5sQLTdc)TK@0&ap%3R_4n-t&!Dz62Mw195ox zwyoJ*pt~#nD#FW1v#(K7;pYMk|GQ!@ujS2{pK7re zIimG+*&_G<@(W^!+}GD}P1^8-*SULL{|m)@6EE>ZDb;+eShVE5p_faLqEBi5fNQcsz)1vYg_DhL{n*?b_WhHq?_%B!4>95M4zdgtSU- zl6EwTldsb&^TrODn!g*E$c3N;(hhAaft6=snzxh{K6Dj6xw<~aZ-3`f)P_F5`G7@w z)hFQ=1@IsFgncswFk;n8Hl1AG?eKA}*%`1;8{QP!@II}_H1$6k(H%4d>$NvP9yy&0 zsd>g+JK9|HX6(awDMq`>5nSWaMQS{<-JZW#F?L28cuDz8@39GR!XLG*d@Ejt%zm}u zk2xJ(VjS;@Z)OgUO7bMTdkdg7Mli<8CEh{9h2@6rVM~a&xu>^Ig!(!1As$GU_tS=+LMP;&qT!XTsv zKocWvnE`*eyA)0rJ~fnydKS(KUK63Z7|U&A6L3SOs0w>~z>EOrvW_Dd)2iGkietf^ zxbXqhbO@L)hLkEqxPBVCcEST)e=JPM6f1y6X|~~C}7LFLMyg1nwb|<+Urlmex((YplSiywj)_*JP3mR>o;lW&Y%g4 zKA~^xF>L&!k`$j{h5=kUDAv31%zG;8*t#*ng|MW|%(or(mh}NpabRTH>WIy(2a4Rx zh&lad&H;|rm+(qwaOb~yy_rFC638jIduYcH_>dWD6lKmn9IXqo_T>0&{j)2H(@}2xsa4H90f_e<1W0*ScJ6izNh2S(Z_>Kqj_J$#J~N!4 zzhJa8Bhl{r9>bjmrbHPvv4$IpKz8PqCI7^N=J_Qjl^yvEnM{?uo}=Raep2PplJh9O ze_&lcxNYAW3f8Z2Q+v|c^01R^z~NXzCXPz^!*I(MnIrzYin8A3%Ae>~x~;m&x2J5{ zwSy;5kcT^+M_zQz64XiJ`I5ea1^kMo8)_=LGZEt%cHqX|E_RTOS9@COk9- z0sb||*_(5Wo8Nf4>&WjEoXnVbJ#xU#eZs>#gw*XyOl0J{Cr_zR9ANw2Gs&VL=z88H zA@gUUf(emdY%1VEkuCNoP5J%rU_}2jK44cqB~(~Z`L8xfef#aemR+JGSQQ zyOnA2f{@QdO#V@wA=oKYM3J5Vr zRvFwwPMhr7W{HJ?phJ$haDP#?&VU)6mWqnEqx;v^LxS~GNUv?Wf_w`e%+qhp92rs= zgK%MwKBy=OA%uLh6qbiYkFZy4p&XhEOu!IUn=+~F54=U9;EA8R)B~SzOk2auTEk4S zTM27peC+|1mf5r!T=oeh|9{W9CgWUDG>a)Qmv|xOu_i zw|e`0S66ZOUL#MPwP{Tvi;vXmC+?>R@^x%VR#pReUrBA{J<&hLCQL3I4q%CYq6qpa zEc^A*`0Z5)t|L6pRmfMaSHI(kgx=8on?Z94NYEdWoPq@s`>$xczCfL*KL*IZN{M$A z!lH$`fgOzVX_o-gFe6B%dCJ=kCS%xW#dqU?jLL@ceLU)5Pgl?oQ-Fe_>uHDi43EVNw3MDOt(MzF%Pw(x&gY5>2#b zs$w+pwPLjC){r;*=-5;SQZCM)!x+)jraw5R474Cq{1K*Gi_>KMe(`IxJ{pfR^U}!w zx`>mU3Ub_GsEe-%0@SeCI8e`w7DhvHf#-HSLD{yyqz$Ym3VUiw!dFv5R*Fz<9{pEY ze>5|4$2I>(S|#SWGVutRKwr#K9{*s{c@}ih4vAXKGVeSCY`f8tuz~~>B{V**F}0xF zqIh&&zYjNjh<~wD|7R~)fM0++YTS^q>4}~3r7H)x{_{)4|txaDLqI9`{!X0@JNDrW$ek}+^dIs?vDD~$);u6Sc zqm{Xii2S5|FkWkOp2ldSaZ`S_vlUsTY2G(or5}=qX`d^-cHm#E(@{M+!k}bGmm!NB zf{jy6!&%y4Z1$JboW9#kVUrEH7|-wdTtC}sGBp>(NX4*a`k%HMQK*GjZEc{zI}0hl z(Jh-99hk)_B;tmZ?`97gW&*|u#Xr_~PaiZHedG9zXJs{(6R{xmh86O=6I_)Iv+0pk zCF~&M3B}TfXAdVz)=XWWqh-XuD3u5>T##SAPG@ z$O2cBvi>I6-WvZNV7BITwTV2>1**1~;UM&$NnzA3_oPw37)5p@od}B-zUs$mHp;ir zK$=QjC&1yn6wu;}L{P9HoEt?ZFAmy5Ub3eok9Dl4NH!|F8BmhWtZk&xPxHdrePQIjyOK%v;tc zx{I=GR|?#X(4!@yO_%8{l7@ZHs+)%A1Wg|elwcikH@ZB5M6g@jH+(YbK{G=MWJ}~e zbgERUat#UfiV(2EW!<3yD#wfAlKZFagL29ucG5pAW>8i0O6WTRj|KPY2la>Ay)Q^N z$~rD(v#)cSfmq!EfX`H>?eMdHJ;bz|7@hSrHF`l-i0T*Xiqsuh>c{T5 z8>dXdAXh8>e;lUcCaP0_alnxI7lIW&%;*;n3f^;a8(`w(KMMdXr!#1dh@%l-T)#6I zw|I1V9`yU{UkdY=KvH$H_`xcqIKfK;qrvS&FjP*Z)P1I7l+@=_3?J^+PrGX<`eUBh zO!p*S&s|Z$Y5;swf4KzBpY**h>fE!Y%&x@l!Lral7OyLbyL*AMq(oLxDLylsI?0cr z{}%bi?FeC=Ax0u>8ynn9HCH0R1{Z1!k6DMp_xc;1F_u@JAFrRE({p=`;*}%)M30mJ z>u*7;wFJ`PpiEO)!Bik7Nv>Fu5XK?x`Oex`E6Vx4iXQX~r2cn(6f)~EGM>~N$I*l# zmETrsM5${;k6wtIGh*kDtCCrG{ASV>ZoLr{w;q)`xtd|^y%Ck#5kJIQjSMP}xuee> zUDh(p7PnQRYAT6aQJc%n+k7c6Q9MQ<;w?auLYzMJn*{?zTo&t>8M_l%TN#zYM~W|&0F zh$6<0BgaiNydw64_JPwvkM(l!sSvWhmX_adPkhawz?Lm&jku_)g(X#rAolq51wY90; znV0NtrT;IvnVu{G`D`DoL3e259f+D|#{nE;Wage4xxQQ7VUrsVM672(e*hx#JvmT;^Nb0l4MJ>Zhb9sUl{*(+w0~?xL(gM$YQbzcw=^vgK z7xC^fARFw<18|>Xpv>TAj(c3lN6NP=ybF3CSPF-4nBt0~CHEZBk*RGFO*#hGzg67} zt?u=N>dEKo*-N@F09z#m!u3D2OIBKeWm*xfxPO!DM0d$(nw`hbFZq}^c}Z$+^dyWF zNtW|ua)&I@GXJ)T^cynGV0QnZ=slJfYqLV{URO$uwqLC+RL4Mn@$*M0aH`m+hbIsaNs9PW0+Lvg z2M_}t76jJ)Rp!te5eGKiHa?dESnibZ^1P`(M1-Hv0Y|1TyAPptxmHrq(S-ka*s$y; zQ*uHxeR&LBCon!1R|tHNGtdBChns?~XF>oXCYSh-9L{AenZk^~1^GbECoZTA)eOC3 zE`wvu?AV{}S(XPa_?F_U%BPljqOs97;pWEMF*Kl;z z%O5#Uf8X2nTNjJ<9Fs6|siLwihWlbG|1z?zW;P|Is@6ZmE5E0d@!=G53==GYe<~|cH4tqL za5%yX8j8h*Lv^Wo2+{WUmKptS#pfEsVb#ZY`vR_as%zN__m=Lokf^(HAS|+#d`|c zaVBt_Ka(2VKs#L`;TD3GuliL)$o<8N`$IuVAR@}(FPaa#8?!}y$g2@md}H-$x`I`jpo+vlc< zs;~eoKT;PhvnRI+RXRkI5L)$j385PaamNTOW~WApL!Vc8zPL-&wgUp4Alc4 zMj(cRN#^i=ChcWk=cX4)P_XdUB{vKuH_|i60n@xfviXkQaXaYLuzh8TwqfJ!pMX5yR}-hBwGW10;FJQTkHT`OQE2oAAaX}{NWb~Zh!PlLh(UlQuh z?@JUmt|>w9Aw^FU*keB#-2WAQzJ0*yS3KU8FB-1M9WKA6;0>hd9+AW_TR%`{TosyeOmBX>47UDa~ zlv5uc+oQc5s&utg9>AOX56W1U1n}4n&TLD@8cZrQ^ig-2ns7*=2EIHTs|$N9!`D?)^8SP(F4J_ zXi3;|q#4{my;+a2v|v=XXFN`VStBX|-oIrN7?*Y_{{60Vgg=`n`ydSbNHV_gM>u>& zS}AlK7>^NrnDN&;>`Oh|6bTb0m!!nXPx6YJ_!DUVg~Hs7F1-6r6W5RGG%#*AkZJ6V zPI7{4!x$1U$MTXGn2~nCjGXXP(cV8sVZT(M!5w&SJw9$Mj5_FzA8|v6f2^WfDFdn_ z4~7>)twYt8$>zm<@pCP?hQoY`)F9UsS===mZ+seBSlBpSHS87HRaxW2p;a#xe=9SZ zQ_~Ug`9{VNq3!ECZ>;)ip~&(lrt-@M{m(f?4~*@ZI#;g}P`5ph|A9?h+^FG5YsL$z{!kPVnL9F6!<@9Zondgc z`6VY%iIcy7#|!xIJs40^7fCKEUmpfldx~CXpbGzN+Q%BGDiA)r+j{q-!V0uXZwK(S)mi)XoT8&LibCC}$| z-1eO@JsJo16L)Ueq?OM`;>_e? zcu(HVuAp1EsefJS_!|CRyqjdevSWdp0P`#ymp)LUyptbZ6~Erk+|^0K?1WuZEP5QP zY^V)h)aKPFUk<(A?8^3FO&T3h{Zm=uHo4Of!`#;!|T4I569$hZc>pFCD4yXQ|;+<92 zN~l

Ph)vh-4ZK*DT81@*jBgC^MKxZV7jM&@Q`*()RS4MUnORI`mqFe)OL%6Hb07 zoQwl7z9`IDP?!a9vIfw8#Tf1%EtWtCq|mjG>c-X|IlX!SCo^|YxNrF{g+H3mo`t5b zVd-qdrh6qL`+ToX`LO9iD`!C)Vfqi^z2u^tKbrBR8eu>pWfNXX-+gmr8I4K2hzlD@ z$ktKFGiH4l!#1LL|i%dl!mUri_Y|X?uK9`%oFpPud(<3eJ|M7?Ag*Hzp zyUtUx6H?@bWcy+h&vIr>mUxlAHCu)5$9bze15Qm%i&k%||Btn|42o;(x`ly+pur^s zC(yXNyEhKO-QC?1Bv{Z!8h3Yh2u|Y`fS8`r(_J126FXGWt=1gUNj zrx=&QP9z&WV4U7UefC+4Wivs;ZbmWu(*&0c9At@!E!R@~vxW z!XCl6Q;WPXC=XK-)YJoN{iGR=$CdvjQ#J<)L|;lWpmgy56^!hdKF0+FP5vC!m%n$L z2D|e$)T;n4PJ$U$CNBks()+7^+N{KwJx@@@cEiAeIXeg*h{vWqwk@StVt^i35D!s( zvIvKF`K!%{gj@lI1}P^fAq7#g%pf8V1qc@KJiLt!R5Y+bWYS7C6pr<%lnZ<&+^8Nn zA5#1|X!O7P%+)v+Xz`Bch>kgg7ihKK#~WEo>}m}A5aLfkJFB3|KWzWzW<%Rz>_s2i z_?Nb1Gk#DtYikPR5m>dI_8ZFX2QoyQlFH}Z4<$6P++u)qo{C~1#CF7KT_OdaJM~*W z)jv{EU|wHOC{k=aIVQrT;a8&1RC&+8@gnFaUHm$>&CxN)RKK{R;KAEtb{y#9d_sP% zd40_dD6WU@R1awd0$5W=wy^;AvRrsKF%+-w6=&p%bCxXEW$DDT2Yv^Dw<_Dv3l2+5 z7Y>zWQjaXvxut=e1>55~&=iYx{cHN`45Yt&6fhGpuUL_CO*HGWt%wqPKk8p=lDl89 zXgkJ$_HYT9bjT>fwV`-HQoxVsKZGmc-97&fj3-S7t}kU zLaw)5I0+4G)05P4dD%*d+r>aMmg(f(w_M~28T_Hc^HLO`qMBWt${#||dAbQ4ZHF)8 zPoLa>>foJ0W*b|_^y}5TgQ~9VoNneq&`NowHESji_KK*zKM?SMR+H+J_(B}wGC_1L zYn$sMh|Ke3FfI*dGK`^r%U>z}x%LFvQhtIC$sX(8HlVmty7GMBazI^k|pXU!RCb$IWo z@@q)R9a-PVKxHGf&wiiDuM=S1NeZL|!HH(m92A-?P@Q|rvnWC9Z?mfU*~T*m(Kfy~ zrWZ91#3hy6`7zo(;R9?gB^d&%+P+1FW<&9v@IX{m#_Cj57#;W&uijj@sA-ZB_wq!( zj7=eTeSFO+2_&>#fKDD!%KC#(rM?QDy^#@IYTu)c%X+(cXUj72iF5UYTe!*_Q3JlU z3qGGOf*V#ECY{y`Q=&we+lUr2h*wW6St0(3Q4tcD#_16WSHOJRF4wqHNn)SqgfjFw1YQ(@%!R>KLPGE#wbt8pChRvf`AQ0lpp>aPWb=SgkoYwoDWNgxHGZ6u_o44DGbBi z#E`htk56amDn@oR8hX#Fe`UKRtU3s&C|;LYMyg9bsYNaByE*Srw+eYjCYX9*Q#}Ll zZ_?FQ922^_A$L!Jqxg zt+k3tABPV4x8IbF2uM`a?F|+5-?qU)sT@&Qv+g=aBiWdjzREkQxRPInsqEL>8Qx6h zympBz9@rE+Z)6{3#CcCLm-*mw$#nvRXC$Y+x%$l_NQ*|quvUH8yj_fT=w#Gfe4r!0 zieV~+or%R#I|P2*WhOLpoDYI}(ri`T=JlBs17ExeiY|@wI~PT+q;ZX7kGpSh`Hpb& z6w7y?6?cBu!596;`j2^v)%y>!Zt08=Re+DGYJ&Z7U1o&CIF+?|Ub=^@P3j!0wGo!_ z`AK^CgEIw^_=&U1jD0A}-#!VB`{jZ^2%Wzry+ril?N4B}KM9hdeC5P;;v>7dH)nBP z%~$)(AWk-l2ktsj-x5r{)J)76~BLyWJ=Qqn`qNvso?C``Xr=!R#~;xeW1Ue!vq;KgA4M=Fw9a0luE-jJSu~<33r8zUMuj9p zFB%~i*MJ51O!V1G{uuw*2SXH{Vqf&NAdV=yL(&qMVzdm4*hMNXAc z9Qt7n=C^!WSESkQAdl>nHgWoVfP+-xi-Cpy>INo_AW!t&>)ZCzIJvxHmzRM066c^r zq#y#bD2j-z-|>`#OzEi%=5^7Ke?yHRJ|%=KVi>3^zp12q-^pfJaBZI+;9H>AA@yB> z&p?UBUO!WqK&Xy)sIC2E)T*qgSF<)_au0d_`hh>!$WyH6lmpqK(Da+T+^Wk>*>~-3 z+n#qM{dAMTik?;HMbB`CWK#x>rk@W2kV@JO|HEiQEi2-G$%h!ib3vQz{wZ*WiphQf z+nLq*2;drX6;zSl_?F!bH(QmVtk9i_4lD%^nxL0Wk(7z~0&&levKI1^&quXOSJ3gn z={&D95UmV~cy$9xq<)l@1cu~2VIn&woD-z@>oNVL&QZ+6K|wmzkMO85A`MQ8P)HY~ zD8nNP@#k&%wzQ@qv+USI#I}^9nndCqUlAjz2N<$`;B>5%n?`R!nm2wqswwiQiXLW~+u#3sw%J?ANRF>FfeYdHj zHDZL)xKOPiMlp)6!q!$)_coq*s99CE!)w(@p;p{kMyzh}Kl&TBf!tq)9oMD%1E)u- zrL)|dJUbdphUDoz{uxfZtP6>mD;u^7lb}};R;XC{4RnT#49i{~UY1fzEDJ2tx^Kw# zL}7ykS+d}WE^e*=>xSDoT4Yu!26Mf}Bp2dCZ^#<(@i!a0)NGQ z#|<`R9Zb+$u50~8Ie|L$;VWbom}TrTu_)1`j>+4*7Q;48FOjg1OYxjuUy3(~kkQa$ zM4lzP+#IqNF0dYM<6>G~n`@$EY&~qd-7a6)f$%+GuC**8vn111(%n5;X!1|MNuGy8 z>wp)<7Nsw}TAT!Of{Z8@Ex6#-dl&XHlpMv+?#*dxMyrU0gt>0bF+b~tLtVJmPTE!{ zV5-?r6ll=36vRn#cQAFJJEj%Q`!wXBZqdG!phQ+YKVo<$wS0{IMJkzl0D4x#`_h;zbS9lw727&B{!Hk;Z#gzyC2>t)=@C!Q)n5tMRhMi8Bi@@2aPUDOX(^I zi`+Bpu9^);iKb}NZ@TXd@T5(CNQ3lp5-DB#yloO{=5E^a2VBgkWXdReFNwYJLLt~- zH2c(C1H0A>Js~s_ErNFO=qVUOZ8;D^v37r5b>vd|tSKk#f%m<|WiS6Z!}4!Tp&a7* zbjD0xmklwzP48w+<&Pg$x=nxSktXnkjh{`;7}(YWfWSn%Qw9YLb8z$VW`CK2h@jSR zs%g>C1(*eK1Ck9apBI(UT^^z=lW87vWZX85bLGURnnk7D{;+tOIJ)YH)96*14$l_X!5?kX+D_V;1YblQY0O`d}-yBPV&}aHor%M>3?6TikaRx zeE0VMKkN#Y-ZNu`2Hk(Bh9fPwaGHoAde_LB z13~`ZTVPU#=-Z_6KV-31d*?KN2psNSWM|tXSr%Rq{GWt3c2!AlFZgASXU1MFeFWG8 zlUcL}3wB{C{%bo2?YIW*0IR%>aN-ApmWQ;Q?%$y}kec?Km@>5Ze}!+3t=+h0#aj{j ze{u7*X-~8fLks3tcH;feKpm6zw_2QoISs{Gc3M6h;c6R6<9o6CJhGRG>P4sq zE|3I|tE|LAVT;5P@9Dcy~vCUoc904!OF zpjucD_{N~?%1~1)X8CCiTn$FA$04zLohQ;?JUuty;cYL%wvGbH`s-*v-&}2Z z?7xL1=6?B?{D0#raRRJCCoEBlXvL-c9M`4uwOYM5ASC3`iah%Qi=NX zQ#D>%C^xY(?GM{(MiK+7Dv_IuAL>kI3w`xTBzY>|=juHgv^eDsMKexIHA(|W3V%O{ zxwh@zhFbJ3U#Qi4auqHxFy>~GmWvk52F#&he;<5pK+n&IH$?Yr@*-wfdHFNsp z+s!%jj-r|q$!jMUHi4q2&u}Qe@wLLcYrY`o{h)YRI$!D(yrdfS4>S=50f}Z@l2*y2 zRMVre2}D~km*@GE_o)v_-M56;oewmSf9KnmyBQPP41hhhREYwpxJ#lb{uj$n1)MR- z48zXhKlpRo-QPr>L*HKVcE#*fQd2NlvzIaCICN0{(;`{oGLTv4gQa4=RmXLdXfmz9 zllqlMF2RgAWA%%s@$y%4T;;_U>)lxsRfqIOLnY*&_ZVIHERqrO+n1JfQ9rrn=2^_S z?dr;bqBJT_m%FkWuhN#sJa}m#BiwrUWW*>-z+kc*2MkJRNMZiz|INbm6O_n?9`}!} zeDDFxPMnQ8o0`7G_iTu^+Ucdg)V}ToG%NpJJJql++C<@L+Kc*9f|elgOt@Q)CDoG3 z)KDi$QB_gyz&&JN*CpP5%4>no z)mVS%K36}4?A_gM-W`|R)s>GoywNWagFE#9^mmP8RFAHV)rqd0V3?t>oxg{5V3cR* zcV3?~dhPm(T8$XLyX~6mcR&HuV?|Q>ec(~)_H`Ngumxfr=D+4ESD$p=i&I9ECk$f9 zntAme>`rc}7jf?iOVB@r3R>w))8#s}xZ}$9x43iXA6L(x0xF?qf=XhcIf0-v zR2kKhD50bmfQ@{mKr_c(+IkN-Y^P{Lr-K~c#8b)OCzPn`;QNjU;Hf54gC=xz2hHml z(R2$zzrT7dEd|hAX_jbq2UR^Fx1H0^CmE`A-r;^PH*|&$KgtbrUpWgE7R;SoYX`@h z$_&*;T6DU!d_X{PwskxqH6nP18T}I$*#tPF^j*B}f*ZX>rrV*XY0+F7YmtOEx~W*R z>eCQZKHy#&gEd=c+U*=%8UIMs&i|P*TO>g#C)*|Hj+VOQe};Qn>XvMmyl6wM3oOd$ zh6B${9F^(D>#6K{2lVB`aR=qcD*N{MC4v*FA^15DIiuMC8J7@<3Sg4`_7zB&ZQ3`1 zYWl~tOkQ<<{C0#fx-0 zC5qCg+KUrkl@l3~qIeUY^1fe*+$B{u>*}az^0(uBJ2A@g&@VR??#{>psGHlix;HIq zzdY5^;`=LCndgf29DDA06_M4CD3beV-nhkD&Yt@&iCgC$vjf>=oj1i%=G1+i1-8oX z;0^&|o8lqp*a0!WSbLeV0+8I>m-$?tRVbC9j;D7%`vbe614PQq3OlD6hZ zsO<34 zlDFYKcom@ysi;tmbboRIwWMoz0@gf$W*3nE_1q}y$)vwrljH2fTegMjet65mYR%$Z z%Q%ZuI^>%@;8k-f>WT%MQ@Zg6M){9^^F^jWB==te2a*P)o68pdA&2x7IV{-za3h|^ zc}gPCl_wK)eZZ@4YftMFj?*&&qhRykB=leGwJ-6xs}V+-EULe|0itxB>1BkM2jlP}k|-Jk)NHw8io2;=4OzZ6SIf!Y^1R@aSQ z9G~;G6IrHcf*&Fvy1=I~*p5D?vzpQ8x=}DXHZMs2r<(`wKQu1y2T3yl&;=N1!4?g1 z1H1)N0Mk+%*sM+KD9uy38{#Yq0RGjxWk4|#+o1a2Ho;XV*?-Cb3bNWX~)unhk{d+DWp7eqL z;8iu;8yX9 zZyuKTNQ92h$czs!)z-ED9hJT}Yu-(irJ)v&<-M>@Is7U{>s?XF+GLj%0~OEcE414v z4JTeiYH4HuydI8Y?@UbWb=f9`Yfeje2Y&nw#kqlmF%J2cO$yV+C>kADUzqXpO&nnY zgJzZ^f}a_U^gDj*3i>6v)bI+n=aUo}0@#AI46>hP*dMDb9jRVQZ;%^kwV>;JGN5g;cK zYkRgU)}4-`pAhgO5|6ud-)Znc*Wx~S?oqf4bfRZ^nUiP19sAMjY6p5kTc}H}CF@dD zc&4FwEbW30XGQ?*GO*D#quO-SC|%-NE*6Sa(Kc0Uazs{kirLkDIL;hc%#ARzigWcB zPsQ#Q;`9%U$!k{l(;9(Cycol869Go zoE?9{Xv_UvZZr7xd~wBSq>5{~1e@@QA_yNxl1l6~{!AZB9}9(T3mU#8JaJt4_`xZ= zpx`XGlIJ8mlHJN{g|Dpi&h=Iu68QO|*j!jx&XN(g-@Rf@#KNQU9LypT`rYHl-(O_k zDQa{&a!ySOObVPWYZNPf*EICM(#UM<;OInWUZ=ZCF!~ythich+$p6e_wOV!H5ul&c zeoWHTM3~k_$k$3ZXm{hrzgX~*B}ts{c*oR!Q7%^dk_~qW=Sv%caCgM^dd6u*YN-M1 zC7Qu4T3fv5hFs?>O*)D}H6Kg9H=bA!)YA~uTLfY7=| zG`PUQg1!R-diWYG$l@D`PRfZ~W|b+P`?o(rvmb^i%vL`@JiTSFN68yY^u_x1k3$pt z!QaQkx_Y+70ET94!4cZy4E+@rcx>tU`fQ)-)My4~3^vB}>F?F24RV_d#@X$%OLGVc z5Z9!<_>JxH5hw+Q`U9Qc1X45jes8k5Lls(YIyTR|ce5O?nOEsi`7}>MYl0g88Z{Tj z)*&Qga*{Bgq8})Qbc+%OrllsIRBK?pylV{kq2_1m6!MPngBcmf@(YG{D#QWc$hJ7S ztpr44zs0c(ghBim!_AX!NNMnB5%>GDz1BypiH%k5LTt>gBd$61;d2CUop`*|oj)bD zKr%!TVCl*k+gJNbE_BY#TGBVREo-DH%WRIWc4WePX;rz#;bV=1x(Bz0M{}hefw_Fp zY5?7d)y)z?6ZJu_A4e~Wi6)eYU`G$Uor#OAWiBC_%*81ApBiFo`#2Y`*siY0>QaGP#Wl z8rv#v{bZ8Z@bGp9v%=33*t=V-%L}R*rO?WI>i!lNu`vyyzem-_F|ljVvh2)dbiRs!p* z%)Vn!#J@ubk<^cXcW?GsZqCJ;SQbb6{nCWT9=kCvte;r;Ux_*7_;JD=`ua^ohUioz zE^Xb4@y;g8ZZ2u(w-!%?>>{rzdLjIB5@AS00#$d(Gdx5{-LxqQ`T~TSXzb4V1tUnD znm97~XSsOcHDQZj!d}G~3r5aFDVW*1JORrEkYnKN;E7)GpiS*ZZ5$DWzV(}&@Hos+ z0z=xtc`}Ey^On}p)7Ahoj?Th5`^amaBUw2q_J*$$P9J8ez4;d%BZ)H)Z?)SOhRkx0 zaXa(wJ2&%E|77{cSCZUz+qvJ$_;M*V#`;+?O&968Ijmio5onui>GdkQl>1L z|An#OKPWlJo3lVUtc1Us7rUBg!#>gb@5)NL_!T2Y zR6at@9z;S``nJ1Zy_(9f6e9!pTHQu9>;+w2PhhuBQHl7c31`H?b%C*R0~oAxW!e-^HaZ?pTEOqXToLs0^y-x zKk&T3l^Ui1$ftrKAINtL9I4=?Be=xR)5+t;F@`M?9xPPz#?1z}Kw|b5p-ZTsCIWyF zJMi0Xs>c!NkVDR9&rP>tb+ovyD*F=g{PrKnXbdE&Rv^XpO}$P2rZqBK`H}EPc3;aA zQIl#9nn)*}{#!D+R5t@=f$vXtb3XC}mIOcQE11QeY)NH47_rk0r``t=Q1}t(_l&Z8 zkAmA~$+xn~p3;suN)T_|R{ZdDf66bS#`t6`bh@dLB&W-S-|ZWW@wLz1Of+Ph-sI(7 z|AUF`be@rE;~!lq=c~lR&k++pgctg0q@=?+fvWqYELUx}~Kpyf)Tk2ky$h98f+#^7Z> zFG)4Wbcurm2`MUGbg>T}vyXD|!TZ7}oCl%5TGm8b?CWQE%eUA?_p!0??vHj$v{ACX zB61AEF-(JL*j79*{12G4+L{ghg75@bhQK-Acad=PJjhO{8$8lxwL$f5?td7{5s{0G zIC@)t=h3fYdaWXMDE535DQ}B>*Ddu65NXyG7A;~RE%F7+pYi7rVs)|E*KX?muSX$Z z=S&RtD(snT$TwKUh+r}DA;wP3P3sKv<%XalkaEkJumXT>(^g`Tg)TB6PNfpf5ezHBIRw)=gltAAZgP zE-EI0Sr$k8?Rs!bcDqBs zx6I@gPx8YcB9n<2Y_?E{I)FWO%outSMft5DM)nnG|Cq-)wN0R^dCZ3S?FIQ$Fy{<)|zMC7qW`=c?$4>mt-p=}C zJFyaAX8=TAT|q9ayHuQgjBell;!lRg-#@wa(qJda0k8zgQMld(s<2~p$4WFY!OW? z5h~gz-V=YWO^aDer@Uy7+d$JLioPGj=k{)p&ZUbt9;1EudwyUVpxdQvWfd4sX|UKf zHPXGcs%QDtO4zg!Kc|Hc!Lm`STFSZ;n+vX$@bgNv$f=Za%)fAok!pzZ`R}h0j*39^ zIfLKRrEF>3EVfSDRV?b{2#4bXedq~Tb=XahqnqzoBvZ0}oU!A{!ksGoi=n@~5309u zlzRvcbedTI5|VMFZ7Zi)ea-Xyh^^ASaI?d%5J;$0lROcWOvi&<^IagW;WS86cDncTcVN_RN3GkChFGV zD5$73$C}P64LNN$sHl~^;6FgLHe!nycKU|-DgR|Lh|usVSc1)fv$FP$Y^A8GZCql| z7EEofV50F1{WU_E+Ur+G*g) zQn9fzSIM-4oA``*Q=iA-{d`N-`Ak}b}yv`oaSjg{%W0FF?Frks(hL2(<#2-oPP zS5~s(z9Oim$xCC ze!uViPF*r(L`e^kWBM5;l%8^>N>tGx!Z>)5A?V_fc|bpNOCsIRz=vysmx=5R%4Vfk z4m~zI#}C-W23XjaVbqgJhik{>55s&D{q(S(pG|en1ENm-nhDhfLS~6hK%ZnhFf8L` zQ)MT~umS)}<5UwU)OsMsAA#R#V7fqH zD0WS&A?ft&PnBgNn9)f&SI_Wx!%ddt?tWIg?943 z7VmD|aa^-a>vdiqd!u(+GQ4QNEG=~xXa9Q{4d+=(JBn!W#X!J_9Ury)z@?f` z+h73NbKXc)>rdb?^NCPZ$WmLz)kUhD;y6rE(AUMmm7A(Ini&Y4c5^M*86L+RufY_r zLHw<4Us$_;^~xy|Ez-q%rP~2Ja+k=vtLyKnof5A-tEnEebGu>`TZJj?@~|x|E;+2B zKF($UeAe4;`tXO7$owvAu~qn?v4Idi-`#EOU%eqNw7a4Hc`1tJY7S*W zxrIi|s`ZtXg4mPgtL_2F2qJ0G{VcpEGI_*+Vt+0@svaNnUo`~mz?nJ>h7@N@6_k=i zIG_k@lAaN^vPd68jxn9pN&(z^YuIS@9*b|ZpV$u=Ev~-AN#4D#HjY!+2bc-?Ue)RQ zW`y4k$ORQ%nadoF)}KfW{x+5qZM$1+vdc|}cM*L3AE0de;Ar-sMVfRR9$C)*R*z^{ z>?ydoQ7Rb^3=#{`R?y6topcQ4?fjmm76G=l-Fk48c;cpbCX9cMF6n!LdKjTfNi@xz z6jNdxw8PIv9y=z+lsGg}sXWe{5l__$tZR8i-INe?ca9L3aK~W`5nX=s^>x zM-e}ZO=&T+J49!T0tRP(7Gp9o@pyxL%lg+nOM5w61{$l2Txaj7W%unnM+p^P|VX)=}JrxiW8!enNG(pIwquo;?{&72f0 zH={jyacFmxkO`8(33_0yEM=PLh&RPxK26#LWZli>ex$}@Ya>0nFY7$gCy}}J(0|IH z*_flrNrd3m2dD%NvdLZF*)g1=5<2G&oow}H&#Brz(a!y`ZLxFgqwI_ZJaa954(fv) zf?47uh_E#&%=?i!gs2PD`fkjgi;vEW_7UCPQq|h?$7MFghcT;fq&v^PT)V>XXB1F+ z^(f>D@+;VKtfg0Jd<^e$M(fDsF;u^*yJnPX+XbM>)*11?dDC8GyO`*^pw> z2(ePLuGX8!yG4~hdl)2lBj!p{Jgf$qophK~_lvwE0)7$09n1WOaKXF7L|j%7(R;PTi$6$gYN;;`KRu z+^1GzUf#pRu}FyLhER^|9;sXUkJ2}P=3~=4E;(#9-ZlfrRMXWB*Ol-jKi>W5t9NI z6(}FnMN|~$qYmGL76Aw{$aemWA?bndIHD zA3YiGaOD%&eIZ^NYcgYBOc?i?ws`k-eBP*JT2577f^aGO+tkzRx7XCJ$40;&Dd-%i z26bRs^7xHi#Yt|_I`K_n294|r#j{uJI7Bt{O)u}a%jeu`KB~L-cqk8MMf*&Rfp3Th z*)ew5Sx_e9wBJ>9;k`ESOrE?3aUaQAu`@r{(S2Uj!VoI#BBv~iY4O1o3rwoGEZ^qr zkTVG0_<__d`$yd9NTFk7t-t(O0ns}iLazgPGY;ncF^PB5pet<4u*9CEHGz)h%*)J^ zRlk;>szoI0yo4;Ob0S9bCX|i%)_ihbesF2D)h@kjUY!0%yKO1w$bY6aH$+41gPq0y(Sd$ z5wN>e7+(LJH;1**X>RtF9VB9qOyu46f1U1`Eg{h}BSs(J! z2R5p@MG-59ci<=h-5(Z~s(0XJ1YNF>WAk&oJFTlP8QCLVzq!`A>k%yYtXEcq7Btyp zD8e4!>=ijwHS)VB*7A*jH)21Zv`)Kcn37Mjv3^KY%fG=p|7lcDRLxV}ZB+Fr!_q;Q zrsMJva;K-MMnkQ}LoGIjG;g^O(yPcz@}78-cgI<$+dAXSIz!`TTGdg=+Q<2EpCQ~9 zk5;h&FF^A5b)#PhgkE#vpajLcD{=&x4wBSu6XQr0kfOpuh zfaTvIzh@0{u0{IQ+*$c$1v1quGb=R3 zvP{kyK!VU+@mPK9DYVNACvOw7&%b9mczqd!@c=Bd-Ikg6td@j2l!ZFzq71&1%1+k~ zrHCpNVss6%ZPkN9%)sm%8Qb+XB5wa2TdgWDZLDvdZkS^x9Vp{%EtETkEzzw19B7uG0tp484uQvU7SBW=8=~sbcXQ&yBDJBZ$GD; zp}KD3Y-hKUQOh(Wuv@Gm!mse)8w%}ix(?~_r}A<5tU(n;1dYw>t%Mg$>VNdrpV~_v zJmW{!1{m+mGHdMC-28stPbHs<>$aiW9|$!R-tW%1qb88;%mm~H$aMZu1WaG1mL@pS zWS+~P+}$V7W~M}H46z9d{7@9z=brgJ$+x^5cVh2)(pZ?KrX+g2El0E<7UH_7id%F+o zmV~!Lc4iXqVbfuYVHDvrka)rp*n_djqreR2CIHM3ui*+2Y$%Hj)^`;vVo4q8&sfcY`gw=ils%7m`yb1u89OUf6Zg^T0XbYzv^Tme#GJ1*wxF@+J+f8eyi$p>5&$hhjtaSlZQP=WXkQ4#p!`u z1qXypTLjhU!*||wwRRa!50%fCGklQ`Dgx=L7Yk%u!_>AF# z31#%fhGSEKdsh5B{S1~E=Y?HTBwyN$Rmd6qkLiscy``Q0OKYP`uaGf22#CG~0QPN`1a+$rFDjl+Rb^Y)}yphR4>BqhCAxZG85= zMohR12Xs;)N`9h|Idtv5pak!%Wl=YmIgZPpDX-mYXu2cTF|?X^Q|axobg6r>e+)7! z1fz8%)=U0c-k0f$j*;l;G9;1eZ^4NC3QL5(AX-b>&)`gj_~2K;i0JQg#apV5zyDn^ zZ~%il5yWM@d0P$?h)P@3puIADxJxPma_} zzvZx?pj)iCpqg}?Z>ve`@(&c7ODz1P(!_cfd+N2)9AelpQ>8!>-@8b?Us&7exu7$W!uWUKG`ShrcF zOX_r|mi}WO_bCmf6RIccNz;`O^P5vaEN-KI*jEJ`??u>EF*~AuIrLUz2Y`O@humNX z#Qq9{if*3XEld<3dvCEz1h~V+Q&D4S_Z0Y%#FGGo_X@I2p!?Nof>Ae90?J9_=_klt zu)8hMscTZ8at<^W-spAqJyZ%MLz!(}05dDAnx5F$W0#5t&p{_}%>=r=#EV<2i31AW zIXBt?ceqR-;8p6wb(BO?BgW!{83L#$<6G`$3B?@@M;gp**)Os&5KiEPJ%tMi=qL=E zV2~Nw;JBl?$z5kLHgeqbBY|ImF_`1=w`Cm$wW>3i3n zG~f`y{#~9kF{-JC&n5+WSelNYvq2_Q8Pa8&Q|c|qJ7Ix&N_SSa|q=u*VP*_$?91nQ#4qAunou8LZp_s|yFcoor z2``Chk=vc?-XB-H9110mNW8ZPq8KUv@vVxxAzs}Na&QynZp$ImFZdTho-n$C2PXdu zL0RE@>fw==8MW00c7h`C{4lkhdhsvjG_}j4xV*6u+8@a%bw1|oj;MvYlqG~0*5evh zC$$eA0&xnY*bm6mPBr)kFIhnr@%TDrK^DIaz&03~2*HDDqSftef)!f{DazaijlKgW z)qE?9i?+p5%B6B6=+d|Z!r7|pXyuoB@NeL+M8#LVL7ok#?aEMATW`G03E%A}6U{gM z0vOMDIGPIg&cNPQWqak`Y@&;VMXTnd$0g_PghN57yxj!v9g4M3)-X+{uv<&P@<|FZ zuW%K&ek%R<2G88DvhQf)X;U(F0~A%e0Vs=NMokop7weQ{72PD6af|&N>Y)-p3}>;P zSTDgkeP-*=_d-S2y%_til+Fl;uBW4ZF3_#q%&F0wNw$MMc^==R73Xt4TTr!Rq^Vgd zoufz-;oms-y|)SBYf7XW>d#fR!E=Gj_P)?KN)_ecQgyi2iQfr)Lh zqtB^P_~%6QlKj%TecNNX5?#IIlU!J>pT)Zdw%cbT{FYVZ0na1b0e}zBAQ@uN8w}S} z9r4xI#o`HGpg*}Nsbf4g$m8x;4#Hv_R98H^W{{WM9{I4Kx3-t#sh(wvG4Ave#UA^p&(kN1yETdd!nnA7<=h zzxOd_Sm#E~v(rK#$s;_zI%E`y?;||7qR_4ycKK0s5P*pP<&(a1%86pf63@9E=g1DB zm3<7L-q)G|d)W~v3N)coljwd?7)myttuVc*NnJ| z>8qs4tT4aem)(ZgS?@bT^?J!u*jp1K2)N&}&Oj9m!AXj>ER zDv5RgOfS*F%3N1>qlOIy{XYD8Q?9j`6Kb0 zKDwk@YEJV*Sstdw^zc70vCmM777e#Xg{}Zu8O4X+0jRU&wv&D0puzfMJdZ^Mg&8`i zop;m%gQ6c*EQDzDhoO>c{T3QI3b=u-H6k10GQ0}ik?$5w*p(kd%F1dQzE1#XW@oje zBp9Ik7%ACmwxt!>2q#zj0_clK+<4YcFEpO@in#&*#3cf)eCP0>kSLD zwkAR7i?O}W1t^r*Z-JqsedN__P`9z>)Ri7)etU^Ei(%bmT#1=AAgzN>J`~DD?1w-dfRt# z;s^2Ez3BYgC-k{##3l4fRdN>*<3w>tUa0kRJQa0U%rKx~(Q!%Ck4 z@0cfJ5n3Ndei@?wlVRH(u*;xCzBjvke@ZIbPjpPXt)Tb~IzYEC>i)%^&BBV{i|qX+ zJHjC+_U^LdOoP{@I=83ejdtgoO0T!}(xO{(-ETmT?}1H0^PJdqq2UfR+46sW*VH{^ z0c9PY=zMlO>Y2btfu!p42mV6y1YWH*h3Bc5ulhuNO!cvui&P`yE)q_5bqiOSiQeF_ zR|Q#>5_#8QydS>Dn7Y5HEcWg2VPGS;w!*xMTFbXV+hzsLkxmRzHf}(dnA8s>H9{Do zAZE7I9?JFDbdl0`ICK+hO-fT=g+$r!UXSmCZo&IW5_4SzW!48uhBokdIjfk==4c%g zKw3+oLxJTmcr2f{nXJr7qdXtC{>Za#`O#WrFo#C)J%Oh#Y*AMcOgVGhD%?Zx%eM)HukRS2KG0Whe1EEe&&P6 z5Rx!c60#}!kHs)dGVsWoSy?A)F}Bd@XI@$1MIk-K)d=OgdAY9*qt7I9q5VY+ox(4! z-esgSn5On)^7ur*bWgP5tneF!{(Hd8Jz(jkwyn^NlZvnvg}KpQ3#x6a{M00_-0y}M z#H~U(OO6O7d=}7tiXj^Ga3)TTh6qzaeI|#XRth|if4_P?@FlGW8M3n)7KQjlp_t>1 zAhDwCggiXLQOttXu_S7cX6M3ff28DcCI16wdxrcaEvf&HudjfLs_Xt%5h>}C?x6&v z8>DL}=@uAXbfP<$XJpibpNc3C*S`ep8SQxuJ#qS{w{^xRb&?uNx3@C4ken_&bJj--*WJ=i`%bwavfkUYKgP@3U-r zjP8m=Aph-QHHaK_Myf?Tv+BnzW#E6U)VSVXD~R!)&(Nl23iH()vbVW>F|qTnWt~3p zhOa$?(aI`OL4K(lV!lh|HELM5XjsQ=m?U#3;9pdMUbx%3r?tzaHSX8LeSU>M#17%b z1nXg*&Z1J{t+DR;1EBkmnkG>49NZe)99_Ke=^#EZ5_ZXRe%otxUW#?&!ofPkSJ?Xy zC8X7lz7H;(T|}NH(&e4K$US>ubI*x-$jRDh)rk%6U^1ja>B>F%0Dj7_|y{p7PgGKIS#EsK5 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

^Rg6 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%0D?j}k2hF^M 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%0DN40^YqJKoUg#td%9+}?s2+m=b_@u1~$%T$#6 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

&eWaZvcLV!tZuHkU;a2j! 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 WGne0T%=UzY8mj~3`qc(RP{nx$R`P*`lof%O5 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�@814(1q7Ltc>bk8BBcmbU-=7}DzAIQoOOtgQ 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

    Dc6)ZyK)C4Y29R% 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%0D55>bz%x&9sV`>N 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%0A~s1%m}q8i_*eT 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

      B;o*3Iz!Yx9mJhQ{Pdx;gL&b-s2muQ^ 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%0D7%q?l)JL*4)10+MO0a>x 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�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≀HRJg*~w&Lgl* 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ðf^&^df+!#zx?%+!41>2Z}E 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

      3^h|NdmjArmoTMq09oo)ttC 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

      )#dwhT8vN@8M4og0Kz`Y4d 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 z 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 z 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

      PlTCBgwaf@EP@bkeTqks<~-^cQ3tWEB^$9x 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 z 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�Se=5n~)DD7OH*IlE%Dz(Wr~XH%?wXul}2W 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%0D)a)S+i-O>ohnKt#E@?Oe%#v-+8 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%0A!B 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ⅅVckV|hL*Ny?cJ=r0C8Sq)aDDs5;m&0GL`BaqQk3ap%pcd22nQ&z_#j&ZH znJBfx$ty8Z1Id0!jIlKqB;>i}uj=ALPwjW9#QF?)-3>Z&%va$_b3S#NL(eRA(=3Hr zSye07yEC}y1jRpjy#GL5D`edXEVX0lPhr(rly}*6F5t*-} zjpKIx&-Y8f7ji#V;0=3UUi8ayC*Uz13snDxWXDQRuqe6%vTdjcuFoc3PU<6(JBj-w z?Vj3}Q5a&lDY(xSp@lRoHBDC7s zU0;s$E^ow7v!W4(!EJpB&ljV7oc`B-6GcX-`<~@-D{m+k^Y_;t&XK}q+veu+aD$FS zV1p)oot&-3*wQv^VFR(O4PV)byZD!D#1A0uBYsg6)1Z}$NJ~$qt5K#ej^viRv~vDY zZR$d+Vp|I2>JD4n)ht7t7IJaNEFWl4z|RgjxujDG`$}9TZsn&`gzM}=GO_0?zrJFuP1iA61+KZ9ojzJ{&eXcZac;0B=?2bqY@3;W$3iF zi^1pY&)i7&N0=Fbl08ynog$3u_Yr}8K%w3c&*dQuxb}t^zd@m!7BA!>jDy+@w?GDK zgX`V^oBFrw0+Rl(AU~}QaR2Ek0wt>xjygIO%(Fc_08hgO<3o-wj)|gy`8#NPps1%M zWLPHNvuHn#B>8pS0R)Nk~H3VO;#N{W&(`{%5 zRBxR6;D?^N7&7j~HazLoZR>-LZ+Rfg*hA~`NfUxbIQ{j8Y3k~`aQ zS;d#hN?DKiKQA>noRa^XeRew|Z<-}r2gFjRt?NXpGJYjqAf_XPtp&>!8l)xx{;D7n zI@V|!f(>N3@_+cCH+tOp)#P`V;WE3~6l+ zKKYs!RklFphPToD8+6>gDZBIL$B?20iU3*tzmOr~p{b68S z;`{|hmEIbRBLz_RagRju)g=+cW;$lg&?3$8~U$FMqJBj;{dC zV62fVuxih-0ndVO<6Aj=cD?utYojjf!g<_SUA6U&(G zUh%vd@=nKJqX)4P#0Nh}o=^d6 zHfHt$jNrK#K;IG&P=-|GOW6~mpSE&@9gC{ApIBANE6v*-#DqO=eIkrqrj|H4Sga=&pTc}e`^^K^qMj%1v>lvYYfVSq2J z(QBebZd0f5{(r0B!6fmLrgbu19HSd|9*SVM`K-6MNy|2|CBD$-^B1{3&si2ZkHR(k zU14*WedF!o+KQKs8xvs!x+7NC2@5`uk#b%T7X7$|etz&4U)kn*RDy%${Kq8TLg&?> zQLuB3SUK>Nf8?vedM%CaOmfChaZ{JimarV+wqmh`W%%DV3_>)>DyBRsOF4FUU``RopHRKbYVa zE2m2HH*iI0)*%^wt-{Js1*&6hX5M8_?87QUCH`%P7sFHSF#r8%;~;&2N1+r@U4x(% zhX&3Du=L3^RFv{AOIavVPtOnw;>1>|!Pf8%lekXV{d!eJe`9VCdJhP`RbbDdb})d< z;2aicB+PD?*{OQ=vKNaQC3?(2QKV2pOiEimI#ddOgyE9b9IMQC~FuuAj1XJb% zGwL5~A^^rh1d8+BA6~-XTp9?8bGTfwK`r|u-0y#hHCP<2ke!y84g?xy{WB8+{^DuR ziLjvsJaX<;WLHf}LN!U2zMoZYtcoT9^>i2I>LZLvcHdRH1(lvcVOf}G4IN%1REi6w z^BpWWa_C)Mi_aXuT*jZ^kE({`IF!oSPB9}EKBJatlPR?b6xs$fpJGz2w4?@Bb;W64 zJ9hOU+4V)Njq|!m%=UnL)^XP+Zw7R&;IBmf4ReuKD@{9Plwn4j&KuwfMuALf$_J6nViV{{F0lC0_bE=xY9{ zZkfp~Xfh;MpE}l7*xit)R~qmhxa1p%Y`(aRqLlrpOw8*yFKSTIsLD;8;+p;|VccDC zGpVl8j+espr4H6hJohM-4bH}conph*T-8;$qFx)-xrOY=)&kR2{l~qC*Uog2EoBbP z=g1UcPW(%#!8ceIhZP2bbFAeD>An2H|DHP}=?9+zYltdEfb-DP_CT}6sjNV-UBC1K zf|&q3^JF{ZUjtKSj)MSUD34hbV7?_0JBILxJ@X>HELy;3Fhu062^-X*5NjK@A?JTc zke^WgRVD%!ksywtO#4d-i5~fYG+9}I8|fvFVb4Ov>m2g$Fq&qTN*6g%J7X11^TkYdc2U=E-%9K5zVw`1zN})f9eCl1@|OU%@l_@C}|F z2R5!CxLip{)dRL%;Dq+JJ!aNq5F_^ly%YpO2NZxv3Sp|((%)6N8DjS$1^+cWu>APX zBRzHnIFD}I&qci~3e2;cR@m)#O_hc?`@_E-CG&_|BRqC|d{n@47RHbmVK2g!S_GN{oM zu^*2@gZZFsd@!_yFdkidX83sKQ@wB8Q#@w&xD!lrI5VQ;4Sz_!8&5dKzE99Aa7{ zU7rgCT*C*X>jj3o3lz&R?rGgd5xw-Zayu8MI~xU_lx4QFQ*h%`6n-%!dcYK+YWKmi z6MI+-0a}+yHKJ-2Ybv9uomtDmDmMzu%k?QISGg=qmL*9mL~g?GsF~>~|FK@IAWzAB zmL#7m6U;pDlOtUe=$FzQ^I{m>STzH>RWrLjFsB71cYjcajT*vlM65ApS%0=jA(pP! z;4eMZbCW|}B%*gJD_zP-^l=kIUIe3eq5&5&f?#?!#6Xvd07hxIdNeqE+ZAd|RO%WQ zoC0#aSFJXJUr6eh`JB_UHzInJgay8_Pd)9sjVTT;J6YMZmbE}(&OA+%2KPq35A^CfjAJ9kfz4a(H@PUoS)-V<#WHQy($yBf8WDY&Xy zW(bq5-8JfW4M#)6h(8g0SA~FS*TfCYRT5Z(M>v`LL|HLF(Q5; zW5cuUy-j(-@!hGUceXl4B4P+@@F!gI5TiEhVZ>311f5;c8)z9kG#Tj_wLl#Gsl+XD z#3u36$#-uy62O+faP1yg&A^ihSDK^aXrRm4iHl^5a_MjxlhEmt5iSW@M`=!MG zU}CiKI5T1SeOJ-bb)#JE%UB*h8FwW~!|H94NyOgouIN80wlv3ylkNj{^W)NF{%S7V z-z9IP!1H$C(6fTvRf@GlkBel;dd%sk>$^6~>H;cxHR=cT5H-FfpcCArfo>_U7?Hm4KAy}X^DHOfgDfj49x+7oi|Hvc4>Hlgvln&nnrKjMA<~UR;Njz%`(7o zG4Mc25J&(ucm8Wo6cPn@W(Kjo4~Eb~S}uOx}y*Jo@a@3oxU z3%H*&gWAr%>Njq?ZgDu|9f(XC$dRQ(J-v~f{#g_3QJ3Erg?2Dr#flW;y5MFGM?2S_ ziFoVF(lF#yK046ndtBy(%d*Le!SR#+>AA3mA3}_ec3B$$j&3s^q*8cjv={H z8P|6l$u%Q&61*`*M-FtNvBuP%c+#_bbNxK@pC>*-4F3Jzj3Gatrr6j(p#O;z3D58K z8omR=W#8kDhk;t#()S{^5l;)pHfz>rGnAz0A=IMSo&<$=IWd2<&wq9U3U1#Mr{9$M zGEDr6lWO>L`xtRQH6Qd4D z@kQyP{J!@;LMvl8z2r-xABd1-NDto@c$mI#8F1#f!1-=t-A5`Dt6#6^k>EwsWO3hC zWXF1QtX8^ubKt1;0L(xd`!9Hi-jJaO3CH|3z_-2mXOT3gxZq#Q8h_?U(Y}2IAz-i= zQl0-EK3ZA%8NHlUpBA{;^lvT;@Zl(*_c&Ac;<=aN^3Z5y{pBiyRbPTXSwxY=zpByh zV6nB-aj&IG4-eFN`{v>fqa@WQ2wjg5`O(z3#r|gJ`2ErbPEctF7oA`qolqJBL`7mS ziN~iO+yYzVj)X5SaX*TiuE(1{*;@PvJ9gRUPzx=WQjYk04=$6hM!Tc*P^^*P6mm?+ z`o$U9_6rh@U-MN^dsY&`yHoEoDb*eaukT(_gIqCTq=P~FHMF<*A6L4x;;cofJMXDF zhQMWMqa|qyBxPc`uT?_@W_7D{UxMtv;`x!J$MotdI6-OP+-Sn#Z&)TJpNtf?cVkce zVQbk*-l$~GV5v%~LT+nWo(!+2y6vz7%K`M3$>g8&$pHu}()EMJKskULt zx(*j;1TX}Z=b1EM{2!f8gOnIl-y~hgP{vj4n{Q8n9z(2%vRq|{if$OJ5l8xUC5&h1 zob#1n`ZH!_nn+1~FYFapk-+=~J3chyt%&*Wqlo4Bz52Ilcgge`18MCY)&4TG`Yc-b z(m5tdeTlYK-{SRJl19TJDT_1JcL->0CR^i_om)Gzg_&C~WpT}b z%KdqA`7)?u%sm$=J|pt;v!=NzJvhTo%(YdkysR$FHBItQY;+5`G=48Q7F-sa#yyIt zS7H_lc9pEcjO1gq4oS=q9f~x!(Q|woR4#wS%GTMXT)OL&2y`kEp_ge6`kJJUc3~!h ztdeF1(C|L4h=*)|$4)5FoMob&8(g4rEy80(7WC8(yXuA(p5gL@=Ffms18dRRaVpj+ zed!?zx6-Ia3m@)N^=)%`l1j7+0VR-TOh~)^2r?8~RP(~b3NQ)7&_dM->`i$DJXV1Q z`T+WLw1q7JKt3?Dral9$ITC?N@}E!%*3tSo=ncYSd&gwlVSV-V0XRywJ;Y75h^5-E7Umwu}fOs@G0yC=k& z(dI~L$r~yZV9O8hl@-8){Tym_q5Qo~UiYqx>P4oFaCj3jXATYJ%bq6XVNOAK*RIH_ z5P{3!3jIcd5g4!qJx0QgHh%Y2k{X70EXdHS3H3Mfx6OFz?KvbXXk9}Xxx56$j@ip!u;NBQ(Z!0WEwVfig9^qclSKBv7 z{Qe>t${_gL`LUp<^iY$ln{U6i%!Pj&Xg2+eeFEu^C`WR*Nmn4hIjl~WaiZ%}-CY>h zy}&htQsp~|X2l>Zij_zu#@|-zWDI|wS}-)qqYQkXbMTIg%uJZuqp;nwFZgaNbuqOv z3A-toA6-4pA+V6n5#C#X1GZEn)BBtRqtSCMfnOR-J!$&MxmS$Z>w$Db3%V9`_ns5v zolBf1(viDD&m{bWuW!(pWH`t_b~1Ku`;M#rwx1G|k~Y#C^}7LSKSgi{%A-HNAgxgD zrZo6=5pk*$V(+Lih~=ynuMkT=;T=;QjEb65^(hk5PxrG=8A&mj{LkM?RGe(=K%UAJ zv1fW+=Dwx5NS13#DX}CLn$hu2Y8a#!^&b7IOCWriTeRpy$I*`Koc!_J|7u=@6WG}M z#}8MqWY<6~ieffbjEeBa;Z)@ACv~w6?r4BghZ}Y+Tyf$!3QWB*0TC0pKZAS#D3F76 zLHV~{M}Uh=HWPp@gqi1G3uPETyIo{d5s33!2J_iIxY6;OroI*oXA7#6E%{PPQff49 z-B!(@XAdfHVpQ1!E}t+U2^=r>lHl112CU>zN=7~~$Jm}gfa6ouxlqD35pZBP3QnJ8 zFa*?B1TcO`QG5J!o!H)3Hk6HU3U<;BhcCr!{cf{sNR_}N9@_9#%HNLo1-nZ1l^_?9 z=vEJW&FZ;JRol^_Wk2*hTG@n#MYNb%*(9A=6!;G`!ALc`&#F#Qdv`wIm8PC-DM_tX z1JYT549e&c;DX?B9W~WX+8_}y8K^H>Pd?&dhxTs!4;e=C3Zz+_%hVzpo&3Vh!-DVS zsOOtj;2DljY-XrtsLEh-tl$jcCD}>QSg4$`-e*|G< zINAt`zSiuQI|}g*rZ(z_t&(fDOZPWO*E^?B3-#42_D@o!3|LaOAH_}?TbfL65)p>^ z7)iB_Hc%2xOZZ~#KZw$6GeYcC5-T904kb1Ty+uJhD4a zF5uT`@ktgd^|eRvCjkcBLDe=AlZ5P)EaK-nEIdog(YVv-JqopC*{VqUZ1RLrlRgmt z7DlA@e_&J#BU8iuk8og~T5y157Dp*xpLAF6@?kfSKli7oH35G)it^)lYieO~hSJoD zFB`BLD$eEDhMT2K&Yd)Y{s;K;NpjYj^?YAY=I59EToRz_FH_4mIn3Sugfc8HY(yG= z-5{kKc~2Q5w`RM_7iaw_vNkGTnDru}Wl0W90f8cAlu135KKNiw0C)79DTaVo+;wZ& zB{mYy*Oy}(zu|#o=OYy~G4gxKChA!b%*543G}>0prpvwiUuS)5mt~BtL_2+ueXD>D z=O=7RIoDs`-rQRUC+i*$G+rD7z0)R#Z+2CfEz5kB5v)1ROCQ>KHCwFVRAt!8YJj|q zNuIdB%`P5!vecMfH%h?cZwS!sEQOg5@pOL;T$Tt*16PQqvh1Be^_a|lZdli;=1rob(s#QFB`Vs-m_@%0OOc=9Bhz8NXRj@v?|J-isEg}J}pGp4a zuW;pP+5)PS0s2}jO&)@Z2cbqU9Eu5)*tRDKY)^$z-TK0J-BNGlI6(K zMQ21ib;0cO`$RoFHU1R6O-+yBt)ToM4Em70!;AJBQw5F~jHsP2bNrg+ z)2*CS`U{21x&J|_(pl2A;4wy5yHs4tG1h&RRPP>}VKt;x-I3KL`kFkl7ilvJCjaY& zvg4dCw4_@W*|*S5fEUW+`DH}F-e@D2(Zw$*)fWf^<23{~4Cxr7%9ObdJ*f*%>aNqe z+v>2n4gx6#&7a`KAEi|%f734X>pLaOW$Bct{lds=^A zmj2YKx3+UP2W9mkG5V-Tci{!j&)RK`6Mu*-0v;Rz?hIl6{{m2ukd^}Md1{2$0t{jL zqdsHHf8-qyTLL7l=<^2j>E39Dp#7SFLn56R7{}*h5Cnj(!s8e-fHRmNco7geJHMFf zgq1%!1o&Tlss;~w2$CkF%~9sk2iQ{W{EcJ6*q@L}B+m+ZNkRq65Qy4Hlo?_FrQZWM z_>@jmBUB+Mdx^xl7fd^rViMptSea7~vKMr@-~w_%qSJwIfZxB2vL)kC~%aZo!bVdN*)WD9-!h1@%s4>IVL2){V0rG*ckUYPV|8|=@kS21x4(Q z&-wD=&rC$J_IJJ)Lg!0g=e-Zn$Rj&&IQv+w4L718x)6DPKXxx=2Iw0W(XIXsQ=#fn zf7?+%JZl>Wa2^1iaB9f5wI_T9j}X3A2a@b>@kerjqojm7_fEsv9v&(TVTS&k1%+kS z9z>PhWZcOVmnQ?6{&|hfqs%W=I<^V3M7i91r7W&;#>PFo?wp$~mah4f5Xtj$8`1Z) zlglnlR_m!Ho}vfSdrY z=XF3y=_N5z!ABPKtrZ!LB-qwf0olXNDeB7uGkB7!77O056-F6kMB5+&x(pXJN^`Xe~>0WNx80Gik%~$?$BqM)QVIaHdMvARIoM2 zZs~e23|wR3u9Z)SGAWUoq}e;0N)Lt&+9u5Lm=oko}+yPC+fW0HBU*ucXN7oTjj$y=xX zAq+A#zvy26)=Zk_pyZpNOI51+g4abFeX2Ka?RB;&5V;_VZDVfQAttm>L^p&GBizR-z%CehLO4Oq9~R}0$btorR{V6Qo7FE}d8HALD1n^t zjblETtltSU$MG*HtpnrqN5;!12GniV5qyx`jSAN<{`FZ7UN_Y235S=*B=7yKnga^; ztCJKvv@#x8y-^+)jz z+D5+FKUkHK+T?LqlO7hQxtD*GcKc~m^updf<|IS7o%EP8)P(D6J^i-iOYOI$G0tlt ztZejXvYn(Eq~Bu;N8TmYVnt7jb<`x*_Z}9?d|j}43edGqM5$UvT>sd`E0kkDOw8&%;+dW>WT{_*WLb{_@?;zw*LM zo%+Fv#)oCMb1pB=No73!j`<3ZW4m{TE9~0Ea}M_F&SjRCm=;d2rTcvN;if_+wsg>y zN>VR}U*Ow(z(PFq23oZzeBW`SI2Dbm=CruvZia%Xt4Ap|Ey7frZ>2DXs$-f9yrzQ_ z{z)KY4k|;(S0jUlxfV@VcbHx;ki4)j1aQFVbMhLuiK5d)Y2x>Qc4TG%LPFt$NrLal zzF1bgrmRiU@wXrd5}-|630i6O82SqrHJgiq%1LhNf}mnqMZBKmsA;r5F&D!!-C}su!HS$jO8umg@J{SRRM&$-_L?eCHalj5Vdq z(Y9@05c5aI%meikAgw}tRFl$bsDRmt8H%PEyhQJ~KLne( z<2AO0tfR%<7n<&w8O-bQ%Dsbbj8l}v%*0e6@ctr`nn^HCtr`Q*Dx;)l4Bq^?!lV{h zKOxBofP)-6r8hFtr@cGYDwCIDoris7T6Chu zH^MrZ4U<_nx-lL%u$frTnKQn~sn=p;h8wn&&Ydsu(l&z=$Q<9142ghKV0VdW2az<1 zeSg4S39E$@*7rXm2QzV871}ww>j_qYnq`m<5lKAXY^sXEc^1`Wsj>6vy1e!hR@EjO zqJ@<(A0Lw7MujGn+%7wBy{4sU?>id@fF!MmD!lkZ z6XyWWvN1Y8>RCEJl!^anAcM<^ZSqz}g6X==D~F6c93yu3m4uzkiU%DLwC?k)TdY<; zzq*QTBL7l*s$X<$Tzsy?0FongG|YXPXP&L|TDt+FjSUd}Q(CDo-GRMXRG=3#sF#SJ z`vf6=TfxwaLjU@&Lrg8UAzSE<5bG*X`nYQwJPGJ*!yaq|^Jm9`>5i>MF+}U%1n_(( zG8f&k5eFkMLcT-}%7xsO32s2KoB{35M-j;bHCVv5u#ou-Ka$|#2NbH7uQh4+#RO|8 zEq}>>+99irkt|CR;yRVD4K!9*+ctowReO$d1&%l>TSR7@=OK&lgWi2c&%kQVSB}FQ_(R`pVr%9k+{u=xHK7s$C!lNkmt{7@Ut&(W z^E+abL7yfGHq2x2saV#CfXZ3%PY_>8US6;}dUCy^oUcxOlx3+wjxv-^$ zYo;Zes@Ex%jItD5_QTEmBE7v6OOGElT8;NJ(M8^Yn4u1-x+-zLW^n?aU#8kYFq|W} z$I&=}}U9>NcgtP{oyy{!f*y>$iyeaPp_e13YR>O|=aXS6&*(DR{gxfRqI|gF_)QM^dXu+0@MK1xsGs=nx zJUhh`8^)2FnW)2$Y{*o`fFVm&yg_R>HL@>t<7sm?mZmhwXW2u+Jv zkL+L{4!_TF1sA@y1XF)e@{CLeW*NgXS1ZAxZ<^Cnm|W?Sn+ATzRg#SSnn!8$7dm;L zF~AQG3OHjs48Y?;wzEnC9Pb4H4y8#!Q6nBi=?+0GoFR);5I6#gPWJ{__`$jj#cF{= zF}4el>j98JCOvR0LU^xo#29GXkf&zguTq)f&}tU;Yn`*!>?>xQywNYshKe*7MKQKkXz@)Je7$RC1nJm@Be7X`9Tw z4a7H{)ESQVl|@g7`*I2~-Vz%7{o+0EDa}LPA*wEOaxvb}8vCW_u^bA+e^FZnhQ$sH z=VIS^b(!2!En{7GRTtQ{kF#lZp;sr1z%31rrO2^G6b@RVtc$Xy99saL8#JX7Mdzw~ z`E{Kv)2$Gos}t!WOPyFY+HiH*DQWmW*v>l{J$p^y4(zCIH=8Jwde^~Cglz;}2v%wX z;xt%~QAkyOINV&^Bbk=<$`SuHFF~0k$pF(c;pV(7+$Xs-xf18{efzPPxZgyQ@(MJlYXyaW42}*2>Na~} zw*j9fcSG20@%NwN{cp%Y52eAT*kQ1vs(;`Y?Qe3;I42KY(Tz?tFtSY3jLIB*SF^F+ zLPGFOIt&!VP+`(vI6dOpKa~D4o$@`0fta7L{*U*M-#5e^(<5hm?<#-PJml*$TpW9g z)oT)H>`!xzx9L4reak&Mq+R}W*)|TyKD~CSxecU4KFI;@cDqIw<>;#yz9uD>jFW#$ zk)CaTQE8|th*`Sz%;wTdc4gjeEMXHohM5`+ZBOR%8(WxR?5QiOE2?XAxW{ARh5I73 zbK1#YJw+CIJhwc(CgcDkt`pDYTb|}9^VuOnOl7xquQ(_#CAefZxTLJDuFh~P6En@1 zT>dlRpwZ14CxX3@L;iVI&W|kmXO{LnTe(f|I}hoBvti7q+EBiUGV7wxwk$-_X6;vX zp7xU#Dj`ZJ!=gh%5B|xshYeZn3@f(M_+a$+7fwtH+z-=Jh19SqkpXE1wQj zJ0|@z@G94Tv!Fm!oU`Q3&6uSlF=M7qabec4xJ->1kN+BHL?6kwZwI&OLnEUzWBFAsr|)2%(l?Z{K#pl^ zwXB-1{6^VVHL_!Kw8Ft}o-l^Y<>v^vjWAFw2T{c__a)L*qY+NBDOSrO&T;L$H@;0Z zJ+x|$)jCPdoz}TmTb5QPD7!G@Aw5y+B2fSOZZ}#SJflbLjqib`7Y@KcjOWc}e?@kX zUv+I>f_|7aCw!hrU`ctez%7eZbO3DP65^0ygX*W=1VMx$KfVz4$y{!Bo;NAOzQ|Eu za?1vkXeHf#YS-Da!>$(t&Es4vA<2r-!r${9jem_N|3glFFRgTzvSgyM6JJEJ8an%G>mq%`~Hi4uvO%!rL?=7sHSktR@5P zvYoR}jCJ*|(8veEpfrb0u%ZN7(~oQMtc~`co)GB$^UajI=BvUwBDpzTc{DWZo(}+Q zE6hM3k^x`;o6(&COzzNtx$DZ8Jp=?O)(&)V*E0O0p~p>2_}dVJIq067m-W(;|nZ84GSJqK>{LsBSj(5 zZciSlRCixIVDapiWEJ+Db@t?FHk)5@PBEX(j?FR)fmFw(a19201qvCtnf*^AGJD`G zE^=IX$p`J5s6&xoWx}2=j(T0|z5~9(mNowN7~SeWX7EBe%Fenmj5H(iqS^?r4!#F|7Z zed;TCE|YVY+%PEK-^j7tWUK#BRmo1Sz@3O1ru0)m3Qx-Ljd~|eT8bny-da|2LmBk} zeVCWrK_2*L>IlRJAu=7*(WmdRkbfF8n;An+A~V#`T5=sjxaVV(qV(I1_q0!`%t&mx zPPFXSYqD%ZIe_;Fl2~bpEvR||*BGjqx{F4%#UM{k$)k4yH{;~`9J_G-ZDhZ0Cj7hl z@@XFFzSGJ1$tV*0X3{b{;meE=r4ZYpd{rCkinapb@mfRA0eRcA%Sq(X1BCfWhY?r@ zqVsz2Rk@eT`(v{~_Pe9z15O6rg)g!r)RcbllO9a$IS-D8vuuU0tG6E;s=YX-<9iyXFQx37(_A5Mm@ICe8pP6r0OKnM zK#fe1N&|`WeZ-lk^b`w{kGE?6=F*wPlb4Qnp3Jm~yV!ZUZC9fkI$5V8FTOrHGvhO6 z;R7aqtEFi9fQxcmD^>*e6GWLG5)?7z7pU&;vY)*S0w|e15IbC~Pg^wp>&U-b@pi_N zK-}_1y8r`B5Ctf%ku)e#pq=7)?R((7oi9J$iJU3Fx2CPONJUhN(^)M@|} zpuS3K?hK6^vUDA-u>Q2_PFK8Oe!nB;1jU}t-8$RZ7Y#Kzy$X)H0~2n#stlMmc)198 z4DxbTgD51F=W}7^7Ff*#S%Hs;{ysuu#cF)tYpFk()3?`~$QC`C z(l|#FQPNx35IOwQ&tgItWYRUp6Uq;J*w9^=gG4I^p7DONPRD&I57JpG0Cb{Z1CIZF z3$HaH>CJ`&=@DEByVMR&LHVD`7&x$vpZEo5mjU1>ymOGSlYz$M5^8ut)ERn7(N730 zS3V-|0{Yh=dY4ncyuo+Z0oy}%?pc(V=r@O`5PT4l_7wfoOb7%5E1|XEySTTk4$Q;Q z|12Ykg0}aOr-o~@!t6o&m4deoSKiQeRfD%l>4c%xNOVH%Uo}9WWp#p^jjPgaXbfBP ziiWDg?F>Y{!D)Yf(m>h%{_RJQvc0MW#jKa7&fGgkP)3Gh6ZARQp0Px$fto#+6g$BPZqy9-MCsB>xDoH8v!V;C-L;*LoCKc?MRuO2VoBELhIP zeOC0@$n}*23eDuo8jk?ti^bImr%2psQCKqF*So>|S@NrBZ0UERQnzJGQn-u%AcVX4 zKNtZYq9*|zZM(uJNt(a40{yy3=t1S(F=GAIuK<{&mud)oA?84v$$yE82=W&a>wgMf zePx(@kO<@IGGuSUfQuaDMv}`{G%z(U@k@BHZ5iU73~GqafUhLL*~tIgUy_NfyJ2@q z0Q};meYICbDMW&}AYyrvpM8~MXQD2xZV!#A22F+e(Ez-oo?hYE%||1Z-=dBf_ywLb zM0mt_{Os^mE_bpWh}p zNQ+5wQYg)2b*I2CN$Zx-==c%PfFVsS2J5_mQ(ZTrK1HmD($-gg<3%sJt2s6L5>Dy4 zA^Lh%?8&+S!W78*BxP;=l-IWjK=>_YZ4dJpekgX9_r(aQ3B{{4dPUe~kl>pEuxj}) zE!VxXm_VSCyc~uaEO)NMH9Q^zQK9<*jJSAwbS&C#3^bYdn@o#8eMl$ev^>3{8 z%q$NwzRU9l6CXR9!kt&t)_)2qqCCDg%I2r>cq`q1Du_RfP3J*EbjKMXJ9fTXAzd_% zU1;QGGb40o_MNI&vh*M*xQgLI@OF}K8YWH$LH_F2;-5+u&>)wdmek47^piplRV7!| z$vyOv5>@Xwv0}Nr2jcCvda63lc_gL0=?R#cogcT$m<~U02b6Y#D|$c|2-zd2ck67N zGx)q}d#E@%r`=vZ_Jkd~$^G( z>Ww7^ccELv!lq~vO>7_(ecHxlVORJB>6?2!+ATzqqk8D|8c?;xl1>RZ(1Q9BIaQhw zqWX;-unvht+{J5qG;K$y zjZ7p)g0URr_sX%U*YpEQf2r5tQ4gPQWhi{vwq;ZQoOo94w0uS0+a( z5h9VxqVC!$?Pcn*PhEC6&@*MunGnz7m?EHr=owy&m?D7It6px(b1hzcqpcV!O&Gk4 zMfAO(H`}KRC_PpZdlD)eek)EZjtA;dz$Gz5zMiZL_1Bey6{!WVWjAgh#6_Za>RAmh z(3GtJ!8L#TC+SwxjydVu{#=}nc;PnfFQ66D>%Q~4j53q=c1Na47=~XDmIV2t@v?0R znxqG0m6EidgAj4vqWsnDBzgJECGb^AE_s4gyGB|j4QZeLG2RUu#+5{eZDPTO;auau zFAe>~RH-yYGEXlw#1jX&C|1x{V57AMlKqaR#hq;F6akSmnYHVOzlKGKPA0v%?Yco%+p*~vCXKUEtG53`+U^{g!$+YFlnjx;ayxe+1 zADd@KS>3xwUd^*pC(1+-i`oc~0eIOB>S{qHV z1-;w0tbbD>q$3ZX%p>f_|I%?;OjltbIz*BmMVR`+iHmLSn3uX*{SqB7*h^oSd8boq z(qI~lz_KyWya^3~EDVV3DpVa{?a>eiOkNmV{u7A%FG+>Sr7yWnt1Tdd?~p{G$j`4S zVIZ&MVGF}(Qu$7C6LcvCKfz=YFTe|D_SC-w0UhZCYbc1*G+98W(_!3~WO^IS9Q!8H zN5c=RATEf#!)L-l`2#5`k9mKro$tiW-pUoSbwRuEU|FQkf0z5iD??$t{q3y`y}{9x z>Fjn5E4v8eJx!$$DAImjmBERxXl6LPHH>9qeuRNK@;tkwrG5kbK`KM=d8N(c^w${G zw^06Rd(U`CA37EZavMy(_B2aW$75dT80VZqg&lJkP1X;e|4;3@hG4}aE1=h@`T3^3z&OG6X z?1jyl*S9akqFAquu7g?|ZOCxE)Zh3U?0MppcVOx5UGo%)C{&{&d3&ZOq{q(RVh`^yHlkdhqVfrT zUv|3FrR>cA7i}{?S12)U@Zwr{DGFvuW&~QCfYd9cl6NRdjBTlWEpu)`}3H&Zg3M3n9;Z}r6gu56%(9opKg(ps6h-gbOkyxN0^fc*JA7n zLc~M`nw8=kR*5DB7JM3JDjBT}G~s38NMokYpwR*!fI*%3KuKDYFVJG>N0Iob8LW&w za)4VAjJscof9!8GZ+sy`S6>)+q@*48qcsondiVgTO9ozqWU&+}Hl?5F zC>5gCVMrbe75?H~WZQ7b>Af!V=V+HE)@6ljN|H@Q-z}wy7n6m`<5&`UaeQD@1~T_R zg(w9W;-luciW|4p1WGi+J<4C-_M(b%3LFU zG#{m|&g1J_a?I4Af|z(1nvLDrrGYU20)+7Y2hwiHxAYVtmURhK`<<0x_>bUoXM9AH z)uPhb5wsLUKL`pc%|e4*sp424aArvL=5SozWKj4rqM ztTW{YVjC$#^H&p&(o#T-i^zV70tTe`(S$xCbr(;Q{-49w9TzsdRhhIZbtZD8(Ra}P1lt16Epgo>MJjfT`AU`>h~0wcp9DFQ?x{Ir77;&X+Egl+ouDw|lQGnl2dqKc>z(x~`~O`%TlJvD3J* zZR^Cgt;T6=JB@9djcwa@PHZ>+PW#^Xes_%DI6FK4?!DHU^O?`wlgjIDKWC}^HFJa< za$~d-hh6UR6=?r}>oXDLZ1SUvavgD%ad0Ke%(9Hg%68_A^hfQ+(2qYd=izHZ$T(kR zxpX~+gX(p(JRK{u53)QtLErVg1rBs~W@t0l5W!s6NGRDrIEKG`&*%u=Jm-r(RgRV~ zb`RuQAYPBg-|gb?!KIs7kv<7^{N(((>a(^C!3l&dp=BzZ z!^#P|B;nLg!DuG8tT4VWQ~-j{=y^>iK}VJDgdWRy1>t9=D*Ikcn7_DevTblUfYwtWBv0eFZtXz zY`{BPM$ZX;*;vA+W4_Mpg(<@adJ?{$b873@m`4H=hEo@?zv?0twd+gbM(-2 z@;?;EP?IBvZ5BKxiV}hvsltA3be6gG!YGe%$Qm}1t}?b& zV|;psj9DFg*0et{^TA3Pa!A$ClPDfFedDc6nD*5Tb&l2o4AeKRnJtaIP%ME0a|xLxlOHZlH~GvO0=_B zee1%UL34t!OHC`2IfSJH{fMugk6E}n!C#vxi_Td*MKTE8BSXq$P-c5T*M$77u^`efEU6}rA>N@8Ne<`HF9X4Inn3o7g= zi*e|Qwf~8gWU*Vc8?4)uf0k;$P?h*1?b1|$4PwNuKVwv-_U>EO2F42CR!3(YoaFNy?(yqA^`P36*w)tC!G&zd-M^ zz>~&b&Y2ZDM%BlAoMo;X!Orw?n>7a-12b7KUw8Xr#zJQD*Co$%{gc*`cM;#~aJi>t+QtnI^r9q~;6s2ShH_bSD*s7JKdRqzYv%rruE zqJN=cjppM}@MC$z@`vYQ$ngco^GEQfH+IK;pD7n=(YZ4h^V^d6V$-OdIio*!-) zV5Y()m#IKYCG?EOnWKu$1Ik_OHs|2U%HS;s=9Hd>)Mv-}850AGaEjS2R>H~LV~HXr z-IMVcbENdX3KD+43223tCeuw-&Jcg1W62_~mA`EUO>o6R5e4=Pu_p@I_*}fCluT=U ztpi9xYJsuC+orjBi~KUo>FdyuFrb67=+QOwS|BKrvbDEBreytuK{ZmamA<%eOQnt0 z{Y~z6$UUyJd#yQop$(rZ_-yE8V|Cu~#hfvle#j$I#$>Z>{w&E~w>sKfP@R@y6a&p9 zf@Bh#!b(t~alQ=$P4H&+9QCj?%BQ;T5*%(MLaSZA*9Ng>4ZL$Lz=)##q%#lY!49laYShWZrRJ(%j;-)7;KA(wk<3G)m}XS%e-3W`;OhsOa}t7y*$Yf0ko>>9e|AvOvv!r2UTNoNklJ@|C@t2Sms`aPuU zi8&rZDU7FuiYn8kEsi@x#hQSJqjfkW!=pJ63$`-=u)d22FT1Ix^`phbH5YK{{4R6W}*XdXuIVJ2&-R z8$Xi{>F4Sh)T}XVUO%rN==rX_!rG<#fNdP;2{b)nPFuf2IHvpb0M-w(cLoR$n&KY> zrwHgt!+b;Rs*qAMqdkxLw%||?RCw56LhMGAw`Fdpgk<5?p_{Sf$qoG7Ad|5vBE59C zJ7E7D{XCL53|HNp)Y&#(=;rEn|IhB-jevp89F5ETB!|uxD1w<7R<<(;!NOw>2*$y@ zip;oLyHBjCbSr03(8Uhl%wMg9T`wp_CtYdnhS$iO-aVL2eynkal5FlvtSKjRZSr#w zs^^mUKWNk!_!X1<$@N@V7+e_cwt&7rfv{m^kkpp2;k{i6kI+Ze~jipu?$CaD#svzutDuy?F+T1kUoU}Zs#b$U9H?P}^gJvpC z@pyBQrN!*{GkRL7$UdBoJ(6y=s)&*xMm&)pdw|&-YeE9IUlX?fN?md1F{kICez%01 z_K_w$2Kw`L30HHar?Fgeq>gk}rOgR!O9-|D&TTSVquWFIpulUKX9A5HBae7@bX5IA*%f}-Ma`S#UzeA!t3K19N2f#cNDo!H`3W^zHY-@Mh+*I}%e?3SK zYyzJ<@ihgfXIyFLiGur!ES77AzI9sUxb}yQwSm`79mFP8 ztZUvHJHNA;DW8d^r*`O^A2IM9G$%hWJfZU@hpSzK? z_}t*R4wW@l^8O3}76)bxPE1mh3<8wo^N(2(wj+lMsd_yne7b_&uyGQ`n$66bIWg@nSw8eDh?KHs2K@=~23}}>!0ZNc zK$Z`CNHZf`jr@4B5~$jFI2YS=EPgA=~MY4BXt>+`N(1cxhOdNW(iV z_B_d3cl>#@a3eoLhhffXA3weWI0g7ASOXMld*anSDDql#oG?z0Da*&`2ra_gy5Hrl z>oAkG3A;HNvArYk#slcU=T$)}s0CD2At|@>XHsDkgZ1&4=|<-)=2I-?7c2_HR*2>+*SZzIJN+hH)=!>yWVLXB6H|uh683M;UC*|s@7Z0}Jd&rpvMmnmQc-Wh z>REKTT%3_3y-az9r>Mt~|G^&PyCp#T4%s!JCTT*~t#wqcC12UpzrH-!ZQ6~{E!(Z) zYx9S&Ak6)q;l#1?1Y)Xc)w-m@`gfRdvXI_ZRK*dRe})caO`#o>o2R4z1Y8MAizVyY8LgMrMYKSd$MwOv5p z;ff*d?LXLA5pCp@20|!OCbi=YZCthExUEmPt)FWa4uEojs#VxjA-#F9#knS}uX=LX z7My3Ioa%Y(n1R3ghO6VwXF@cs2OkOPUt*HIh9m0VuDCz0roD%I-oI_FeDylvB<5v? zkl=xq;1Q2=jUjpaF7YhLP7zjv!$1JQ!~csa0ueP7C$*X6XXb80JE}>|$UrM2rDKYuEptxapNxM#QrH4~5iEoZE!+7)$q3Sx; zNt6arXk>j>tX`2($oH_GiC7Z|r14yWpAf=#@X+?TkM^c+J~NRaGdl+j$WUUhbJ!Lg zwp6Q2Jh-(Pd-Kh<+$TCx>UcSv7CTLxq=Z>MGZ zx!W&ce#3f8!I=I(CN#}3K)=!1l6*V zg`S=P*iEw%5KNpnTOC_37e3U~w24Vw?*n>rZRJrCH-fUXgDYP$m$p~O+?2tTGR!_o zPF`?on#lgp>bnfefg&a^oOd`FXX)%tq=B{?Kg7x1c>9`83(LvYftTAI8m6q1^ZTe% z=Y>W#j?4wk4HjTuO?{kc0L2J+Mj?DvT{c2>A%L;OUEED0Kxr6qwdKV1X;621Zm79P zgdbzih-R@u2wN=|PBpg$3lt!ZWy)EQT~iHbtnG50+f5!eXuo7SAJ2mL4}18}nn zLvl!wX3^+I1-o#vwvUzW=xq8{_3Jmmv#`Qc@n_T5MV?iyHcZo4YSeubs_saS-gDNr z8hBKKmw)tc`po_r;S<*YeE|nVL8N!~P}TvnTi}Qd5uR_RZ}}&+xe#|{*u--FQ<7gi>v_90;O9Hypf~2|u zlJnsXhi;CrU#x#n&p$6hHaRpV8he*3aXAMnUmb28u$%EtP72tFMq(c=%G(~CbflI) znkw&3l=P=7gt6zN*dD;Nq*4P-t76hygaW5&#Nu!*Eq*k~H7~0-5++%P4!j8It^bY{ z<(g@}2Qu$VPb;CYdh8GEmOA&=Sl_y^eY;&bToHUVf0iLll`d{ir;V>vBD$JCah_lK z%a6eG0_4Vc(PdekYv);nH4Sd*+E@$BqKKYH_G!bbH>8*s34x1ZU5VF^iLc(d1HZM6 z<2z7CHYNTKVa8f{>2^W~45@#QLr9{!Pg7tSu*)(8WzOrz_4xyf^?PXPhl-O`a?8`% zy`jKTNHY$nvS(*>s$GY+@mZ;H*E#lPW z;Rv3-Cv7S&!IVchA6aup5et2k7`h>N%$IQUDaV0k`!wOynNTXEc2rl4ZBU8})^^-x z`?<{op3wcIZc^=c$BF`ej7=TTb&mI zY7)8gh~wI46Db-q0SX@SFFE}(+~r7$ZJf(GW{uR`&ib;s5(Dm*v7^1ljk2%Q*NwhL z-@92&8$HRbSPv=nGTqC1`FytCLHz-n{lhWcu?WMFd9bpif|>Mpy<9qIeip%@#@ZJl zxtxY?%g`L3mO&}xk!Vuz@~vNdzIZvJohjk5hPXRMoXxhVfJ>K>5cT(RHgFT;ob{u{ zh>FMGa;9=kA_~|Dhrd$)2>4}1oR@6`e%=h6U7i=Gu0L>Ce{V{C<}Rt~5+*Vg%i7z~ zpI9tE_TekLu*j{DcDpy zW|m50QkyX%Nk(ue?yyBtn<#$Xt|s@LZOe$A)@<>prSfLkBAS$k?dW&=kYsgh(3jH9 z&2fh4^GEj925E37M)51v-iO3nb2=m!xZcM4j~@lxmM33DRVy30;jCT0tv)iK9T*fG zG87)xNJWo{`xJ%ldvz*6*JO54s31UsJYGe5a{*HErBFm!kM*%=<-V_Ju1^ejQ62^NcV183g2VEsOx(9lINjl=zYk@=RtkqY1~wM@{DBaTsd0iW|<{g z=5bjA-=k^hz}4!qI%VQ^{lKH5$EXrt>*V)7zSi+?VO>v5HyeVRWm5dMbt9kC-_agt zO8BSO>eWM0?&ePoL%NU4IQTF5L+`-fE*<@6Xwfov%gWK2JHMHE+189M@0Z>1LGqO$ zzU9rbVKnXSGEB72(QiceGh+Oz8VERNQk<%iyFx+k9DvE9rCZnL^?d02zV$0(~U@nDka7^NB9oU;%Ek zY8lmfxnnRrG{zt=%pKa)UG9aN)XlbOy1@jNprGA+M*^hl5s~t|e32R?DFNJH2*rjA zv1%gQ$9Fgm82_G(WbWUzhpot*09>EA!PLO2iV&R=XpCu5@kU{0tjP#lCrFGD+v*F$ zj)F%tv}Nq)`H_t~U_15njs}e&oxyjpUxa8f!vYWl0*^icLjPTWr`iU3hcGYCLQPek zMcK2GdOl@G8!8_ULhQ3IY-v+XGoEnsv71ept?*}cW#Dx8#Y`RR*j>@von6zFB+*Yc zN?h?@IYbZ%L4=0HP)f zzAaqZNUqwDRB}yjdS+81(?u2|9V&(1QudqYM43bAAzHCRn7YT_6>j|4InA01mI;(f0#4}yBb zA+4lTKsPcj#Lb~mBLeDZuL_=r-#5#DZxTXCxm+;pk=u@R&F>+mJBxm z5pJlo2Qu|3?4<+k611X!ldA5jp7tSmY(+tLUfR=9z z1Z*gcG1C>uVDC1pCc9#%e3<^E5t^q3jivdIvc=+{JNZsr*Mlj|^o$1!5t(}XYgo{d zT@;~S`VT=!=f8qV>@7qV>hmo6Bj|>{VwvRSM`7u1h6|GIW$J20`fEn|Gfne8EeBQ! zUEL2+*Bg#zXg`uXp@`p*hVG;E+kY+FL$R4nW&yR!L*eZ~&oEAst{2houz5+upY~5) zp=d~odN8wA!;A3o8}N;72^I7k_t6fGS#Y8od)#DU#X1ddaRF`dZknP7CYHub9sD9H zF%9mCDs%%Eqz2~3{y)SZ!4_0axXF92P9A9g9};t8#8OIvkAi|r@RwBVI~aP3l~Ty0 z4Zh2%<@4%B!fAt;z-mrowqrHhwwUZ*kPlYNAJCbAS;q{NDb;3Dxj_ipSO#(};3&AU zD>}5srp-lW)ZlO$u-hAKhW0vAw_RtnRM|#uaDxAgMU{nFQQlZ&K{i7q;x80{&&u2j z(KG)$%J_*M{ZRqlj!R`GmE5r9GiPQDTXcoA>R%6_k}paPBG#`aK5B+!ih@7cHubYtiA2?V}DkGvqqJrYZ1{mVn} z!8W0f!qr1N8_5c6d15V>O{T&CS^76_W^{DpVNI5nx3{=?K9h<5xEbPbNic4gz#-+g znH9a609>VcQq?;$(J5g+{w+Xpb;czXPGNC`RC@;dR4m!sVYA6lD+_M*>ap9`=P7}7 zy_Li;wY5x-!Z13c@{k0x(TgQ{l`b25a#WIL^%dq=OV|-}e65_W5DT{H2?6OqvQAf~ z%hd1>@bDuSLdeZyz(D5YInVKq?+X1-fp>SyNuyD6kOe)d>G{B+zm`Di;@ z`vG%(-W&_-9xY@^8aUFTTy+I56J)>$ZvHU>%7$AtTXCE5P=Iuyn?jqJrHOk}>!8q5 zQW4qIJ&U9V&yJ2_dSmFtaVTGbT3-KddZ7?X=Ej zuCzY_Z4DfzQjZ%H8!m0Lkq04k-F^Tc2II|~TR6Y$5#8Fax5H04EmZaf{DjN)74o;7QyHmlhQm z=OK6OHqt|Kig?|&(;IXeq>whSNXmzF*cZRI)9&s^XbWpbNz;oJB`X#E_aI*z)`{}h zh?3O$50i0pPvZ(B8XgJ4 z@kV4|WMF%tQbPz^Sba~k8{3hzRUtb!PclZj98nh92x>~N?1FopK=ZMuU-nsAp1>Ir=HYu4U;+q zKn#(M|AK!x(Mc;lhf!b-TlinndN4u{FjxX;3#uAxfUq;*bz0Mr*14ThuNflV>$nP` zlgL3wxC+A@M3KJW!2M25@{onWxeu_?C#Wy_`po(``cR4A5{kyi3&da>#&WMv2I?Laet*r??%1kP6FjLC6 z`7V}IMK0tpTLSFZX-MANXVWWI7eaDv5$>9(gmAWNvsi*{*nV))0>NV9|D{AH(hl^` zU2H+tU!d=6C-CLtP&oqY${)xh))OWKGCQEXgRj6qy=w$yuTs7AsNV4Cr&#Ih(arGl zD{fN9;Vf}Rjw zXP|}a*PCY);63T^sT55$eJrRQ;=Y>+QV!wK^sa-#<@VC(?Y>!$WOB^fJVlaJ?+sJZKG)WDzygSqibvF z22N(QrE}%jzkSMD2Xg8&50o99K6{Rql4nyGcl?EdlEML(QAP zP?oVRzd>!X#Dp{vIU}bNnc2_rohx@`J>Ifv`~|hkGJ0$h_#qNFuJ#Mv4oi!oeR#s> zyPO!82)@v9`s5HG>KY3_+H)E-2YSuHPJGN@ zhFA3T=&@LOZaPGl$R9j?7hJ8-PW3+uRcM67&GX)bRB~VGDvyQ z13-TE{Q4qP6c;{-;uUk`GS;JH8`(R-l8?i%t5Q+h8Efm@SI4su*<)j_GE5PFnA-08 z8AWwhOKJzPqoXrWj)lMFFvh9r)A@r%{TlS*q$P)-#;lQn@WYX;l!@jFW{O%99fG^$ zb*`gDK)Ze~c#}NKi(*IC5AWdqYi5!t$Tsgi<=f09B=RwOUaW>bYvC8GTR=O7Q|q6R z0_MKoihM?g)=sZpgz^#h&dmD}M>?I*6K^7+%a|HW#S-6t3o&S0FC9};tX1b&b0f)yw5QE$)&ppmIt(hnUI zY6&neJA|ID&=ziK*O`n)LE6z9;+;@pdpvg2tNc z518z13!X&v4r$h|e)d4raVlmsviA37eKHDDM@&JHCsvgGCG~`$l9h{NGG9-+ai7jO z7OIsfU(uOCsJXAUB4>|3GP=ZYK6oM3yNbb*O5^R9E zn>Qm%-Tfk+pm*nlxc+B?Rq-w_b(VUd4ZWaMP0L~r`PNk z(v7o%G+1!I4Wr{Q-?Omo)i|9A=Nuvjw-@^k!zUvvZng5i;OZ-7coG^s$Q9}P#>X93$Cg@8Av`1)7)ZrU5ri|a0R%LqP z7|I`d3IxUc0wNcaH8B6`cP@-AAz^fT01=VI%cP%y>$1kgD!Ys~`4}TbV!NC?NLmf1 zGG~enVwNupIGXEmIex9Ulz&nwd{gOs{lc-P5Bw$PZ!GF)S$`y9xzY0}+;2x5dsuO+ zti|ZDlqwO&2!%@rr&t-?IQCZ^IRVaI=ZPV^BU!`N=4m&y^B^hEi0O;oI7CRy( zt!u#K^*MII48_fmGM2j~)Z2$DcFXQZGLwQey)jn&<EQZ?ot(~E`)(PM-jzgQ=PB!96^YX8uqf7$=;kov#85X z{94)kBnBUZfg5oOWK+xv;Gs&^%L7(?Vp9+<3w$%X!3uK&a$J^h>mjI9fDsP}DoGcv zWNA#^)16w=B*vxM-IZ`R=HFYE2=Tx=zwgHrhYxufk9i3Xc|R|MUM~tOV7()*xVx*~ zwdM0tz6ZZWWrO-ZkxK5c`LjgJ!-?Q!{EPDiz^HR&K~t7swMn0~mFwyqBKd?D_~AnP zZAi?7xpA<~V$0%saCP5vppNx}P33TnX2iCRq-&y=8#D)rgtuIVoMw^@`kC_v?u(>{zN zt2Si94r7QT2;A#&lu*oZ)liMHnAW-Pl0xOLd90{}86#fBdoRD8aAT;FQF6#GW`f3^ zUS&CSQWRiDOr#Xh2mgNE{FnpW3W#H`!I`EN3c78i8Dd7%o9bJ-#b|>x$>Dv)Ltv?U zUTvI2#H1N~mA@kF4f*;JcQqEMNBpX#|EQW81A3ED6lTz0F?L*z0=jmp7d9hevgN+p z?~@RzF;ZrW8574VrH5LXCL>mm+2ggXH%1NHa#$xb&3LN}Gm))U!~8Sfof+Dna}d2{ zv{ati^TscNri0wD3rj~?6V;Burj6W7+Zf)sk?9%QzmOE${{j}?R`WWbq@@5Lr z{Owc%qNPS^6wV#Ct1Vny>e}2rrI#0&pF< zbO;gslM@uAM1>xhN;Sm$@n|%qg~#6#x>LD6cI2{%TC=U~8YaKXFqES-U{BY~TT%U69Tv z;|^1g{F9J6m`DKCaCksnnc;n0bLuwFq!C3jOvaV|uN#AOE(|RZVSFs~1py;nbVN5K z@!1S3ZJ`kLPqOCw;A4Yg1M9lGklz|^Yr3SA znPw5)z%ph|NdEj%Wp_)cK@rSVzK#yeS_x04(EMp%vLI35CrbqXlRR8=V|}xG0%-J4 z49NX{ozO}$&Th(x7=(nb)T?39$hWz5qB;Ab^~5IgE#>-j>cXf}c1H$DiaA26$D006uF= z+*7)8yUh|)|20`%lw=b+`QD>VGxlCi7gHb2r4`GOpk%hq!i!?TMLR0~rr z5~82VQ=G zY_j5IUb=k zM&jIAujkkb!!;3hGzp3hJbJwzd&m(bCQ+#BS$CpRoy$53C_LObX6cAF$!~`X%}1Bqg|3KTo3P2?&Il?DuXvW$JofWQ9UtE+ z;P|kdEhA_x^Zd*xw2!yq#WNHBgGsWl7qjN$SH&PN=K3*vvN$R0l3N&Fs@)skDuz6r zUos%35D{%p%QuR>Kci}9u!`ZZ`fJ&PY60<**AL<2tKv0e8!H7NXuoAGAyg~w33aMSa;M0h*%zN>pF%|`!cK6x0ZPQ~^t z#l2(=E_qSv(AK2SL2vhk))NS%Z-%yBAloZcW}~<}d=rcISvWz27Pbvi?zQ|x-zUXl zEu|W+o>MdH-gt;|S#2DUQAcV61=V%X(^D;x{F>%CQmwGlm|#>Y%~31uCfvM5ETgc6 z_f+b>tBT9!u5{h>ebhEr=37bnn}0QwbNZXm-H%KpUQKd9^x{_qBZD~>_(6L>+|2sLObziOR~d?bfYo7fR;Cs$_qF^!WlSHbpiZ%5<6k zFu>jh-=`h0aixsDl0c!LXuV(z|?@`_4C6JC5H`qjX> z!din|gH;1ReQZQ{8|pZH$)$^uw?|4iwey-=nS5f2s$-4X(NgSs;~ZGL94Ar8=GHM5 zWZh1P(fBwVL5@uzaP9SJ;L(qb{c9Aq&_El{TP)jBA;?7^-cu!oT-#eEDRYDXu9123 zkiGc*fHl+&-Vj3}^8U1;L?dJ62S?AEixSZm=nD{$<-MOQPdBlk*wCl(s*&<=9@KvF z1(sCCl|(*qEtdy6R>@PU*)EM;8pPwmvQzJLcQaAcz>)CI1y_xn zEf=n@{eEzYH%!;+ppn$Sdr|r0h4&p+kmtPeekCyY*pZ!fzDPcu-#QxcsHhS>&2nwM zH^8se%dBQC2;+t$zBuJII7~IVKDtM_Y@43=l{f8iE8h(#bcs%esl2QH318X+Z{rZT z|8R|A7quOI`QApTsu!U(j6%n&lL^PEPJ2Vo{1ysnP`Gu;W5^Rnd6|tuGK~1lqaCUw zFMPP*b;$5C5PI_~ay?jrq|urVS!SiCTL;w0ug*C&))Sd)d0_|i)}y)M$ob*3 z%M;@%(-|?ZQe4b|N5a*u5EdVT*;lXn_)DeeD=*OKk84H)pC2;yIwmqP(nFUM3-qOq z3w-MblSWx!(RagU=d@GVJcC|V9Q;;&DC>w4TG zuh6Bm<;Bu=wo%nL-wEBH2=y;j&7pEZqj$yK{1DBs{5VF;Vn`nY+>|7I`nxHndhTpR@*6^u3n@W zXKsB%$*ZrGq?h}y3!k4lF{*vM(Pds$&?d_%9@S#A)D&c^^D=bz?cLG$(Nz796X^#{ zRMrwU1(e*uC8An88N99yH@OKmRbIqM#swY?n+P}V+9u`UX0S#HVqf`%e!s_}of5>B z^EbAHc^6pTIIj$`<+?QNJ^T0Av>JK6lrI$5bMNbe#L~ooztS~W+e{@A-Udu+pYdjx zatC8F-tf}bDUr9vO% zw4l3wLH%hjjIPg?L;*U}kcoi4rIHrs&E&jUX8Phe@Ax_Pms3QdzYD>8xU&^ZJ$HwG z&Iv>S4yBTT{7eV!%L@56or$6e*^|<_Y!LRcjK4Z`IH^z4e8A|1`6K(`E^uvaI(aLS zwpEg|C&;>s$tZJ5PbIpO%Nf> z9Pxn7ZW8QRhrGAP!CtUFfB!Uv>nW3VD65o3m|mUh+9f*h!b-JSt#Iuf8L<=t_N+66 zD&)w6e4HdSknTFH>$jA0A!5{usnPa7_GAvB@W1jM6+jXdkq$zGf9w8uyF9oirNggSqCw9 zVR{*>9r<)2;R*7hjWD;XJ1Sm27<$iM$el*K%gAgTQxu^j5;=3(ZELL83UU<>g*#R{ zg*!P=zw;2`-`X8`lX&pgwh=JZ{U3~yi^81;42=7F^2BIZgUQTxqwRz_+RCe1ECa05A1wp!TbMS?8GfNNJow-6-){ z=|Mcnx<4YhS=1`WIm{o_?}oqZ6ei@@PY4jh1zilpiAm*W^|Rv6q{L2PoU?N*M*!+# z*=L^aMiDAf(=-rW5NBM(gwf1y;UiP}cm1Ns)Q2z6OxiC5y8c1N=?RWh@xTYxf%kQ- z1`bE_M1f=&zb4OG$le;rN*nklu79=W2Jc1rw~E|njlTQ3;8QdBr77$x0%6D_7rd3f zJr$z52QipU`^5iaM^+T$JpXj|MH`|yjc*>6?_a}-`1$$^ZTf7#$lnn*3u%}479Lc-clGR(CznQQspCny(5Qka2Q{AV);XaL+X zxI>R!rNvYdOj-lx|A>#KyGDcnWGxIwO@5xXd*mpzxt8s1g9d512jl=u&Y*F^-jUE` zD&Ct>ZnI6c6-mAA^HkB)U$)|F`OK>FkAm{FKW$yG?2%C$7Rd#}TDtdW1`+}~_tqZj2?ffR>BkYasGC4#qi9GH=Cd|sSL&IfrMZ@?6+XRd08nM z%nS)C&NJfeXWdem@8t8)@P-?h15Qc`Q&`J39e*pc9Xi&jfJ$>^(elmhs6Io}C(*P& zwL%nTBUBK{+k?Ipb0D@KZ|@R9u_Hgv#g!Ss4c*_fOPOo(uMF&VOv<;-qv!f<_*Ox~ z&k&)t<26V16T|VKAmRl?>V*%01#GZo#tfzKOd2PI(cwTVP{Rp1!V3vqG!5p;JdTCrxkg$qt#^2;w26F__E^W+#F7`v5xAWT{k8!7pw^MS77@g6Y`o zrm8K>^FR)85rN8?*db%c6e)gwVP-je?4VuXVqY=E@C5VMAXNzuu+fx0r@RQ9c=(Jb zr9-cuW8u`p?PmtIsPJJb#Ed}^tVn9>-(g?c6^r*Ig^BVe*pT}5)HS1cRF&Q-01Mnn zQ1EZ_g?xy4Z@3YPVfC$Ofq7R*?ol=wv^M#WkGS!m|7zh+z$bQk-Elc^8N>?jDeX z8S(7ES_mULe}0gvrM`)%^Q**q{XD!Kn}X6ZKt}M24rc1hA#JF&#);}=Bh5Wx;n2>? z^B*|-*VM8kbayt$vwnOAAA4fSM^R5N;=pUsFKAAIiT<3dmx*_@&_E2}2gc|fZNjlu zlA$uW>zCyX{xsY~n-ykya=8m*CAD8q3$FMuOz71eA4X1YJs}eZ>@gFzITK#s?!5v! z3rJQ3cCicPDS?<{kGok6D<@+`Y+ppMi<}lNe1Ye7amDsPo^qYs3Y18!q_l+@i3rP;+ z7J@m9+2!z-2OplBB`$R%235+jy9?*O1t(mo^Nq|+uYc=gS}F7b17-$Zh%jVi?bDk# zLCC#;3S;8SUiuBE9MBs<=FVZbZz{R<>ka6~gO{iQXEyzgD&L0ad-4l%zqg|4i$vM|f=w5W4LZGuE`5?S?7DC|j%` zz?#jyGJlQmX-oYImgWbcSx_g|gP4xb3+7@x4>y`-~@n0|harMF9G zKqr6|(ouUe)C4A+aYo5(%yDM`z70QOjk8}Hm*Jj7l%b7!zI+2QG<*nym(DwN1N zz%v@R2QBh65{)G+SI2Jp)983A&l8&IcR%`KORXpP3GV7j0+LHKGifqL^{=^Dp z_@8UYJ{}=T0g#JoCj6?CLw8m%)p`T{Gxv#}S=5d*#KVoDQ+%y6zFos z=d@zwSae4zp|{y5?6Hk6om`px8%b{#d)yqvH(tT_yy|BfxXeY`L|qo4*TRa;Y_Ns%P} zfe;ISq!R$gH%16fOkE#*BRTS?uO6bBs1SZRvl0}S0#(&s*Q4!%?u=ERAkGiN;| zc3s+;X3M(Zk4<|m)@aOANxca&Sy>d?%PWudEds{wg5agFLHRrzD~)Dzjn__`2<=S+ z;Ccmt6==WsO;1K90)t@c&^&f(4-x~x;^XJ%lSMKMqel53l!KDT6*gz{{nk?K)TxDj zo^oZ&m{O_Ki%&@+GO^cYYB}V|bGjc+P$vt2<0UYsP25FGx)R0E7S|XF%+HsFDN_|1~`1Ski7C=O9PNfcpIj4U>Jz zQobZbfE8bTh_D;aX4i0wa&f$N;h}CAktsG+< zlf^m{l@ZGFCw)C};F8Nj^+f3?`Fm*bd)I=4uaoQGR}@nMM<$E{OL7GWqklIIrSc5? zGw3@WtA*0NiEc@6+orS+1Jpu;j%KT4x{4KlT2>124bfpaQ!-F8uM7ia$z0Z$Ihpfe zkn=6CH3I1&xG!^GQ%d)lRlUh z-!sQC%L{W)zQw;9i;YeWPJ5zG;{odB4;>iC4-Jv>$^=9C)QK1qc!?bjihGpr5z3!R z#g=0KA7}3vT-g?`jdqfb?T*p0ZQHhO+exQmCo8sXbjP-BbZon$yR!E_-}&nPxmCC7 znQM+($)D7m8RH%AgJETtg&VwJ)%zD4U@sFQ5tMUx5UKW%$vIOrn30Z(o_`<`Y-5^o znpVoGNW}Rrrv5uP%7Mp9Q)rm=%ofr6#fLYZp0OosgpKT@HD(wfhv&7){Z~k2NM)I3__7Nh&oWfM%^oPh2`!#ncUx;3YoBiA*OX%HsdJI3` zLHsF(4e_Elxb3KOQmAF87Uz}=@QU_pXaQ=6A`K_w@H>#4INKWkm0LR@ z0}z@2A#Z*$D(?CV9mJ3;4HagOsAHg5J`)d%bx#D8hf!DlgQHlQ|KTpPq#xwyy0)A< z#a1#9_Ji6d===@yfnCHwM&M31)L-boYU&x+-<;k~iLp zm{eye@;R4wplKGNo)*6^eQa#8&wjB5AH@Sn;3>|DAmo&!2A37>4R$Sij$!b$?Q(CV zg6V2Nehn<=rO=~)=2S9GpTMZ6{U48SULOp1?}mvtpD3N{tCT}*;Nl%Wxnro9>r*IE z6hs{I4(!kEpfq`zT$*%W(ZoUAG-DHIy`i-U}27i_I%`(zIPL7dy9HlNis%~}?M45Wn>zM*c{ zta?CXksFlLIjsT(>>t-FvItQ8z62~>$V9Z$k$5j@Osd;)p~jwY>qpMM(ZeDQv)~Lb&lFWvQ#BaLj(K!!crheb-X>-G%jJRd$%jq> zjk&#tRE2wGF{GtPpK4_1$pk^FjH$YMG@v|Qs?J2=VXqdpEZpc0f4+g1FYR&uG5E<$ z=q@^?2eF%zs$$Q9Zp!H1aBrt?cpx;TCD|_5`Z&Zw8WXr(wv@)q$4iJ4mT|Gx26jt? zeoxVg(D%Y{j)NR2ZwS4IcD$v9cdpUyNxmPD%RDg6xVHso_V1~X0nD7>OA?Oj`B#z_ zk>7Y0=Oy^1+6hdp!K6*Sl_a+;1kKV;bK(2b=BC~2kld$u*Yrwj$M1z8jOY!pq9cOG z&FkBegGxtjHbP8MkKF`PcQ>;=^cg8UQbI+Hyyt`$=>2gnpN&Yl4-S`8bH3+Y(qeGD zXve=*O_xI0eVsp!E!11`t9*eUThCXX2MdzC1p4`G9N2{gx7y*PNk8@6;5@Lk2({Tf z`v3HMeq_;grn%N3b%Z%HQ=18YIszhN*n)Vv_XNqfR*``J$64*rGb0&96P5f|LPhvg zn+Tqpo#S{;e0|S+lQ=C~LRo&Wu79gc?P$dGV_8|Qczxc0=rFZGqkUb)Dl$AzoAknv zClFdC2z>Ciz}o7D{W)3~Xk-`l#oXXtT%DR2dXlXD!s6>O-jB>^fe^8{2;@SeuUsBM zu2)c}T13hQp0w<^Vw=5c$kmOJPUc$TZTGma<8>;Nb1RF&Jj)6Z8AC3+NrB$jqZl{x z@$WfG+|QIv0N@Ro2b2f)3O8aNO@l{~^1&qJ=bi#rh5AI*!mr>6gck6U#+FChjiGnqGoa^1)*0{66txB$&lYo#ZMdCbK zJx4&!UrRtvecgkJ)At_R>F+)2o$C2%zk=C;VNCh@f}gz-ZQb?QAacf89eTx<=vhwt zr5p0xp}vfdtgLawEjd4l6Djzy-ZuK|m`Q+SjO3W6$ZDDkav3k0!|}Qg_2DT-tnZL< z4IP)MOs7cZYOMaoiH7c)sN8K|36f``q$5u}5m}1EqF3rGHDqmCS4+%@?CZo~nvJm& zB)~gWXH4@64$}8KV2Y7bjqC;^e$}$oFrXgCKHWvxS#`vA-=fCciF)V`oxbMm{8py3 ze=q))Lhyq(n{@9H|K;bEcc_PA@NnJ~GUqF&{)RXeEf@8+Nr!n0>JH+hXU!oq zhAf})3L)m5C!UwOtre$AMNdNvjsS;zMXI#n5rZaU<1Ikrcpuf5{qgAm@^Jh?_&iB{ zOc%3KOfsbp;n?Z7-L>6^^0CH|b_q%-$KPa#nlgA=a#ziLN698}3Q@yzuoB$EwgLF6 zb)BJR)(?6+TK|Qr4nsp#txPL)wiRQ!rWoj=BC5n6`=}og@?O7eiuI?{2$$6Fmj~I` zmjHcsE{4jty=r`G%IE9#wU#ppyIj9tFZF-Femu3h8amGjk@$rmKmnD0WPl_2Yez0@ zkkNB{&o36fqFcI6eewQ!7a`vvPLvj1o>j&NZK2FVg6p^|x4VaQ_!Q32TrKlyG>A(YrJ*)P&&YH+Xxdrrm?PyCPh=Np#o)5NO<;x536X zblB6&G7x#E0m;>EP##PU|j8sd2G!7@4Z04rH_U0pTvkv1T;k>C#Q?-R$Q(x*Fi zYmT{Cuf#Qe!fc9q^aE%aQF_Ew zY$G)`M=)2Tr=;?<;;RJG)d*#&xpbAA^z8yBoL=@tpKgeKJdvH8k@pYs$8N^zOHq078{{b~UO@s=I3-5x=e`NlJ>m*b!X_g1&G5uZCR zJ?3$}G*f(N`Z_xUTI?lWp?>!!U_)S2OP#m!dVQMmQP5T)IbM%72LaqyaGqs8+kE~x zMOib`XXoO(8!%qdWM8F>M=dQFY}!V_mPXc(zPL*BBmFe{55}4HrpmqMBsuRrWrwF{ zv%>xADSy5x4wQ1MAyU%aw=6B-L6v`%P4oD*7F^g><~9^$-G$3!e-jNzza7ZM;nOzk zywQ^XN=J8I`uV*X5qW*-IK+RZ)|g_r5O8-w;9up(Ug)*MJMbD(j-$zcREa%m zGj6uSo8&@vY~ONLIjZPmOhoZ`YgMVegdlGJ+-XtLc%WFJjn4+X+Gpa28ZRo7ZD8+D zhw{wW7DbJmHf}OhLD;nQ+y~tc>Pw@hkuwC5wy@r`5Uxa|INJ6d)6RmO&*fV!*iyRq z*{?l$ZcBjja1O9z<)AFAj59GEJ+xYaDNpzS3$zd}3&wW*srw#Du5fd+xwt17HY+%M zBIr^8S%$+a@iXwJ9U+ooJF!hzwjw6eQ1T?D;hm@624YdZ!c}_p>&^s&{;^9#y*k$h z@cfc%Oah=l=bdO~%jKr9|B12$<*nrv$=eGrTPD4o8DxlX{*u*BaB{sKhE*n?e>iEv zRMz-@#9#IWk)oeJ7wJQQ^bwM(g@4-N1W_fzUw|^Ao|5A`S~Nvwg1R@WE}ao@^Fao} z3jbMYho5b#VHjX_g`$yE2 zz@RzdF0;;H0pY0NGUUAjQUh|ojSqW9C$kX7yK0vqimF^?=HoA@sq=IRqYl1rMnhcv zs-b&}M5|ooC0y$AiVD1&6Zs)@e1=MJ^~Xvq-=|Z)w64#bk@c?zX=Jo|q%3@`rM#qF zY0Uezrm$vPdLDL^DDlaVDH9VZAHllk_s4OK3d_lQoT^48=~@K{X<5wpU&01@5+!(j zg8W`c>LfUE9+tBV(@BYbuMmc_Uj(rW%9CK=0--BNgq=sEiv9Ma?r9#tD1_jAv}&od zydOdeu?WTniZC7e=&1J39*LKSaF2(~%R?XxA0H{7yek;jFy+JOhU&lO7l0{N0w^gZ zOd7EIt1#vMe@v=~UtqBg;AsB{O}n3%Vdq7HYt}X3#FVlfJ2J6O%20j^A=+~VAJ8RfTUv}s@blp{vITqG`anp11x+$$H|q*77Ml#VM|MK>G$Z^5!) z<3uB_V_K)6KH7%*RM^+wQNM{W*Ww~=r@VF z-?j7F6#upn^|vX`e_}?(t)T2IL~4CwfIO==)eFoUYWX3WUu^5iSYkcMZkPQ$Yu5++ z*y|H`4|DT|{2RePlK$uhi3e;TJs;EYf!YzvJM0yN`Jlze65l9BI3yC|7D0(4=QR?B zlP2G(3?qxUd_~3+6cMLL5vQ2_j&_V3aR+rcizEY(eSN6Rt%}}qxy}%cZ~Isj;!wKW zS$LY3r^(b?39q7y!V~^*gnJueydxNz_Qw_eAVLjd==Ui?JB7W|42)eNE&m-Y-r>rR zj&I97Hy2UDnc_lOt9Iym?jGWNt3K^IP-_-k{Vl?%$uE?e_qZp~ed%47TF07AL3}YV z7T7X{Z95yAe?s@kT^$cM3YL zqs;wRKgXVM2yCF_d*JU%h^O&P?a9eVk7ZA1we_-oHXO)6nlzyXEjrG+th8fuPmoo3 z1ItTtPt zqzMlE>un=31}m<8s4JqC^%TsnX`O15n`@QQ`CiW052Ytmg=qOohe)kM6@MjG(|Tx* zxkrppPmOP)SfjCZFc=7%c_!H*37**J@0NCtAx8?wmL*^!&v5%M4V%4denIU7M3>^j zFPwXC3ZO4}UmpM{%kokN{Ag=_6u;gSY@FO=63`;EH6#v=J33YZeM?8~8Fr&WPYR{eLL_R;Oa>0R&irkQiexf+Ce+Sus{l(K6yb1|E$hbj;l420`xc3{iAXvCj zEzxdCl^bc*4ML%pcg1E@#`IgBv>N7l0hU@#c6)-%EgTwC5-@e+aaUca3=7Wqjat$b z8W_deFh##fR?ALCFX!+aUux@TvpT79j8^-jJOKPNBjHM=J3UmMIKK?_h8U2tZnrBy zdD)Tio}FYT+5?Pp6Z;G#QjhW27)&^J~flWnYI`HjC>P4w%*_AzWH*Yifqes;ylLjPDzU{!q<%98=> zl)4y@IdvO9bz3$%Swh8~Q!exW(tew(YYjV*QKyyaS`vwp39FT4>ETC_-X=L*=#Dls zE7{p=Zy4G3T7WnM$7gAOs#x&agBj}r+JjlNS zm*cgUB_zk1FW+tm+jK+~o3ERZ@M2+S8j?fcrY|2I*<2dL!}vn=3@j;XS;+n5rnC!m%v1j~2(B)_#+c8N z%17%3z%&Oqdw?8XfllTjC0P?uEeWYq2bb!=dM1p>r=FSSC(xL14>^lX+W^cHn8!U6{lEyty$o z1FxzjN7`cWw|0$7W3#V zCon0>!LWj152`}%p4jpJ%`p;=Qi(8FM5*^4O;2of+rqky6>RqKa zgd(yT)5y9X^M7i2EezSW>~&1pw@f#Pe}@5XR#fdM2L&E$mkm1EbK>1=%LhjeBv*Sh zh$tYogLnYLhmn$;BFZ}>uPb|`YUe}ebwJs%?|=#sDoK0Q{F?fV=bs*<#^&SVDgFJx zXDZBb^%jH9(VaWhFn}f#UevL+s;gJqjvTThab6rO^O*Wiobz3DH`kL3)k)BB$MqxH zrp?GfSNc`J54UBG>a&%jY=z0Mk@FB~>6>}g``#4{h&fn)C-zY52(i#c%ZzCBcS6$^ zd>txZ#At71kRs1M`rAb=MWozYG3?wDnFbZ!9kVZ1f^{x>f48Z%FjoAq8@CFJQ63N+ zDibPhZaR}upzxG-^PX0C$nChu+jK+Rb4Q$QgtT037^P*n_<_${i|p`anzmcoFzG2j zINF>(a7FrL+Q7SYj^)c=4mB8HfV6$*Q3j(IMw&MeZb@t0oZsOJb?C5#y~~s+?SIcN zS4J!YZQ{Zc98sCUy(4c_0FxK4p_h5Vng1prnaX_OJC%P;Y?p5O9n8~Kei2_$PYb_tR&Y# z61)2vzuN09N22zi@s_d?Cj~}N8j+;Od+2BpF_yuF83@m*hG5QF5?yA*w~2Xj3ja?1 zeV5+BdK%&cyYVxYSU_nfScyk*++N~A%}Fxm+-3J0h9i@0{%G;?`Ch%R(pVM*UmseC zo-G>FC@}P+m5XNY2DQn0oJ3Zfr8H%3gN871(1ZstdcWeVK3Qo`rs;}F_S(Z;!+r?L zMW$^!Q(5uQ4y$v@_DS;OHB)=vie%!@b2YxeZLf4=Um}9~e2W}Tn&ol>`&b0pmAGAwD*0bb!ZK8yvA3_dGx<>P_ZMtO??a`kQCh8Lhj5+t?V>pwg|J|$-zP+u^aZP3QC1&Jx6n0OlnVSn~-}k@l3kIt>qf`*B>p0ZFt48J~gV zh4A8DrEnSPbx4R14LXL z9uX0@kdRwY&>2+v-p9~VMz^GDruDAjYA#J*XK89~K-?GJZn!Zh3gg7A9>EaX?i$Xy z4Q6Mv))$rzIOg4iu<#k3=GdI1o@6|F`;HKJBdV(nJ8!? zx({X7@)OT;NG<>IOV8Gm`Lf$ZZToZkk%)sX@(YtH<-wuSPTYdOPH^|4t4JR+g-ceg zE}OPu7j=K3=;&2IpV#)yRIb^F5A5Tj1DwA^r@ljsP}B#6cXCSmNt2-3TkqNfw*z-r zFo(=0f0*0vnf*@9bvSYyx8aiMN5g;C{zdwEqIH)ouL~=A2l|V|3q%{GBY<`!?cjl) z-?Cy(pKHtIFF1?3(?kiIR03uiE`xU>pk(=!)uxlN5LE62OaBM&U$Pnn_?9bKOF*E{__9WsY<&)wyig3LsZcGCDKO|B| zT)o;*TM{Fg(j%#SdtZoZ@Ohh#Z=)yD5T0d2UyG;2?JNE1&PwtQ5>(&KzWX;&{sTq7 z21UOj&a`B028`*)JE}50wj7%~2L49cvsFyAQXiUB#4W)ctd1?U1Z*;|$SRVTNy6Fw znQB9(oSd>Zrg%620@)JdOs5#>N~ zyncK7CO&<}QkWJ3HHT!FE}BY)Tr3%6iSao!LoU|*9AXnE`hvPbXRAfqNBqf1TOZxC zh#7Vy+mMk%g1%pDrPI`pgs)vjG8+`FBH`cB0ap3=WU&m-+YZE8GVdG-!@cH|u;gBk z#1BQx;Ynv5alr68Olgwvu-m?B0j{H}SZugAj5dgQjS zdZB3+UrkW#uhietMu>>>e5*2_sK=!?cT4yTZn`r2m8kvIb;8s*dg#uYs4fgt*LzmU zM;OV5fI>=6!LQ}beM$p($y67$Dvpp9I|yn6c$E>{8ryEQG3N$&Ydv0#KkqFp(DYddDed5!4FtDkZoz;@xVA&uh^vA*qKE)Z*|e3AuB>)^h;ndgYvy)778# za_nQ4VVaSqJxt^F7MR12CW}d08z@IWVit?ceoV&O$B^&u|Jj!DQRd5TS`0>*AP?oI zqT}fElrcwtbw+!S;0SIZZqg;=vFUOQRcN z8ok!TB(pxu)Xu;F91wAk7`A*_@de5y z16Za^1%2fC-XbzTNe$iySj_1k0fnVDquMD{OEq~qU1p=KPgl4HxC=9lBe3Jp2p|*C z2$I=`H|<*DC-k#3NjT0(e+@db-7@L2pTDE>o>Gh;3W-tDvQJ=2%3?!1!RIb2gv+Z0 z>-n_x^EhoPz`P{R&Yn0TTi285iU@6eFhX_=>_Gt@(~ibiNM}mGe_}d@@zGL*cfu;8 z_+l25m^%-97KyFYgEz#pQhfaIvnb@-9lVp&?{Ks!lK3uY!tzI>8#+LlLNq;1DJdV} zUqCMrv4W6;oPZc^fHFg&)q(WACJ3m!kdz}ynKNm)^#PKQ{(;%$Jcy)7)sOYELO<)X&!>+MOCR_{ zd7n99jt?oKa{9i#`hc|9qT5rt2%UalNOC-@s1S6pU_#uX8cJ3S08{giF=0JC$+iv# z+M`?z9+xcI!ID^&!Et1$O=y|;AkTde2wrgc9yom}1B!E=G8N@5(N>9fc19%l@a859 z6OB3>1K1)+*LE0_`wgyhGteTTz{S&vmeheHZ|-FcFu>) zqi01*S-!1dE2Ui18sv-$L7`memZ0U>0jyN3Ki$3wcG96}gT-^Q$Jm%m41;G*xSa>7 zX6d>!ywXSrp6l&TJI{B}fl~l=v+esbD6_Q(Tn=F_9|INsNL@V~5`VvPnO7*kRqhjO z?W~STPVO+DAg3>A+a2^;k^C|pa74l{M{ck06kv6QRW6vLLt?7AsRt`vN2Hzb!QJDd zS8lLoI67wOj$_;UUPOGH>UwCG6P(I~xlFVE1Z`LEL!WcbpIPy$Kqs4n|`+};nno${?i^T)(?zEi~>2~3+n&$ zT(;vZS29TCx7j8{83Gd~`%@ z%g%!PVX0&u!&+{Y-_L5oN-I*fOL)@EsyMh0odq{?_rp#W4KiPsri9lS=|qh~bMzD* z_owqXUq`Qa`IaFmhDcKXvjVR4ir6l=+ABUBxE-()>jVTnc3kUqTTAcwaNfq#!UOJQh-LC+u+thDu2W6YY|NZk z0c~mPL%`>W$UGw+@^|c}f&T0pmH!xvx#bAOUCmk|M{ED?a2Z>18fr7QR3wtv6#8khI8@DIS4-^<#WrT_JnyTQe3*^n%0*!Iw7$sTTf zAR6q-XZt{Jdafy*@Gn|@Raee%WeZHi*&PY|uD8L^vSH%XHj?QE;5;XDUY!tYz;RQG zrz5jx?AKpx-l4a1g!;oZcf7#hyv8>!YRN??R;j3Z^GM* zXOrl&^6J-QACA2}5E;on!Rwi{CU-(CanFn7Dp3{Y2_Wxr&(Mc~(R(fw`QUr#dE73`PrMl>JUjs>1rZ4(_)U5eh!N*=78q6DW<^}>;{gML3F z`ihWJD=C9sV&)yZvTT4fem->#t_Jljw&t{C4E+E|EIVX+|mw!`^cz|ZdN85|bYvDMSe1YBLuD$Wg z>5ttG=dMrZnbP9Aht!`bWl(hV{`1fwTKt{rkA{G;35le#4{r*^HAX}sE4vMNyZKj zVI!8UMeH#}(U287=YY}LY~KDTUzQeu{>VmK#E$e$!8c6C^~}FB?19lkkr%5B<^vk7 zQ(t-BtBv#IB)9;2<67C7RGyy6nG`g=1?96K<0;0-hi0E3y&4lW8@?G6-9uT6?Bx%R z_&c7jRJrLrV`8AtG~yNGg+8SSdBl10g?9)q_YlL75j6b;mqoo>%WIlOEHznayQ&-Y zOUV~DWvbY@Q|d3~iiwP9qMSR>B0K2#*8tUZ>97q>FWFl7{K?kE?GXN5>JKkWEW2=3a&w0`zF3XM9u635gPj=#krye^U;F~w zJ^{VY0kDT)CxcIeb56%kjG8;Kn1(c0j9Sp5dL}n005F-m&99PoZb7jtaXwLtipb|l zPsVJF31@7OMeV7^czlUn8cD2;snyd+KNu_E&pJ}=W-xlHc}B{)*amGop+<^PAFxvW zBBQZkfu$3u!hQ7Q10XCUIz=-I-n9z1{Tp6*kDv**;K@v%(Jvmxh3H;Yhj)2sJq&=X z0uAu2t1}!Uk?~qS7|X^p>d3MQWD}I!MW^uJgy`(WYM?3&+-`Ms=*C3&AQ>R$+o(tB zUFFkDm>G-DrxJ&!k+Swn^qaN1ex{MK9ViM*)ZzNy*JYo+Zp;6OHj@6NnNr)w_a0^5 zhea;g5=3$w6ZgJ|pU(PLYth0fZ9Z!z>i^Mo-uED|v~mlaA2}uFoTL zX2vsaAUGyYb;dVAlg>3R%N(aS4v^lTQ~D1NY-MTKq~G@ZMIDC#B}GC6y(UD`%!Fn) zoamL_{_6{|W-Eo?J5jK6UQ}|GX2;jA6m+7$e*i{6C5siF}|JICF%ROu-(#LWqD^huA}or|2&O!mOs-smoFpb6I_ zi8q0ZSNxxLhSsb+pfHC_k{@1@nkg)sVGS`mq&p|1+f;}>A(6?^dTe&gZB8Ysn%b`TMxLhR ze8AO-wv(GGPZSD25bdeI7$eK`bC}?-+9-X~3a8H03%x8EefO+bI0MP&u{%#I)%K;*~zmc54w$)ZHfWYR%mh9S1foAj1{Ptw==aRCWp6_)a=4k>acz0 zWukKOjLF%h`~3TeepI^*YfoQHydTs6UD&t8I z=)&&4z}TQu?qnZL7MA`hTOlY}HeiY6|gi%GHxZByAuvYRFoG|9f#d))3&+Y44xK3ybTnyu4Xm}t-R z$o)I>^qC^@d3s3+dBR3XNfDEtvPe-!m=AfP)EhY|F+~t8dHZJy5HpbU1&IH?9|r}= z*W$Fs$h1GhOneo^gYRs^-`Ux<+)b**`If%toW@VxljZ#AWLX7NA!NG~qUzIP_tkl@ zRi|S!4`JyGIcFxYye}4Re7me&+|@A|)-@sv8X#wJ+CQWAlW;ipppZap8WTQ8QE;as z-2~+sK&!~HDm36=Qg}ZpoC|hu7|C%~6K%s@>B7Eg#}@lzWpaB$T3kW|oH33qq4K@4 zQ7WXvLLjiJFds`7$Sd2x>_y7i=@`Lc1$)3a4hrjUc})(z<5nLV=L^vj5g(danseZ4 z$qvB;2i_otPJ+J%MzGr&Wz4mF&64^dE3T9Pc0?B;zTzDGJk!d0r8oTciE{f#CEvD` zleG?&tqW1k4cMM_*fs_d4_A`5m5I7GjkkDk)VWwX$|B@Of@~TGqdN|(+1;nWp=CzIa@QZAz1jAV_sM)LLuZVPvyqX}uRT3oq zO)lXGjPjog*I;%)q%E3L{hRL;pgeoBKTG2mrJa8H8$Qb;uf>J;^!g+4K!bwTNBq(I z4$>l)g0&-4XSwn|tFo9~+M(;@U5_zGuYXX!JyaG#aENiwQSXGi@Wz35!r}77aeU=C zyS=MoAEVq64?LmGZZx1;ct|l6%`Dr@QYmZ6N&p0j+j{pZ8M(j#NZp}r>?8E|XfOFu6h02wiCoNC}{?elk0 z5M$po^@;!Puy0(4(3Hf{kZ#I95dt&)w}^ZauNZrWeoUO}BL;nFYFi2oD}0!Jel#@=x>m>hyf1LCeNwG{uQbPs;(#*H9CL-y z%MO}>1uRCRibz(+lK;8PQPPCEPDM2&fdSuWs2dx}dqTv(Z574nH$M&f^@zM*8KYd3 z6=Ta^3|R!e!Ha#XcSf;$pcSv3C^zsWne~C;Ul}PXCcT0!T^ZBPJ1%PX!MFUCtX5w- z0cL7IqBc!#FADekUYUZjs~$7knRr;PotX^9nW<8|onBN7f}&7y&00A4Hqanh5=_QW zF0@2HP@mjw_R>b;1-w2sa)zC8W!)Qn0E4XVD*)28>6L;1tl@a>2{L5b=a<(Gs)j-`l|LR9d)yHLt+zBrDH z33t5VYCV5xyaAaV{XuoEGpR+n);jM3`m0w4PT1r(U(KE5JtzJEYAoG8ew2^U<)m^) zQ%=F`s9jP_!3BDxc*5ev7|bLsm|2&A*&JFu-5dii*u2w3WKI>hmR? z0zP|NH$uk-eNg+Gh>9?}&Lf z1Va1#z;v0wPTU=gJ*3}+p}CU(fFv}RA z4=#)&ZpZ_N)GJ5jlq1#aE`{pbsKn0>+mEjad_M~11w>U%?a|8BJ=R1OoL1 zJi)*M?gcuwOw;NxKw}{KbqahYwNTagsZs>YuMeO3wa^RsmCn1yDFOmezbt%RS|JO* zfe3w@D1Y$GgkC!Bi1!(Ve-Tr7vO>_t{1IEZ;AkCKT44pN*7WmFV3o2tJu{iIe<5q< zx2EyLhJaRinmTNKxP_^@0w&+~Lm&S9V>YROcltQWZ$cmm;D_4fLc59{yF}U`)*wk| zAz#Bi;5(hn&sH8yIV{`8kH)SD{Z=i}w7X#!zp2E`%3@iA*{GIgnkd(BjTSXmq4Tm`x%ftKdgI4GNRNJ*>IBgT3Xuc%6?aD?XyFEVa<@Ff&)+QDdZo=+#D(4>n=iJTK&nd)JaTg8*kJF#pbW`6Pwc;rA&>ncUwJyNa{G;;);{5_At_tVO z#xuHns;d9Sz7+4{S0!2sf(I?@R@S`x)jM^?_Vi6HjMq90K!{Q9*&1Fi$e%alZ`yKP zj{Fk#-)MkyQGF_jSCxIhs0A4OuFFH8i*4a1B$(-X$f9RyRCZKk8{7B+DX%Oy#Z##X zPs#dN>FqfgiS;D5%=VV^IhJ$yRGQ{DtB>%Bw7}rv@@Y8}8}fNW@~C||wq))RjSCXv z7Sutdc)`1%l}utFDfPo1uBFyOcA6hC$qT=D+cP!fuuLPT#K<>0^3pRgl^9s`m?#Yv z;uhgba*TMrg#DnG)ePRna?aBm>6$k0ve2-*h7w`MQ~2hbD2O^|PGU}FwFv{)ALOHro|{(taXQh+Lv9`5;i zNuR*0l5Vqgl95OmJ`<%r5&N$xdq!kyQw(G(2Q26#{R6#m9m+eqre+NKRQo0J6BTaP zs8Cm^!+WU1BHb_oO+{;$0pza;K2+G`kb#2Gk$%29ldleZe4!Bj2=MPdSoGZFS{{nj zD)4nMHvQ!PXNeqnk!i&IE{TyXEJDzq^v{z2`eOt~=6!q*DSlf1f+CNwLyB;ui-TXE zVMY#?^z+gjBx04Z+qVExAj~6-&qx3@XzNaOG&dpK<}pogmO<4FGlgbT2@gNz)QfF9 zGa*)L10&^StDSNo)Qadu=u$U)_!LDjd38|w^Y$J~|v!V)jCsr9CG(urGi-V zDj9ag`kNzV=yUxu!^J+n%T2$Gs|P|WJWK`Knb74se0*8mNfYFR2Y0R2g{>hf@}Kzg z>F~3=&+sDgnwH-I;|SSj!R^EDg}Y_RiE9Gd!iCl3S!CwUu&^z4tKS4c*g*%sSTZZr z8@Ta?AA$$X+<*6yl`C%g;}tGTF)zDNe96rbb{QMe(9(OMh4jakPJ@3{Cwdde2LF(K zG-BTTg@s**#cIrKHE1>ucVBeAxLA04U9=>u1e%=5Iy?Wvq+?EF3tx^z3lRK>xDM5@ z%f3G%(Q)dSV;bPGe92f`IaemAmM`b!Kfi%8;U1V*;M(}(7ozg8^uM^-sdB!Ui~Gu?C%p6 z&!(!a=GIUZ~IrA=`dE63Cazj*I<<+r#RLLmQG@M$m%y8*#@rca0y=fhcNe+Pu+;9~a^ z(C)lU=+R}vaF->f+(w&l91rZQvQPL)sSjAYuFXQ%7!WnWik1J1$c#%mt4>n^PBQ<5 zMT2uFn6v)?w~xHH4W(7nNj&0o5jdhh`x;3R9K=M;fgDV`Iuhi2SBP^$lY8xBtfIYb z*GnESA!Ws`-3>ed7+BZbFafrVbMl%WdPj9?_Ql?T#0vH^Z2ms|wb~!(0Kk_L1uCsu z63>Wmy^fSUA+is)D2YFK0`VD>gg0!V?L&KDWDUirpGkQxjgsND8*!45NFyfe_pqFc z*-i;|EWJ3$Nn%-TxC?ql`!wdM9?S6JfI11ghD}woRo$60l8$b+0cAD!tJnQ?Yk9J@ z=pp}(P`gTk?{{9(bj;F*Gxgb)L$7=B`Fe@`&oLNV(fG4tUxvb=mB> zUXa$5sfhanl>%QIul8`&SJVY@$r|nv8@fvqr){-ka9s|I#>+6BmUS1Y;HF8=b7*>0 zyD0B%n^oG{#frS||3T5GLeU5GL>Kz|RgBsa@)*nd3wje#PQCr8t#FxJ5UQPTuk1ip z_j*V}hOTt@={4iw$tpj7DZ4ymMSqRZ*(Psq~Q66F;6U3bb0O*9yWxWq8%*OwaUl8-BD2F zXl2b;iPmH-6LK5YB9r%Wx{^#XT&X%kB3s`t*kjAYtiL#dZPM^nFgmmsQTM25@{g8! zb8>|xUbhjh@+NR}+FU*%^3BGYokz5y_qMyXSYCny**1jLDw8sM-57-Q&lw3)7KQha zZsZ#oaAhQ6f|*`N-6^8EeN{GjEvcOsNHZ{K2#_G&DpQrVuqLfjkX#67GdLc5Kw^1Dq?xVOw`)cI6Rm z-kg7pP`boC_(^*7vVZ0`hP2UlKXn8^oPx7xfKGz2cuVOC44O*ES;cxO%5%1^;nrYg zNb1stXIlOE$nhwxN~v2vA!?bNi<3|NTV;>qrMkF-Tucu9_5X*nw*YFZd%s2tg<^#k zFJ2%7ch^!%fk1GlxVyU+CrBv-cX!v~g+d`X6nA&G7QdnI@4esees|`6^S?7|=bW9h zlbOglXYci_^*sEC1@P+iZAIN&B*j-jxN?Gr?ZFT}c3NgFA|C0=A9QV4w~qohsE&LI zmLubG8g07I+W4RSpmlB_v&EcvR%O*h1c=b-$yg4##x$O4X5W_WKE0fafZ*~^#dbO} z5h;LV{zHpa8&{=mwbJYwo)JK)!AoX2+pRQXob$0eQJ-RW$`3kaZc`mkwdQ^pUT7T~ zuVZ^K*5Dj5Q9EPPz|Sh}x!!O3YRK+5aD;o|*sOspaphBZ6jStA6^}I)fFV5pw!F#a2Q5L~5%x!1#5z4z0+&pHX!#$IW)X!*BW zoFpF2aW+*MY@pEaP3g`e+j_-!EKkTQT;I?W#jajd3KSl}9h#;f7;n-J*~Pyr;3rbf z^46hGg35~DI1v9(j*6G#njCt}2~R{KpXBT(x`70hPrmc-Ry%tEeaFe)y>V!iH=3|5 zdHE^g(+aXa`)>4iQ&qSu>nk&Sns-y81-ekJkKHM?q~RYNdD?g+z(Br0pBIHw7{)mF z?Qod_JR&Gw2Z?dVSS8u@cjAvG`LlT=?hk;sw@8_Z%-d|*_}~beWw}x8?rO!vy9ILhy(n{ ziwA|yQE_d>?PlDxM`b$P#A+8R@uw>7o}dIhOph-L);#Xf+$rkwZAH9iLbCtRc8JdT z23z6K=8eYwJEiq#dc!HtdC?dpz~Sa3Jdu+g{W92R^JB4fx=COfrX)$%u6X-c{cyO@ z#}}LQ74`BCALGRtPn5N-GS{?j@usyvTZsy%rad9YQe6=O$hw!tjevQ)MxK<%E%aaW z512^jsf>ekvZBJ$PbP6u>*I)!ZP}dHNPR zgY*2o54yRpJfb)riOn={gyRz70$vFCZ*1A)g$W?lxjxkLKHlmoa4 zE>pi*&#P0tP-5?nZsI$}Q5QH7aTfg^t3FJ5HXtJ2KFKO2@5~1EP4CcQg!kB6&=+_r)eNKXBou!X%y~?&+dR%=_M^4AZW&9+I+Nt+0=WZs^R*_(I_xc0 zKi0?!j99v#^x&JizkOmLt1)uC4sc4#DGgVQFVDTElg45{Uo2_Qq=hKi=qwY9!1Suz z3h~g;_|Oy@A^B2%S>CN8&_3yrUThhNN&)Ak4zmYprJ`ZgT^G#9w)0Gi)JjYUG4OqHT|z^!mYV*SU~ zkQdXsUy4G+)TfhRN1gQ#oSVwjiM{DTF0K8Qs=H@I+QRBJT^KowMUe!@%$eBOwoPjg zDW;5};y}8oh8^y{?NSeEYH63$ony2rGA~8jL#j4LA!*@`h zOXJ~Ig;f%N#wU@%3v*K`nla^;SSEc(-WVRyKarQU_!53{vL<@bO3maH&cep-K2fu_ zwEfGwqIv=f>-Ij{wo%}32DIs>%&o~Xm!`@kH3qVo5|?)6tGU>_MY&UnyeVrqa)j2s zA&t`~YjOg6{QM#SwSu}@+~sLB=7S&tS4Uq#5XKWI|LE6?E{7G1tcbL3{s+DTJ{JkM zMeI1s*fJ77gwt0=w2hkCpENVcLit7+-1$_dQTGT^YNs>Jdq;aOG(&K zaLE~lCZl$S$P^`O<4qcjd&%<6;YByN?_tioDWf(yv;1AAS>-K(2g3!k?C2!1H+jy* zIp^FJk>(YnYE~OlPnkTADWa}pohbS-Su>D;#T%Z=S+iPJXlEZhz2Pi=Y@_h;UP+do zSth@}5?i(Dk%C(eF_qr)@0B;lY=&k`u!Dw3Lwe)*K5S=bDK>3rY}n|GvO|(LI`&{a zvArt~k_oy9m`Tmk8>^}>sst~r5)Z0@?&zy#DFBcwxMddJU~>rKJZvx>sk|sid&G|&EK#mKz-iz2ma_LoThoM9@eQoM$ zVjQ1IPa*86d`{iE@7b;jR;jJxk-|ah&s|HtJ2JjzP6bHb;Cf`jmLWl&?{a?XiSj@r3!j%NLDc3cTIm8~_(F?IvvkCBIFv9bZd&b573jv0T;_?L`ju4nT z5H~q4{XH__Rk?L(D)UM0FaI>Rx7%cF5{?S%COb^vx7p6C!WYx)r~9X?)4xLX&Wl9XcZ^%&q;>!cvEwfjz6s=)0#=(^0&qH{hqVWOnLf6XT4F5>1Tzkkg ztxj32KK9Utp8bS=F|YXGD+UZ%oVH7ySPTeU$BB?8S$(+?_SWXJrS@#^BU0&a;Ln&C zZ6SPz+BGEitUe<}MSk#~cRVEa@kmR-A+Jz#%$yRCg~B=b{(-cKeH`8`T{G#rxGaY0 zPM6RJ+HH+8vQE|P^@+mQZ)_#T)Jj?#n%P}ika)sB@=P|;l;5&G`akr)i=_G5Uqx?s zD1A%VcCB}}<>$c23?X-v&IwJ6-JvW5EcfV7`z20_r#sLbQGdhvjjav2MXd_2SqW?XY}Nu0R6Dmn*(Jr0dC*(!68U7qo9zVRTP zJdSWbZXV_darhafSy2e=W7-FX9{FdeL!?)X7v z(5xp@Cl{rr{O(d(Hvq;r>zxwFm_>}Q5QSbOfn5AwC=CHLFVp<9SbL%|)B5N{|1=Ix z2r`XczuxiQ>GR$R`}{Pw{TsF;kowC1`J67CCqH(_W9xb}>stNHx+c?T?_)7t>1&g$ zu-KCv=Br&u{hyk8^%PB~Y=$Y=2&Vd3ios9UmLfDG2ipczEFgXI#%1W1RZpphoCp6(k7NYu-&bpj0Dlh`c6Hq* zh}V z-)$XVm}IMFV`e3jZ>pvOEkyy2C1TyEVX$COxJ&VnuO6@R>*%L!je_Qi*;{Xw@%4xjO*~@uR6l= zF#gUg*!;S362CKvZtYng+uFB517zjA z7KXm#7$b8u5M7k0T!i3(_1dEiJt=xFM8bD{7z%zDCoL5kdS=2qECs(cbC=Dcd@1s; z9^zY9f$PnyUDak5Cr*QBJZ?Dr?;vTJ;=}Sv{{^aTX?@#o+wW62)eMcRaHs?0-w>7M z#dP*7iBKdsKr=+>BdaBU%6jZHs0B-_rwn&|E;wfmJGzsBuSIudaVFvVk?+mszp*>%2H3Nc~Gd;n8ZL$U`p?p0nSN;#j)lnC^~D z4qfCCX~Gxyz|%f@Xp$n&r88)d&u5QQ{&8aP*E{b03wc!n3;~;fcw`FDd%|>q&IjMo zy5f&r1^BH)m1Ov3ALaG(n)7o4mzC_xm9Q>_8pj8BuoT&USg@uyHn?JrQ-e>Z^q)7Y z>)%aj6k=tPyaOR3U>eYW$)EL#>3RisBj@+(HE~m;E4Tt3#+bsAt?&`#_Bd1RT`TiO z)Vq!5H;u%9aul0TX<_F0wscyT;!oNM0x-35Wi5Sexi$gE3P&Yk9U2g_2ZouUaeQ8e z>{jmb8WOEK65BoZ4P;H>Eu7KVtAP<$V%+T>|qAiA|3_vf_7=nwwZ#&xe0aaf_6*JMYB+zSyt&8 zE}LK1R}lpBb#n!b*3H8O>a$$BIXzAY5wy%gT>|v1gN5{QSdm5C0&n%{vseWDqtf3f z%D5VeGtWY>>y2q8CSw2pJ`ups#&@#Gvq$0vs_bge4Yp}RpZCOXxMZ;2SDl$EttwYH z`1JpIAgW3{?s8)InaN{`<&eFsD5o~AG2#k9v~7m!6fQVW;_$5g_?laQ+-j40`&+R) zkncFmgWE_sVJcQuQ%i=&#DaM~E<4S9B&V`EqWve!4ROnk)xrOuLr%auzEXEWYRHxj z_ssC@7*|Uu;D_hVtk>_jLE&nvVM~KWtp!yDD=iH|;;otxv>aL_ZS&NK>E=8eTjmP> zB9q5j0ZzlE5%)cnW%)ML)r_U%*Fo#WMTE7yYZ_{Ru)^3ASZOS#`+ z!$bZ2&9v?Q|DaE@lKHB4Fn!D$vKb2!JIy{4sCt)yWM~-y0_bzkDlNN+3 zg*po9uK%;n#Ew{YMnxRC*{R6znosK$myd7W(;3F zHX>QOUtC=qZh$GX0t_@VW`kJ!G0EyU6X$?TE8zf1OK% z1yVWb`mxCPfh*Q4lPp#PuB88SpaMqczSgI%XqFbC5#+_8rRYl=Ikhgy8LNr~`;fFqh`FWzypy~2oY zh)Q;Mg>G8gk&SCLhBuCdn^6&2Wge;)S*dr*>C~hDpoKKPZpWT^IYpD4efJDSdEKE} zCxcd-L@n9F{%@r860xRR&>!yDdqIk!fnoj=!V&XVQ{lP#4FSjeGZL{BA|}B9MXcy^ z8Bv@z-a3Re1@X*h)}P;7!J!{G^(?TUPZ@kcZVO^D&Jj+)P(t8~$cbEygO?KO+n5Gt zm~e!Me>%el;)V@oFVBxuMf!f@Cc~`V=I7fP{*KIew9#*jezo^fsiU*FYRTDw_F_YB z2bMkx6;zyX%PBg}%V~#(-^j5n2{ySOZ>+UJBYqF7nvPo*4b$52Dm8h%xpsGtpVj0Y z6#DAGL%TL*QH8)TsN3aE%Dv|>QPiuLOI}EP$u~&{fm<|ew)q!U3JkAWGD7S#;rN*- zggNBv8J}!QRHQV~vO9?uuUF0yy6Ez=E?OU63UU(QjZ6{Hgk+q%N(upuFLFubbwZsy-DVDxO_2ku*&z@r+|F;`FUzO%X z{00tiSw9vXf5)8XNW;soRP6Ej;!URNLF?N;eOD@Rm&$(LD72?n47FXr-_@pTIjU91 z!9s}00&sL)ouCfRV$UQ{TYuWvUwknSxeWb-h!DU0<$KXa8aOg4T)bCND zRmUMG`tYS2uPGYh$_s!uJfRN&yyg<5oESS0-z9P*zu$1l9e;B1NK`VqW3qhjVXa~I z_utvrkuu_UxHDrdZV+4Vex_i_SIAXU zE`AlqeujyOHb9-pCz2?;LDDpy(J`kocdnj0F8!pC4SIzGFOxymB^kw>SQ)ADyRA>J z%^PT`XWKTXu?V9Z{|hAq+GlVHgC+ITtqw6YK@Mke9F+4(0OTw~3rhyS;J7|~OVwd? z#sHm8Ixutm3Nrv6v+;)mDPv_Zwj*bOPKU6g?DvDnR0UTAK-iCe++_LfpQU{e;%^Wc zE|Ci+@*m8~11%ZVNH_s265rosiI}}p5Ylm9_`neQM^n&7fnT?gc;Fb3q>)Ie_tCsD5+*@-SGLe(L9>={I{dIsP2R*-F>n5~q}i3EmyNF(N+idB%^; zq5$LEU-~lrKK$i)y}xhx`Q^5MA4%i1(Gv8cxY;B6nY5WE4%nl~KX$!6aDTx~`yAuV zYhk6Y?xod?RP3Al@41C-N{0v{d3NOIEuB^jK702cRy8i^MKpUe@1526jnx+oOgnB> zc(}zyW5+g&MT$LF~h>56U?FGun{CIQq?IcbYUt+e+niqBb z$N6{BPc!x@n}+De|Dy3NXhuVE^_3)y@$M_+k)`2ZZs^^&D|2SZe;Uj{PSmR|VM7y0 zd!0Oz3?>I}G~Nv!C$;wHZCF#aC103u1i^geR>+1g6@faWhi^h#dnkMPH-xdSKf@k5 zu1TP{1gjGw>tA&farq-$N_a!zulNjm4K$0DNW3uO_zF`1QYS|ma-_gCfVfFuLylk& zGE~#jY*k7JD%?S?%&jI|VbDyxo#weJ;vaQqReG(GL^0GHPs#Somse;HP==QKuAE00 z1-=~LewH$P^)?yY0E5lYwquoV8AVWqf4eWvlDVC-+#8q9ku(e3P0lh?ISaQm_!8#s z*`jnKR>1t` zw8-%QxIQEMvpO}>h?k_-mgmc&HEGK%pX(34eijE7+rzR4Qngzrjl&U`rJo$pZ5qc_ z6HMc6wL83Yamqz}_kc!4x>x1uZM>sx^sR;C6n^{tR1#3`iT?Op0KpaKb@<1r3o+D| ze2S{kdn^{li~qKu8S~KsIcKVUrH8XiA74q(cmzlxuP}vkgsexKam2tXlZ6J1UxI#u z>p&a`q1t!VYHdv@GA_Eb74NrI*QT?2biaX?NuzEnPd_p!bxj8*bcIt6+coW)?qku8 zjSPCEDifpt{IP@`u9nFT5Ztt4r=C3jUoxX&}Ai>jNXMz1I>+{B?wJIXP=J zQ>nm$D-S>%GoS46##GT;gL@a`{u49sJbT~ui9X&@x`&VYtGJsWU`!Yj)GmRRngQol z3MrrdQ@^EaP z!xh{K+s*wo7MvzQzmU|l`~?PD^oQND@S^}BjJeL>a)pk+I zN^_FsXCjvIDE-?GtZlB(g45d3H$CyMR#jD|)D<<6)BdCP{=AnK#x*Ynn}CVLZwJ;S z?|c-u)BI}efaWJ=?DVtR)HXkZxBk=N@%+R?dz9&wjrZYv0|PgYDel#?HC8M0XOs|K z)>wEjH4x?kZqOL>#MSg9*fTa#pe+=Yh?0%+*cY9rrAwDrxO|rl+`_dq6j@c<#I;rZ zcT+7Z*)NiEkzemUZ?;5yjD}!(!R#tM+tE5j*Ya6n7J00n<+&x@ckM|!f?TyCfw_(MqbkTh;V}SaCELPB zMDYX<=D8k927grJ!VPUK{=^U5{hHkUQI>DBGknQ{@li=LKkbf4+|(+5;i%Cts@JK| z3$SZOS_Z&N%GmNC@l1hm+SFzKZLvP2XXv;-Uc~^}v@Kj>p(J-VNE268Hx!Px-19?(ZR6kVD=5dskLo?CUeE6 zKVa`=n_nt$@gEGBQ3YqvA}XiVHcJjE#F?6hKCRq8#{6}m$!<&G9CCFx=9SC6|J1;r zL6_8Ti61>^3vdMG!cI)Ra2-*Q#t_~+i@qjf3X3_rhLrGbOPLhw7=Z!a-;`RPY6dH14TNssfEn-o@1sq20am)M-8pw9%a za^?SleW}QENHwXVPW|MFjnz)p)eOg?+@$&3j z+#fM|)~H$e_B4M`-u^+6>Lh1FCvaan%e3lb02F_HB(RO3Fkobako!pI+@i(q_yz!) zGv7X4Ik1xvXTXXV?ut0Vx^Zv;m}e^;gq&5{5qEpv2EF)M8uH8wcg(DcAdVQ;>X#R? zh_O4VNPsb3G^BBZGg8`<|FY@j#p&HVCzy`cqjB617RRzjq~ItvaKt7&=>a#?s<^Su z!i))_`x^8q8gD=GZ7BJU*vg4EMnv1=UZV0U{$~?=H$qf^Q{OZeRO(ihH{`p(oBalH zcy)Q39eW=GeCbL8`ZpNuO<;o3PNSmiU|mk+KpF_)e}U`t^6Jl<=^-P9bt7YAZ%zse znG+I`7@hDXapzsXfB@91rn=e0t#t7SS4ZYF0m@$5n0091DQE*Mx_+)2>vu_eh747p zFN@EN$;gQHto-3JyKk>^C2-DzP=62o=P!{Cg*y_l*v2s9@uCjH*2~h&Fq=ZkIX{q( zdDiU{*>EqsY5LNr-w>Lv&9XkV?c^Y{v|Yh@M)22z9sLRr0{waAIU)dc=@eKvt-_Lh z{~GElqZ-VjZC2oNM^GX>x8b4bBq#Ut5Ait8SGdm0zHIT>TocO@xX$<={89(&hAMvf zCn*r_YV1xA{eMXl#3lY&A<4Yjo1;Dd{dToHO<>#QwXi|KJPm)J_(+?~88`R*3hy67 zGx7cuZ|#@YEV{j9*;n>m5uPA$VyR&#RXzT|6oh3=pTfLmQs#dqN;pH zyU1#nw)oulu43-{o_))=2GKOysuF4Abj?2`z%}DEl|dN^$5WotKu+~4kT5#BLSvW~(x<{lqD+4MLGMoG(roS{_Kt<$dok|cm$_Nf_HI${ zzHpGE)h#FPi>F}$=WKETPwgo`#+WS$&A(0adtTsjZQO?nc#IyZ=>r)wIO{T|^6H1& zCBSBU;W@>UyEncRix)h;zEqZG`?e8@f$|&uj|0$EO?EC zHC-c3y-Bd{%awm#Pn_6Sj73I2tMpv}y15)B+yNKKvC?r%;?X@B{#9u^w`{oGx$Lx= zH5N!q(r8-$h>lO7P}vM>4L*tbZdt|*784l9bHix@lGZB6=aIlMWXXF&zqnJ_7qk#J zbAOcARyD_%7w!;85$Dt$1<6RVd~N0(Ny2y;AU~ZP9DVM5prNFPAxUVo3o2Q~i)iTF z8?&nvAikH*p}0dQznFZ>$U+~U)v1{Iuqi;T2v2Eaxhh>Y{5Em|)DO!KrZS1=ovNH-G32MJiTIW=u~Od`F+UgjHM?o(jMSdRkaDyVSG zM1*_IyT_Z=Vc|^Q1_>Jk4wToPc>erDdfJ}Ki(A~$A^N>WgDNN7KEx&Wcf3F~$7{t# zLd;*UOj29DsR|e-{famQr-S^+=a_8z|D7y%4Z483NiOXLC>hIV1Ji z%b3w3yWp_+j9(ENM|YfIvNsNPhGc3pn~xN=CIqDhA<$VDF5`p^rQs7>U(+Ys-HwGf zNFZs#aa;}JG6DN|VbVRvGU}A(v1K3U;=@!b!6Q$z5dl`uB6@$M3$^_W&+ zk5U5U1c^Ph_SvN4|5aKc#J+vq!0^(5#~F(F#4&fzL$k>>SNt1h6Rt^Ob1Vv3@PE~sJ3Ppjo?NR|5wgvJPY8+l zMSP~|a57}MdsNDKuJPP4dAFDdvfH3shmt+~YAX3C^mDy{UvmHV?@9D?q5J0HYO%b@ zW$WhZ?AKTJR9K-x_E<5Q?ANb=(VP$`L{EPuoWu_q?<9GBA3}?8o3MRmQ})D<%06@` zuHk+M)~8F!#t_W~-CC~=%}A5Hl70CR!t!Ng`PedZq$$)iD&%ET6Y;@TV z=Xd5zl5HGfgJQt@mwHuR?X6fj~i&>${8Skbi16Fq$H3It+IOTs+Y~PP0bs($stxrHC;i1Dr&C4d1Px4-kJs;Et_yK?Dl``c4 zYgcW*_M@6H>#30S%9@30r_PTG-)hNAlGait&VC)R?lWgHDVAcON>2Ew%JLof!EsQ<>!l#BW6)uU+@b3x!Mz%$N~&fOsDtMrZb!%KB%eVH9{~*(K##hd`<37Mhm@bE$^)2b? zFY*a-OyTjl($9($qeg`*VLsQ)!I65k>&pEx@^Pv4o&GL3#8!<7@>y!a{tWI7UowUw z)^F^A6&arB^1{egfAF}O$IF7&Z4950E*&&{ThMo1j>G+(J# z*62FFVHJps7K&u$i@f?I>hgYo4Vsj+sZ2G&$%q=ck!Bq+DSd~0c8?Kv$htqoG^{se zL?HQZDxc=L*qw?7fKgH;oFDl&1(Ie+jAsi9Ii6u1Y=NsR?+?)v=vGL-dwfnrU_s(4 zR1ZO7eYFJbvG!Fh`W>Q_mX4eEl>Y5$06cDa5@C1^ex=NAAGjO;f`TmiV@jLn(Zs7+ zeQ8xup67F&?GA?H9SOdZy`(&EIy2ik$tnJ@QzM5i4A1L3KZTZ?4W<9y{7q>~0G{yH zObvuAK^Xq!C^7?uUQs1f9s|7t*7o1m!DnVd->+{z=}~Rl11}f1W4#kMlpS5^xslpm z|Bw?%UzyiZ-5p*K#g~XZ1(#J9OZ^lW(Z)}y?VOp+e&UD*znsa48(IKwtf2rRVEJEP zgE0o~;VaPB+NX?Lx%%*=BCVMx@4G_LIzIdjzh)}Awokyll7N&tA*_iUxpb?Xjo{vu zFw!(r56EO+`&j$7)8Y#wwdrg`cpj0u6sJ?-cQI1XZB5)5>=}Q>8xtzIZ=D0yt{ljm zzqInHWUp_k&b(=VsNw{=;IubuTCrgE+5ZR`?;7EhJBs7B4N)|gh_aK2BD6=>=gg{( zh!yJGpa*(JyK@ejaSj$na)hjnAf%zV6Rn7ODl9A0z!-p@%E16AJ%;Ie7{K#06DG+SB;@m+oN{S%jAv)MUUG!AC|pzo$SPp`fY`F}~+j9c<%!ug(mE zJxC1kQb_?vq{`bHu@< zUi;YDcqH>x%F|wNmM%OVxuhh;tAPa%a+HJPUl{x;|hVz7<+ds+L-6D(6LBgx9E};Mg_h zxV4ea)-&r+Zg-b3m`z;hvABza1%ewmJmO#@%L4gWgLJ8`{WYWhg-kEW-22C$cCg?( zXQTe{$ew-^vFCcAPOW#8{(wsg2jGCfd2gyMDS0Mn-pY<2OW)sA5;X3aayCP#t*K)AMsoGu;GZM z*$q#(pQ0QURdD&{YSy5zcKw&^8{Wah7=kHe#}?A5%)g~ zA8Td^2{6)K7@Qc|cj_b*Uu0A;nXK&gE4|2&n}_ez>HI%-KI;4TTtuwshedqW=nU*J zw%1Cfdp=}VVq?h+apxg{nP^uxvLs2WLM;NRO%cJO^`C?^*1_KnoYmw<0r8TO!n1rF z0Wb*&+#P`?@&13Y1tvDhYk@(HN_mdbi=>c5aS8|pWQ2r>oe`NM`$?B5Ig&3av&8p) zV+4%F?vV=f0!!RO`^>4b7h2+06-a7htM4X|eD?(Qie z^^Zt!DhWnVLUsp6TshpAqjU0)f!Qh|ohR4m|m!P}TEIAa;_I}(1 zE$OfURG)9-lGb{fve{xh{mK@y5 z#@5os_TZX`LYDm;J23P$0^4s6W_-xqrXLSTliMI!R2k9PWJcEIHZiU@_+ZENO{aC| zNv0n4B9@7f#*r};zy~P5qJH^Omqgwx;jy}f+O%3%R6CW%aNaCJf$w)V0)}xsvoj=D z$q%&{qll0hpvGb|{0dOSBK~C~g~K+`r8Bz(EjkM*gu`w%;4l|Jb*Y+O7WwV zf|H`)DTM)=8!nt>pHc_>Q=1q*PY2H3CjwCT@*?1hDJqECbI?N%ns+BaMS24ayidB@ z#i0`1#wF?-t7`^vM1DwH6<-5u13|#lByG09zF=^jmW(4$$Au7Zo0F(_!wQ_hUTmN= zVEi2Vi67-38@Pp$BPP_2y$J$i28(RuR2t;`Hj{Rwhc1>;-X`tf_ID;aTK>D39o~$+ zWa});?G|NomRN?k1D>Ab*Df8O+?n#2%f*#wd z88_xDJA#&>{=Si|L_=&%ARjDmQGjdl%M-W9kT-#+o{# z&vT|YOh3$=o6$L?ihj5{aQo!$_M`C;R1qk&d`f7kDrcUnDws>^yPj%8@oGZ>OMC;v557BTj7fIU$t)&N1o#iZ74`=-+d4 z#E3_O0oTMdRuwPfH|U^7;O68s{ha%0=`#eV<}Wz42Ct@WA}-dL=+yAINOOi7GwL_8 z>K^SdO2JR({M}H8z-z!zlIg0wN2G41m*BRgM^5X&DI$LG@S_@R?$K>qq81`uq|apQ zT3d{8Bup~Ybm)~8_1hW{O|w>=w;9MU#jv@>^gHvFP2HD;o;3s3H0L@eOni%d3C@RE z^a%PVwV)`c++ui1E551+{Ml`)e=;2_IeHF%j8z3su{VW7+Vxmpe=O+b<5F`^Tw+yN z^!4An!cgHw81g;S6U9QzK!#J`Lkrj9=X zbPHrw5dMfHLW_&mpFwu|9BXk3a(pTS^V@Ch zGv;aI(dgvZ?Snb8wj4g;Gc;d{y%4)vlD#<&>k8A6-kI`LUR@cH6i&u2h;X}KG49Q3 zeCU>~_cRR1-}br{kbq3K)HFq=il|N~87qo%Vggk`f+DKYoHOjw)K4pp3xy?-JE5-Z z7Ej|UN1bf9!whO&uS^F)x?DW+a{dwaA^*=4D1{~_AtCX&I~>aN@EKb zCd;>9i1Cau(Q88bD?*Ueejt|mf5#hZQwKR4DXwQ_$Ngg~9dY#!dT_0Kj=1;6WnUJO;p?kMwo(Z^tx2O4Nj{G_3OmOpudmgi8^&|O*LQ!6NKHO-2h&yn! z1k=?3_94BPk44!o@bpzzn+nT14LXS;z9~N^cL%Q^sDZKki^Vxg2_3U=TTCAy=!4M{ms2k>LXdL;`W%8(GQHQt0 z)kU3~IrPFT43fjH>!{F634D{g^)i?AE`*Nwb#ErI3trr7!!U=q+#u+exooOe1;AAR9q9+-8d8sZdekEdkM^3Ch@ zwGW$tng17F8WnKSwAA?pU^p!#6z9YBMbsJLIxclHfnSWhTppd>(L|7H$k?LWm7%(Y zi?5{llKZtrn4s{sL68fYRY4{7VeOZ?5rI;l96k;-pT?%)-4_!FFFw_deI7mjg>+v= zy5x3trP3uwAcRbIi$^@BEVZE=*H?%$)vj7aHu_~DsEk?(`5^l>e8C!Zg4K14MnUDB z1Sj^i#0c2g84<-;^bKvTU!UR-eKxPjzbWjxn(#&M5p zGTaHpE?Huosc4I{2*?5j;_F|5W<&E1a{mkKc?U-E_0g(RB5InqSv7klq=_gN${Ux#U4wrOf&?oA5_LZqkmw*;sbv459<$~!zYej56=muJb1gywD(5xO01qYK9|lymdY zyg>0GHx;g)1S-GJ#YM8CZViP0&HjE{Z)QX+X}X2}X#md&hCR!P$ywd0f!lae@$Va@ zqysJjPTI;^>GN6_`Cj*5CP{#X49@2o0k7fhtAs26syEf|g%5ejZNk?!R1}eK&)A_I zZ1Ak{%edkXKUv;Ax>02cE=K|!xu9^)#n`c53Mb#&%Bp6i{f$87WXcV?+>11Hb7IJf zZWp6}xe0Ukn_ps)?B!C_`hp(pHlRKM;C^z_5PP@^f)^d=7S@t1NhF*6TdDngLVBX@ z)}y?@MU%<49^I5Z+=QJYYsFf$g%jNOl6dF#+8wCqxb%^T@?EJ%dfm2AvtydWPQQD` z{BnK$8cUE`X&L^+)f63x`F(G}nG?iuWohvBJ^9e<8Xpz&`YW%v;ELEp=V7o+GX6je z-L5050@mDztmE&+0v(fWEJeQO^Ojt_gjjE-(wRQUTGl`zv))wQ)*{%3u3@O`g5p7u zhJ>|IANn>AYQjJmPZK#`y2*@wX}&DETayf;Z^0`2%z0XN)g_a0a-Bprn7=yk8HO_o zDBc77#D~r$U&|vOzW7MFb*8@i9I+Rui8-qU$D$=B0&*1PTleRyQKS_aiM(cWemRCb z^4+LSi8|!^IAliA{n?8$%`HV=yE4y1-}Q#3BsH1@flWE$A-m6l#49(=4Fx`D)($`N zmtJSqrabaIZ#J1N*N~hs`fl5)xTVz$X?9$Pl&KHKO`5P>f0sAD)ixI?T+LUrI%*3N^F`Zx zpkX*plrm^FK8%)Pl=e;*gB`nWe_Gb}@DA+R!z5s&tW8b|OPf zz}UMN`+SrmobcH;BUsnWP@;o&4;<=Q6erY@KG0yvuq#Y2NtNw6?!pE3v$f?JyF5i; z3Vx+^==|GU`FoF2_Rz@9QKQbLtS7y_~<6!=+8JF2**5_fp zrmxKPPEx8+lyw?i*flJ&Eb|+6!-u{hO4K<@=UenShaO70g%1if=zDFAfn9$D+(Xuj z@+LLVSrEVoDVon|^2vr)zt^brp+KhSSOq}OW3SM0*M}HAe5t07gghNfT+btt#g-!C zm4c0#P8@rzsj_-qa+|u&Mu-@47mL5lv`4Wh;E&Pd{JH zO5k^47xW55DvsGjYxXN_Rwsfi`0yQe-X)Cimxd8iU12EtqVpg&C=VfjVd+3x)()`4 zvwo3=Y0hjO|6u*6_rp{$Xq%u*d$1JfIQ5y=uJv0$8e=obi}ngC`YXxVZNrb}NA+?} z7}8D1N|OOweBxc@esc6TQF{2b&j?w>&$3t!V25mKf#tdi>*BQE&t-8*Kvv>{G_70)kwvA zI$lutu>9lgR^Fm#7CfZf(j(gE@+6$8M-ab}rRA_>iK!)!sCXuS%?^u+Bc{d?B<;d7R&R`{c?>%#o>7@CD%`fYpr5vsLc`uc;XB-ZY0LGqH@v#+P5m~!H|9>Z~S z_UE<9pc>(O@{5adc=`V+O ziFw>v53zOgrE-oUk@c`C%VnnoVXQ0}fzK?v&&HjfStwNz+4Dr=kVN?AsT6KHA)R}S z%iTm3y!yY$dJCYo!Yx|3&{C|$p@m|B65QP(I0SdM;8NV7ltOV0?pmO@I}|6lyB8@| ztU&P>+I!!-^ZzsZaB?!kgbC+6-`Z=hwfCl7XtTGlB1BV|__Hyuj62IcydxS;=^I`J z!Of)8Qj1v&*KaSs+6I?qFI;nf5k9`f7>V|By^HHA(mTm%ufxU2 zt?|p{B;I&Ax^j`HFASgbcks4<{%xMN;g6}55q{Qf22vv7JFUVaNkxU%y?2FJ?2oit zk;pe_5P=hC(hR^vm4dW3ZLQs48|K;Xc+PP=y)K|c=`WdH_6^NWylg^L)Yb3CwZLU> zp8k15(+w;F&AtN~bMi1kS{vq35nFbZSvNsaQCH8hQOa&-BJ+aMVR|0?@k9NHTA9gn z{x+ehs*U3yxZ4#SJ3AoKf5g9r=iqXJEu%p$=D$(&TT)Uq{!XK$XqbuRMa{EL1`!tY zA`pR6Ot)=}f`_3dTf))U8NJ_f_bMapE}Gj>KX!plY~_D~)_CqKi!-?g<%axsw_@!O zZEFIyPq6;r#gwK8Gzc^0dE2%r2Q0p5B2tt2(qd9DxT?(o+Yrb>N_QYDhZ)8mJI z573x&B5TxAPYpQ{v4`-XIy%#rD)c=DdWDJ$ZR2M+TPg>qoh>a^`!c0;pl&+h_G|+~ zhU95qy{1f2<#)RHQ@w^H*7#H4)}<6SS(Z)(FmF-`(Jsd`xqLt+{0@1GTXUs2Fa$O* zt(Mn)Czcz}8}2B!-B91YbhOp4mpd)Ggt*JG939YX{s z^BIxaBKf*)a&$r{FjM3 z;t%)ltH+n84-N60rY^J9_+!59M>5GT6jhMRC>i3@gB3m|IE~7RlkVdm1M{tM^IdRf zhJZ9MRt1*R8(o*E&(8O@q*U4E6@Cb2r-%`SZ?e%1{F#)-N6lNG$?XNjXV7nO#NS!p zzqj4m`u2xg>BR?f)(_bxtNyE=pMQ_OE2_Z8t7TXJ-4b7e$zqs@dVdxxS2h-I+Y}q>eU zAyE7sRd}f82HY9y&*)!|N@wEs49!3;a~Spl(7lK5%_cg)1l;K(16U{>-d}$s^LVhN8$rw=1NnmX_v#vdGYf>FQN+XyBnEzTEjI!YHwrdF2f8O%51$@&0zh+M zFB}jM9dg+3x1Hyav*!i zbr>sQ4mRZ57`6Hn%k6)_LVP|mRxR|Y{^rHvKCWenqJyq4;_F>h4q~K8V_FX?xOk5r z=})dH$(~CuE>&iq_v~j+Dvx&?Bu@iX6#rmtbbr5Zz9@S~-4xrB6t|bTDe)VxkY`mj zlQfY3JnSp}J40S(L&q*}e2vkPN+*M$gmbzS4Qd|agjPsSd>DvbYO;ZT?HET${0~dz z$}^_-i|1vq3oz3=5lH8=Unq8LX!Q{%i4jt``Jh$fGg2sKas(*|@_;Hn{Hi1-5kB+T z1`sRvNL+BL1(meOI*`6CN$_SoBomz%4ygRt)AfMu3MN~Kf@#$N$Gw^+j;w`s2K{Q| z?=v}93+I(KL&q1Rsi);D8F;NL*GUC~f8OEeo@<7T8p0I*&@Z5Vq~hPGfKcDzy9HDg zz88dn>f@$V?1t28|D?W@G$PNY}D?DE+74$R7;HDF5Qxa|*VVb7rAsb)C zCWp7M9=3M?SnTOy^pVjr%`j`GHwFG!wB4YaKd#RcO?+BdGU%)0+@>(yfgLO&MM z3*Wki2J3Y3IagbP|Zr*M}u%;Pfv!$iF*@U6(!U1i1cBHp`g$C?6GGu;x z(>;(F#@(Cdxqn1<{f;BfsdeP4nwGlcjp!F9P&u=8O(Bv(_Sk1oYuVQJg*{cxt50K0 zqQ?4@Uzm(vspyx#hx!?OSjf~O6Kfs9WIJ`LR&wE>K-Fi=aZl4Xte7(yq)og$+aFJD z;r44hg=`U}wJcgDXiA65P($s3Ln*)cR-=F>q?q_7m#@%0V_;(7b|_haP%h=^b^0j0cCh0T9aEJa08M7t+>9JGoF1~wO35&+ z)&9JEy0<;$x4Jh;_L)QYrIp{S$-B3EGgZVIK;lnx`iUnzh~C7X1Tj{Ay$Aj<3;z`t zhwH}_tC)ZN^W6o*U|aG)3vO=*sIc@YPY`|#yRqn`kH%u!dFE2iMX8w(3r}iCzS6HiZ9>N=9ftae3;9x*c#CTvbWix0Pdu2l5*HE2L9Cg*2 zR8_lTz^M>w->n78~)Q1Z4Gz?}EecY6G`2!I5ieKHYj{-8bZ9;nF9Iwy<9n*xLI z$ul-FHo6xy%xCQ~-RN*gE~wAFK;Oskhfo|~Yzqfheq>TPV~G7^n#&TE$1+H@+cm4Y zjz_4eOdOh9b9GHNsZo#TlEm8`ouPdxYGo5Z&of~sp5Qas#%yM}*hI|q`-kV~&7(sg zH}S@va!PZ91ffe*9C1Q@P;Pe3%7AaRyF&MTt(_>^Vq_19X=dNM=wVuB4kkSZv*MqI z!=UjfBRp2hw@{o6>t+_=n>sb_O<|ZLDyLOZaJNEFQ}FJzmvDjjD0=AH(f*xK7fJ*hOUf*Ra;O;8Tm}V#rEKgD2gjsnz+F&;k9{H({7mEINDkgkc z)55!0>OC;Z;UyjP4#AE*FI{ALZX!vvF)`MGk#a*vva2p4(1s9ojt!^W?7d#V70znE zNgh<~rfWYeA#C(l?Qvm-t`+e|-_eVe)cVBK09Ax{2ulcQP41Bt;o%1q_wHu<0Z?c{5X+wD*p0#+4?$oCW!<=hbB)y(?zit z3nT!@eOR7eq_G`UL%ZNnBGE0RhaEFu1?wJn;=lwr3h=azC-gdXwFPRD78_5NTdojg zf#;4e2CqK}>fGf`HChbgPZkI@@6i@vA*uTRc-H@%uU;81m$F`W-4{L37+tOCp*nzy zrRI6b>Nm7|o__S;1;adIj_DgK$LrU%Qy+|^?_YjVn_dQ?Q%=K07MTOU$)G@X7B3RU z%@=ddHnhr@8Rywc*!^xjtf@jJy{bEu5QrM zIF7G`e*CBg(uA0pBL>AMyRhwH^G(L{DCJy+i$g zSWjdalESS9Azt_R{)FnF2!$#FL#S6c1~SU2omDXhv=4N?m2kAw6}+cwih$;s32*T2 z#s;sh6NN303ZSvFM}vlk^RU<{X?liH(5^`nvf8|)2I$;i)pD^i-{I5hvRFNnVW#jB z)v(miIcQc0v>)Y4QfuQb+Am6Ha{esE^cN77MRCrXLME^uCer=dGHoH7l3VAQ6{nutchl^6`{{+#VETz6xK7FK1 z0k8hvE53*UWAa$<6oCQwOg-~$S?S10<6ZWk|Vzd|DPOkm>W^X5#T27^8==KaOtR!&P>-qkQCaiPIc zj`7pWIS)2d_YupS#^)rA>{RL8L)R3u)%d@W_gN0>xeKilyq#5fX^!&X#>k&npsyft3vVNA~yJa^65e^i?pj~@5JPr zJgR7+W>?S`ubPbyRA%Bj!wE{0$u0D(o;4g@=`Cww0n=ub5^hV80>A1*qb{A_9B9m` z!SFvr`UtOEkv%;z&(27XJlXlzE4v+S16M&)-tcuG|%Io@9I=d`SN>d8X^Zl zMp&apPcn3!>7umZ{kzI6zI_<-rVCSpCsgpyK}_`nJ1}n~d{_TYx>fMYDZm-Kw<%;( zFKkoqodky>(aRX=Ae~N56z1OJ;^lm$6S+Np#{ zec(PPnn@neT*hpX=!h>`L;0h=Hflxk?wW&kk6ZD0K>z2I+wsW$HZHWK;@(xq|dSA@T3El;jml z&`TD=;hsZDToboER5+4+`_c4k+TSt*f_%u>`+f*5Zp|)uU=KVB!7=^Ir0RW#Fonz- ziCKWtc70jH7pzO)%y%0X=5Znbg*|nt$ zF1M%-lnH|g-!WK&`laM)5>a%Unh9WpT*qG)=U>-Vz3c0=uiad+>}@H=KbEu+oDeT~ zDZuJVyvCj+v(NC;Uf}oCH@Dp3^;(}0`#Z>w;!O+HDyJA}?`^HYA>Oa!{p~e2SP!2; zqQ^`u8V_0OubDlrEQcZ>MeTNy=e2t=uTFKYMLQ_H>{1POXB-7~(TOc+`fECd9e0v= zxIQYU%MYF|Gdl|0h6mvHGvA)219|p^W|{kS>8;Vt1X85U)7y8q+~~#sQT2||M!vP1 z)08iWRm0z265PJFM+03!qy!Fs_+CLq^WBIYEZs*}>55T0tbhDg5cMh~Z&Qs~rHx;u zJ$hS+x+?8~TS+30#`>8RAn!%vAse5WPZrKbT!N=+ZQ(ajrC~wg${yRCBE15Z{hv_C zh*7=a?K@9!tv9_&oMCYUWtS6jL2p2WmiroGT!iJAPj;cY&cFid!E4=rtT5Rn}WWLhW)fE z{pmS^m#;m9=hVj32v81SPah)7rMkxoy*Iv9TJZy=%^bJg(#*5C z^MJUl=_$7zZ@W(el9LX26{O08CCVxsLQ@HMG;@b}YBd3Kanv;(A_ERLUB8&Is>4GU z49T}%MNJ+uV>uZ`sD@H8CpfKQh)BvA%*r)(_eB=1J%#17n-J^f)gVe2(5N4rI5^h3%l6>tZnnVUPX>lbqkmY(C zV{Mc<+Ib3BCuyNMyvb0kxb=&Q=j#F!zEP)w>AmZP(l(JL+kMezOW5DtIMR;tts7Ly z+B0rWj;4b@NRgFOKLh>HSsT0QK9&-;5ffhB^VXjfbg-9SQ&x9p3QLK=5ks2)@wplC zp=71WyPREju<88TJ7z*~;3p}>1=H+*;vK!WQK{wshw%+nqh-8>MNg=EYiS-C>(>Rl zCSb9Pyg9o9sM!RS8vM~ib6rvA)?es&e(TCtX;|2uSRCM!(c-+FxL;b5le0~=Pr6Ao zX`EIP@Eb?6?txXC0=)x>KJd3$wV3xU;nWBCJP z6}Lu1@U10igEQwORmnqM?LPtM<(3Gj-=F(ZXagmH>OeuT1`Aw9HzICnQms>Y-lbE^ zbX1ut;91oI0t_b!BRbx7&*VcXwHT-dD zG3*fhMOMNlvOwciF4>R0z;+RU`f*%wZEcE#cQ8D{E+K7HEzp#b|oej6XyvaGlVqczOa`-T^De zT2}v16)kESt(BW@c8mmgG%tSfDmEw?eh7@hHH?v9wtk$HCCs{+#eM3t>z^C>H)$16;W4!*wJ8>S?UbBONFidNgGQ^K3WGEWPboYS19mdq+XWuph9w{p!$Ygnb9iH zCsCals=b2e#E0wLR1nk9kJHp794lNkbPJz1#CBjyQIn$A10jWeOh%eK$pe0anTwp6 zen5B~9A-c_OAvKt-7B8GmP?eow(v)-$Hac?+~dzyn$2)i-&n#La*9BHg8)Xg`;iG* z`0hgZecjnnR?w{4Je@eeJgXLq{erJAkdnXdMsLsuJWI!jboxx~PpnNUDSB4FxhL!5 zdEAb+!I2P~%}iDRPx;T{@S=TcFDc6P32o9Q?|sR7hm)A18Wx3N9f_i+RVlJmkI!nS zd!lm&S*(xQ;3;5IPOC~~x|>p3=Ub!QCEbuV_M+`5y(-mL3`*G~DY!Z3Vm^qdH`QLU z$A@b-7R%NR;4)1&rY$bvca8nSW3a^x9_7o)0&&*vozA9^d%YgN@<@GZKBxor8|HyU zY&kVE!ZrHhH%sYuZ=JQYb}K8<7N)b%SX5cABrx+0f24fRNK3|~eTuBQ&x*9}w_zh0 z-4vKfC4c;ew}gO?h@e};(G;!>g6P}E1wn!4i0V-{vx!G>bMzUV7J2{!x24K3d{T`UauHBO#1Zzmv8-t)i@u2GI0Sqm0kH+f? z2PsZMdW(p!lR|ZPsZ|9UVpou|gzW4(oWN33_`StS7??iVll%%40V97pJ@hagvtP%^ zK-k2)C0x(H@@a04ww47Ym)GSMOEhocXXKR7ENT%VLoSX7^DhUZG_CsgRcxea(`jHd z$OW=0k$@kx!bb@iN2!lr+Eob$`(ANN0cT6VDdzxCrVWJ&=^eg_!5+cn0Mkx_Jz(U} z>1B&}g{7n^gju@CyXL??BWvmeJiE9&CIS%eC4t=eNUaDWQHY6lYO5@#)=`d>6-Aci z0~+Ec=VfKZPK=GblX^8~fx6mhwq|w|Tll~Vc2BrSX1Okbb6i7%QCGXp)@-IaK|MU? zD%odviy7V^U~dHLdKF*X-q`7lcMDWsXnQpLjC9I^VNOJJVAUiTfI&RLF7N1Qc={jV_M>=jwJ7A+m-tMraS> z_bqd?8Z=1ziMF>q^`7lSyt=aRh_o%XgTxxBA-xg2lQA8WE-Yz0e6FQ~WzG8*2Tk{# z=)gJH08$Nw^}|5`>vKK8&UAB(W(wp_8Uvh$@vmTKJwB9-Wn)!bL1R^1LR%Putmzfb z^eqx+c=L-NxrHnq6~!zSgX{~@nlfrvkMb|aiC{;T^=Jw&Y;!Q>F&O|4fhRhe z7UJHuJd`#uv77?~L=ebpGl;xB&Df7Xz--XvIWbwA3h8fh;$0{eiFRGSSr+9aneZ3A z{}+8tei2Uh$s=`_kXJ;2iVJ7X0+mO3H*1WBm~hhxIOSCp_A&U&oqGv@bM_ot`SEbH z*A8UP1z=B$Ns&)akslvOYrL@CoTcn3-9>5g57i#SeiAN%x!AOY{H1raq?qHORKChB zqmv~AlO^Mu6+4Gq?qxQc+qMO2Ta364`)4}rK>;=Ahw_0Jz%HV~gS?@0zUsPUK8*wp z%pcZP@RmGGsmjx4&2nZx_)S9@+Hn8MhD;;Fu6FIogW>u+7*rb>%jB0Vwh0pszR9ZV za!|W`r`wqc5b@t5DFp=!zTL6I>r-~4e@4>F|Fhef%whx%n>%4cJ;B3^pD48Wu?n+p z#QhZVH-s&q9p)lvL%$fX{#Hm8+2Jl0)bvDX=B|bTwx&;*CsX=-3 zJ%Gy}*AuOFtvs zNst>G>v;!g_;KuENjb6rYSX z{r;^busxp;-Rgw$X%1h&yHsvOS*M(J=?p*U~ zT;~q0>Zld~$1~Qk5_gXt&^bNmfL)lbEfb4J{GM9NPo-}9TYjZaYoh8Okr{9JEho-$ zSSQ~1)Dffwl@m^l+GNgxgJ*6VGk!FVSk3Rhrnr3f0Sm9WEoVUQCRBiasCi82WX6-9 zJ8u?7BHB*Y)B=yJn*0#foa4g7P-;^UI-!E${E;ij?LzEqsO(oynym8zX;}RdsRWf^n61E5$a=*)zu#Ko#v!~wr!Wnjr$n_UObQRJKJQC`*cSVV?0Nmh z+OA|To$$I$|5AA7hV!8ojBno7cv~J}Upyv~CM>piM`-;$0Q310?gD7|RXdimZ#&lc zVoJ#qa3aaLbM$nm19seztaxcucH*;CTj*1n~) z&=&{R@Hv`%YQVk@_2E0PEg&Jd*Mb4l)fZ2ZmQ?b_&U8o)Hk17~lSO)SPI$h<{Ga&W z*-hpD=1rxsln}Jo1^+h)qtDY7$x;hX0)3uZcn#Aigb??jy-AQ^3x2WG4XQ=nTVWZE-4?zr_uCEBM7 zx_OCn(>x1S-0}oxWZ6>;$WBy%egjFa;Z%Gy(Q4a@Z9g{BZ)U7t`8C?MoHuPV(j(R= z3)Wj+uATN8@&4(%mb2u(Hsk!n^beb5p_atc$9J)@Nm<2e`UCKRsOZUhBM?^TJNU3{ zE7Qr*{GNO$%n8^Awl_VaqTgiDLb{=U9@B8h- zy1(+;e(h#*(YhEB?NQjXBEOXH-!%zdS+CRx_6_cu?jG)(DjX5;CW;g}$VeqAxS!P) zi~`Ouh0fHEvC~V}ycsdV%Af~v)N5R?Kf=ll<&_x#Y&bkv0?+=$IN}LyBw)VX^XbY! zzArM8iv66xe6?}vYk7M+etD&gTocXrwv+zTk-^)7AgFZ{-|UWOv3-ZyWD?Rl8>i9> z@_x#LOnK;Os9O@f>~*3pKcjCW3*H<%Ix9EZ-y?JtCz6g+-F+;ySlbGF#aMlrzx%cax+S`o_40B$9|mOQx5JXAsTG#M%%_UgqU z0!N<3KQ<6OU}dL%`RyR(m-qcKTW_g&HN;Es;LIY>$fmVdsRzxP-qIuf75K{qf6=>9 z&;1{Yp&X?Tr^-EUcV8Bmf{)zhTRM2rI3YmC^z<=_(OrUTpO7qtmUo812Wy8!Aq$0u zJwo>smwRuHlC?znYYIYAs&QHq1yY*$p2SuBn$(atxXui61B7@jf{9c;#6vhw*>it& z;GIrKBddx9S5ygJL`F2CZUiFxLz`M_+xj70Bf`T6|3~A+kGj2tj}2YU^jnp6mLm<= zH!a{?tu6Z69gcjs187>h*^=57jAQyogZt8ULMH*J@3*QQOOIza=GID^;*>;2_pOm# zSOqjpH2^}bRtjLSq#XkCX%F`8t(oKiVaQb)!fmyi3F$S!6$x)A=n<^=d7}$tNO&yW4z$mTmG)uvNReGuMP zog!me9~6~8O0k-{cY3Xyx|XiZT~g$W-!w-(MOR=Bp`D(MvbV$9@;sS7JIi+VirJW+ z0WUUD_b*=#S&SxP(FWe60k|j%^4>FVn@|*!*15YM3PdgoM{@n)xVbD0pM8`?Zc)TF&6X#Snawi@rU3lF?imcXMGG0Rd7;E|>Xn)A z38AI7wRLX^0?A&9mSE+m&M|t(SoFVGRzYRnH8{9;54l_eEPf2Od?d*w`CDe}O{W$r zV5)A^eBJ8P^o#5Clbqdw8eEH^BNz78MrH%%uL|q`TbWmhF>gr1s#%f?SvaEVIlRPy zH=H%1c-pZ>e8ZaSe(I@m7H;GhXz*qP-lYeUD}rLE8S9YBvPra1Q^X-$_x5;SVumVf z`tk=9^Us5vEMLS&tI-;!vB13WZ59-*wQn8|_y^Bo>F*dIKN&{HwFkPj(}QbxFn`#o zrGRLUk>n0G$2C?p2XwLYEj+e*(m$v2AagomSZ@+f_wY(L2Gl$&8;Gts{ql&&c{;I2 zy+Ts-hAD^$$0r1yOSece^ps+wv)c54hKZ_TM(#$QQlc|7Xa;!L$TNRL+PiB-#TiNV z5G{TlpQegl$plR&5&$9j`%h5b`@eq4s>+)aZA}Gyp);3?{VM!jds@~b&8UC)G$TvyeLuNFLYW!r zOh44dm9Fi;)Fxv)XmfJql$xnjnyIEgqVi#tadLP}RTmyhcg|t?yzZP!)RDX8c&AXV zXOJpb?KLsMEH$M!x^KoiJ>;apJfz*GBwoiHAzgUWqJ+FAk-jFuv9@j5J~WYTpGO;y z^KH6=N6awI;p>IoD|I)WBg5;nz?CmAJ>E_JHwsU=6ev0TQ}rRP(SCx9a?V?7cgzEX zJ=y64g*xanlph_*de((PrhEswox}R2#$fmC#`<;10A_o(jw=QnfeH*JoX}`?LEf3fD7%Mv8Y=DRaF^;@2d^Jw z17}6$(`~yCz!3feu`1J{#~K%!9nzrWCMf_FFr)jRfPxt8?xTGDfaZEvQsDNCU_n-t zQCl|QPT@+S$|5G#LWy^bp|`A5?m7oTqQGP8^2IL1jhqaH!SJ0Ahus)ugyH?C5A26}8C*1~3M@XIXd8%P09%C$2N zs3AM6?pXsU4*y?{a5HZEfOYm7_#{|>CLv=LJBFtB7W@HvFTu9#fWq%YA!E`MV_<5w z6GRH#`QBO$fTpvPdG$~kc+|oP01Z!J*s0BMC5YVvFMb5QAKPNXC`*&G0JP}!Zs`CW z;cj;;APE=^JP2<~%g`;MbmJxLJ@mbDQt3Ppy!C52nWdT|9>e{**MnkaFKOh|wTAP+ z178xl`nhDsGJH|Db;el{HJWiD3M9%$_s$R34O6s%-H86Q%BmxoAwPZL@sz5>5U&w|}_gJRen+`ppb9`b5RN6vJ7 z^Oi7?^1?6c(S&_5xaaB^Q>XH)S}!#ireE+=>7??f6@iX;a-|V{c;AXT&*Xy2+7cg# z7YZ(@NW%SvWdFjpP>J-%$sDWpSWifg070lH)e`2wG49XszW|wX&B8H8(|I%^0M|(f zik|W|gCNN5>AQ^}!c{SugypCG#bp|7*9g$15RUYl4dos$W=Q>{F_bt z#Q}-J76MZeoIvjB8LmQOo%#m)W$eTZpOyMoJF*j>8nXZ%9^nHSm^vB84lHuSavq+c zyIr5}ia(@$2jfO!kxe{b3p*x-V2b;ZM+Ku)i2Cp0~)iL+;OH^g;Z6#yZ zdEJycn5SY!{V^M+U>a}G44sa1k6rC4&e$77OEPDj=kgDJ)@N6$&^N6(^OvNc;nsY3 z?n?`K2JHlYnds7lIY(Ox>s99=aF)^{Z^V?wjrC8bX`hPomM6ykzNL2Czfs2jiOkng zc&-VntQaoDDQNWCq&7&5^cGmU=$J_o&Lr^V{nBB3#b0C7OVh6(xM+kcSUfXeY2b*{DuljZ;LbfCphSWCEIK@7*ti-h=A8y- za92&w5OCSq-}kiIQbSm9&#N=A;73d(_{%AGIM32fd?uFjwBEoExNdY!Z)}SXV|@cR zM4)dAuKU4*a_>4fjRd#8%xuS&aF^qkH^e)NKuxzH{AlP@@A8uHDt`A@9OsZ*p5aPl zy90N#Fw&8yo*Da#U-LKjadm`v)BJBGB}h%%`AV!cDqRoB5=$cs*2VK{;+&Za?(!jT zgz#$7$+F1rvqYkOOfID3#}%%A_92LSXG7#$o}+NfiWM%z6|!Gg!H7UviKT%2Y*sk? zK;DXdq!IKLc)fW^3{2ARsAlAU(&T67s$*?e*DUg7+t%c+i~sZt9sBd^sw^nBursI7 zugOo`%Vo_W{TfK);^EmG&P!yiwvvHNIXJESPi+g9V(ek~g2vibALE_8JhX)X#AIV7 zsl#$k*Q0IQ=VezJEiO1Uvk+6~Bqk}?)bShn^otF{C8?~D*0R?m!e_r=y3Xh{BB{(< z);yo*&Dp8YZr_-=U`A-=*j8mQtl!m8GES?krN`B4Au4`asX`|_2^!SwEs#3o_UCK1 zHV4*Uqi+k!G4ReFZ|-|`{Pu?l}I6;3$I z+W%bP1srTABQ#$&y)I@1g;!`KUZGzgA^=GcBTT8uQ?=A5iDYpP>B!!mx8$& zA9hB)ehEED_VEs}Ll5E-PBKbC*L4PDoXK5a2EQn(eU?CwE$}?v;`=tCgXc@VOoTz8 z$ij;O7k}_j@Yfn*F{_9xUy743Wm%o6X9yVDeyO!UP%Wf4=qHo@5Km; zMFr>}!3^OM6ki4cl!GWV0jwo40qQit>P2_zG&u5LilF3B832Du>qrk6jK+!!Es2qn zFW>R_--o$g-9CWq#bCuNPfT*%w)ut1Scx%IvJXRM@{z3baA6y4t|DodTkA4zk-#lU1Y(WSro zYH94g{0(#E#aGHW=#A?J%GaQURE@tn4I*@f6G_W7+u0JwByKgob3u!vE#V2b2V6TT zxQ=~kOb)mbZo3M?S^F2c@6lF8{@R!7^VI*V7yO;WT29rIg#~wkq|&&wAnS&t%=n-W z{$QlRM78AIfODL*$+)y{m+a73SH5CR*`X1N2n;4k1aN7&2$2G@2OjTz#J%9~78OQI4jBIYGX|4B#87zsCYN%tVTO0H@=Tzt zW;UTQVe-e0>pPK>6;2%W5Y3j7cel!OEOlhi)PV-+DQHL8=3&0Ma;n~Xlks{DiYSz0 zFi^~B;+mE^(pA0J`t@b~c^v8^i1g~n2A`F&k`4s-pkWJj{*_b$8)8twU*S{n@dn?3nXOyiW0-N-kYZHyjjiz(Mf|PBq-eJ+>tQtRN0DasPcB@O^&`iDnszMh{7z z-cSUo%^%GR0l&7ZK7n~%#qfIp(-ZmhdCCd7)Zx4DedgU zQ6Xe+cP2`FaTyrAFCBh?sSw!l9$mov5|Ll?n~oBzYIx8Hxw1<`A3bi4R>*Fv(*p6` zB-L8froEJ7gQ_EaY1+bDRG`gr zV}c^?$>F(g4ISNkzIyyRbKl+J$7^z@4(4qBVsrU4SYgm@Bj?A^rG-AmxCf`N-A!G4 zZ;E~xW=DPeBzuiSxBUh|(Sd;O@{35B>})KZw$wKWNlBb*sqCz1f_P+;iVJC?5@X}$ zvIIOGS)1XO0Pgrl?056Ec>t6*P`7B-nXdd{>;sqVol2=xE@Vk-h#z#7_;kk+>y^;w zK{~GJ_`L*lVT^isx{WmTl^QEu@V9Jc7)#X~9Qx~n__+YP{5h{T$Nx5W=qbu%EcL3d z++XPWW`SPv-wVWt*8YMjU&Kj`J?eb-i5j!QIGE5RIfe5nrO+IpoL}WQR9)Bg1T1{sDmB<~)UQ zidn+O=^YTr07)uI*6ZHNO75v@*Q(-9wJ8|yFySnRJ0xqKSv)s@yeoQvU(yok=g`Z= zj^wB=`IFy(Uab*5=@q|f{ifnC{au!5vE+Vr+bMMxB+JzDC;oFmwv@-)zfZlCOU;48 z2tAv`m(Ij1+L4A030@mCScij4q(7`kmT#^DlO==zZ&*@>dS1N^%tyv;ifwD_Sv4@5 zoKHDWjuK^08=&DY{qCXeYy#MsbNIIZnW%`tBTgIla)6|OsWM&J0pPt-?v05 zbfCl^x|R2i$8nkNxk%nzx3-!n{-Ni=8^^c{Y<1*F2=s!$<|CS0E6PubN5|#X4+GfE zbYZujRJX+PvgD%Tn&Gog_-a!R=-jXsbAN)>ZdwzGW>qYC977pJ_n1U=wFBy_1D6JI zmNa@WDm-Sin(`7arc(U-Q72_+`pYpc!VHvXzAl=S`K{_<1i?Aum4NoYxY4eK+_oMH^@tW0O!C6dA8 zR#RHuoZz?K)1Ow6WE#=o-GID8T8e@j!@W@cJs|rsuuPXxpO|#G*!DlpJ#!4VqOGD| zm6t}>RecHg*Td8YOx+$YQa=8RK(p5BuXZ${v8~0rmS;b_qJ4NJlrZU< zRr3ze(X(}GL4EZ)gNy2)7?VDbYT19T`=#rmc}aH0GdvUEv!G;D5jZ$`%Zdf>OJ|Q^ z^prscN@;A1jD&bot)RKGNl~VtjXv*@tUpn;nj|)se91e%`uSn080y)TQ!M zPlV@-=)zxQP&{0`h#!}C?RJOw>}*x}>)IzV$Lb-)?9s1NhZ(p$`jzr9rgJ=hMh}zJu%Rqi5F>7=Oxz>f8U-8m= zCwObJ=*ivw6VitoF1a5KMdNA%sAT>v3%CqQBoX%)Rcjm~_w#&c9x=@|6M-1XZl?SU z+8zc?KEE_zMHK!@McO?E)chH5k|aOo7kQ8iGVS}$TmRdPk9fR?)IK2sDUpjHQj6+O zFiGH!JPRPjH1v1%kSvgWj681lgDjXYMNd{tnRYL|#_&9eX30>6;G>K-p3mF)sF!e) zm@-@xp%&8gOl;r+955BCmO{+_SsJs&$5kj6|Iq0QhoU59xg%NCfh0Doa!3c*&4bj> z3LkAn3{@`)Sr*MV?!5HtDR-Hl!6*?}5Gm~&R(SgmN41&6fZYKJ{X-?!!>mmacz6t) z9ASc64cW9|TgZQFA;7Drvh;Isgn!f=;^I!i^NuM@yjwD1I6y++lRyyxN(aU6 z$K}n0ZQ_P3f6q^lc?T7Mj=aI8t&;nX| z89&Y$ld;w)a-#CahC3m(`1rnz{lFqKOjS*#um!|e?=`3JF2r5vhX_O6F!;uvN<8pC zW*gjI9Wl`K0hc#Je-z>b@U*c!9JAXu!PsDf7lj~;q056*XO9k>?cCgxWX+%Dym>A3 zW|z%gQ~b4cAHnvR<~IVk5u@QXjG~6JbRr2-#W!esrEe6!C!+#;UkrHx2fS$~f0r~oA^B%~du1Eh{9aQgZW{>uD{ae+7IZqR>kzA{l8&Tv2R%76uX7W9&{bT~3-$?QVT{Dr{|ScqhDxKgE;CM^ z#^%Y~tcvlZ_7Yy9w(UO4)<-i=1CDJIMLTPCFEX_~U!{U8(S%j0Z@+~~WGQEe2Wp%1 zQppahpYO+RQW_}jCdiHE_Uni@6U3GuRi9gT=P3?ldP-?WE0OJ0Pm!X*yTVvSOJxt? z+rEIeYmp#Jt&xU1=N*0ph_Ad8P;NH)v$AT)ucfz77OE)>v$9)txuu6(Ytrl*E;!9z z{2XQwSTd8^8>9F<=C+`GQ!{YzpGemPWOR$ZM7(@P1n`^XDr3oGERZeKT#vwbC9A)T zXCOvXp&ZOZL!(|Zs?csnM`(U26S7bVuM|O}krxKi;}$|Aj>YZqrz1D#PdbGhl||)y(x&-fyxR z0a(scdH;vBw~C6Ri?)Rmg3~x8xVyV+Uk-Q5zLV2!&5cPDsocMtCF4uRYz`OdxP z;eY$bm{q%KR6q2nuHI|yx#pS$ieVPfiJ)XH)NU~2Zn0WU3Q(lXT?gu~_MO>%<`ajq zv_nD0^`+l!Sdzo!NgXK37O_1yH4ZmXZ%j(9$OIQNQxVAt2TR_RrQHR!3C7`LOl<}e@lf88l4RIUBFDtB`E zC+TXfAvE8<>&`4wxw=He_V=l|P)xtO`CLCfhN#x=EyLL(EpTx-9?y*!UV4g!4zhr< z9e6XKpq9;=-|PDFGu7cXRyMqtIy(tHS1n%g-tNk-fC;@ulxBZM zyk{~=ycDxu22M>|x_DYS;M*V_IUc(Bthmys<%9m5ox^W}paXA|^K-Qdse&A4Jt+Hk zjhT%oGnNRcKYQB-J%A~3Htw44ehl~u$!M8IcbS>V?j%O;z;pt80a~yfl&_Ce(bItB zZOoJwzPSMP!thW=-PEH%JtnS$BCXeL@XfpFE1|hFY1Q}pfk5u0yTIzCoe%U4$Z@j* zntfc-U^_Z6OC>H%wy2!fV~vbJp=|n8W-zJIS^W!$7C*Z4TNOnn`L`;kyNN-KywjA7 z4#{EP%0P~5)om4(Ipl)=sQNUWe~id00p+82hRK;@QuB9py8hz^m#UjupJsvXRT8*Q_S-g|j}u9&G!1P3JONr>ZldY|B4_ zKUcRB$`>IZN<%k?qfs+x?C3QD>@-*sk=#{nvp2u`JohV=k>{!+F0I(Jq(jONO3E)d z?l(O7BPLq4Mlq{rFi*UOjX9bTZ^b42{ypaSIc>)JCXEO;BW!w3-Q9C*DZV7N#eEb! zwxRp#Oi;Gx_;LQlfKMJq5Wc-Rv1%Z5!{I8G%W6-XN&_hhrudLe(R9RgVE1~)l`kP8 z`%U&G{|mHgC;rpt0A$r#al8-H)sG4isNVJ%b&dX~64`pU6FaIn{6B{av-=e#nx;Dy zmkCg*zV03O+>G;=cTgWA$>1jE)P2O1e2cOV#p@Iv8NXi(@ zff!xZL-9*RnCcE~?Ye^l$5|JL8g(RPfBSCUI^S^U|1+~8)CyaQq3b=7`1pB8dhi`Z zU;_vdFpS^UNwgE|HLpV|*16j~B~hCbiQ}w3wb=1pP4gZN-1hhmXO34lxL|@nMu^m= zM?<4)NrY!lxE+UJwrmqT6w>xX?E*QbP$wv~=VCJz=P%>p&t}Dg)yNtZ2xrXYdk)!o ze(4rMF2+;r=I!$-@Iu`dg0%*9w!&h9yW%sNb$dY4+SxEV_IX1F*hW^p-Op{RL;I_! zbE7!6_;9`#Mrx*(fV!awY;8DZ^~FIUJ$e6pXEmccBN;2W zANA0PbZ^caKh;CwnMIH29cjB8PntAhHsUb$QX%j~=h9K8w#jh&qSSMEKQ9sMmv zHCMo}FC<%NR?!G>$`T%D9rO%w%F4|^_}ga1?#VhCfql>ixXBBkzsa5IN83_>ts+;D z!)VE5LHk@7$zp+oUAzn^`5%-m1O7MC44}std&U(0xdx6@1!efvtIbABIpTi1<^b0; zME!7oy;WLIznnDU;3DmsG@nGi_XA8lI7WqjV1ChsXdu0w7a2PXMnFHNEohe6R^ z^wrQt_iIL>Ez0P62%L=qpeo>x%V}B1{%IKe^D9kHMUAk4hMdwfX5+gAQDBS^G@%i; zPmsw4YFw9u=HC-Y7OJtzI5)c&9K6@h{WTODl(s*u9*cAjB@@u01nY-C{9$r}8 zp^8-Kb86qxkitHZ>@T3L8gU0}%iHP7@yHM>e22&qm+{A;f3dVWR8W!ePt$&ynVrtw zOJe8+*agcHftzB%EjB{@Ox#053X9m@C3&C7GCo*$mef3IA71cgSTpO3xKzy@98OG{ zQ;F8Fxt{ZUkuK>5UQwVuQji_X)$ejn)vk$-c*W}^fuv*$7c*aXrMZAq`M!-)YCKor z8O}lv_*94PimvBG-seQQZxDiN3uNn5srxvhh^b*w!vzC-M^fHioZ4=I?cHp8Qjk>h zN$Fh7Ge#*kf7|N2H@CcT+(?Df!HzU<7=R$ihM;`vL&2^`QPFr#f1v0uEf~H?d*toq z9?)?Q*+QsPC33tjAw{#msFQEX?i16FwzhM5nzN|0AtxPSmzT7i5Xz6{7~ay$MLTOz zs>Kf$>wRYwfkJO$;rb?*xeC&dJ&z`O{C_S)hp_)~#dl9dN=8Apm>E(Vx&(wRyXg4g z9y2%CtlO511BmA-lT-Z2{@P8L_cNfqnHF0OW|rS%1Re#t&3-qo6u+~>`LdSyF^mIp z*k>t@N-~}LXTEQSbTZ(7j-XE+Fd?S_aJ_{0l$pI_7k=`|VB$GhOW| z`KN_yd6-9fW?WhIgnD^=maXFzSU3?!E_gDd1;GmX2{_`I;m3#wpBlxTz@le|r#dLs z(amrhFHbddbd(p#^)5bkTl>_S$-C;v+FhB$-WOn#hsLGB6$DIoW+>JFDqH^LOC`~J zy{~PE$N_B~!#_^spUO`f@lylPZEeo*wviRR1ciD9zYN0`@Ti|i)`hgRdsDG_Y^-2n zKDlM9q|Z2fLUYpK9KUnhwz22DEq2e{I6G?m@DXb4i`XW(`2@Z_4^7-hbIBoUmOHURzZ8b6$tM8L7J*YBUDXGp|+I={&##ZFMvr^p%qMg97j&>x4pN zW5|vLGU)%>Kd~{V4(<3*)(hj|#J{zwr<8dIjn=B12HGsZK)>RYz{ zWJ&;r4|~h^9Ivtspt#+AJ=)&hhsIvn$QkkB9sXZne>gRXwxMKi&K!+B)sB#*lCK;a?8-rtpX>_ZrqTP>YV@Td-Ie_KT~3#JQqz!V*Li?d4YN@ zl@K|;F!v{Y4ZedqTk-?tboKhXvzo)xZ^_@rA14$aGEL6|B@czk_K47&L0}9&5+z;> z)9eT8j>9z5 zdBwu(%ffdRRN`FM3SE=+O%u}wrk4yK4f{K? zW$nEu{%B5&ttqX2!J}p@j!bY$DK{C^xZsz zPP5r4Raa8ARY|pb7HbUYvY(@0xho@3)QN&HVU3`UjG-0=;45P=ivxDS9q!Daec}12TGOOzk6f@p__A-tlsWHa0HQ}!r#nFOKBkugi54_2x!R|Egk1gM4 zQVk@m*N^_fNmtZQpL|aZrte^MzNHNLI5NdQ0z={%TXV?X8 z*n2+yn8B*l-%*{98ADp6LWRm^VE(EAo)))meq}e1#2Z2E?&G%;dWjx@UmZWpP)GBxOz;CYx~m{1mbGby9C!Fl|T zmx?+)6-#2b4$_L`S`;_E3ICgZ?n~W!Mu-dvBdlP$-bk&Wl+_b(uYzZKxTl_Y*x&6= zJ8bF}Sh*)@{_C}QD^VpJC&qL_ydf*fioX?R8Vf$SLl*{DRuOMMmkXnQe!`O~{aTS@ z-?4E*1W2CL$nmi~!rO+CU%7d=-R7grhi%)csgGPUAFsV_vI}ywj0uPdRAwt(7mfRf z@z{1$g7fPH$FPz#Za~6xCVz!QI1~#=qVpM3-UziHf8masCN1Q3=|!Y9e`I&2Xa50C zJoRM8cD1b-;FrI)qp((gV)^WtsB;_E z;@vIJbebRMwwAcUD37~;*;%Cn!Y;k(o(RDWd%flOu*{*_!EM96cvhIxWBGk+cbZZ~ ztBDM;(4nDm+cP&`Zc6;VGI&jk`8y+fS%DSB734UjMxAGCO=`vQ|3Q_qtXN(>)(aW^ zbTo1u@v#~A%9*qNYPGnml~~$cM=8#1b#v~A)*seVF{f#zPlq_7Ezq%*!ui%HZ-*f} z?ueLMI4sL-KU;oWfWW-Nn`ybSPd6m}R z&VuGuM6@RmE%{YNRVNeM>Nb7@@_Y&h7#4#F>Rg+!?7zn0R_G$^YFblkS�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 z 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ⅈX^nIu=HvHng%9n!P{H&%u~Q?NUf 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 z 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 GET /info/CFPropertyList -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 7edfb7e0938d0c35 -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/CFPropertyList/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/CFPropertyList/GET/response deleted file mode 100644 index 1f532611827be179480e0a4c12032d2d77537707..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2410 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 GET /info/ParseTree -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 7edfb7e0938d0c35 -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/ParseTree/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/ParseTree/GET/response deleted file mode 100644 index f1cf0eab77bfce8b6ee95c9f6441f2be208f94b9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3083 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 GET /info/RedCloth -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/install options/retry,path,disable_shared_gems,spec_run,plugins,trampoline_disable d59b382d069fc94f -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/RedCloth/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/RedCloth/GET/response deleted file mode 100644 index 3d3c9e61a2abd4da4126851289d9d5e9bf433781..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3967 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 diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/RubyInline/GET/request b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/RubyInline/GET/request deleted file mode 100644 index fc27c35924..0000000000 --- a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/RubyInline/GET/request +++ /dev/null @@ -1,7 +0,0 @@ -> GET /info/RubyInline -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 7edfb7e0938d0c35 -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/RubyInline/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/RubyInline/GET/response deleted file mode 100644 index e2f73b259065b624597411b63a1f45c29c75eaa8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2680 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 diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/SexpProcessor/GET/request b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/SexpProcessor/GET/request deleted file mode 100644 index 37e80d5018..0000000000 --- a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/SexpProcessor/GET/request +++ /dev/null @@ -1,7 +0,0 @@ -> GET /info/SexpProcessor -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 7edfb7e0938d0c35 -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/SexpProcessor/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/SexpProcessor/GET/response deleted file mode 100644 index 858624ee546bdf5d688902cc9aab864145a5eeac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1140 zcmZuwO^6&t7#&#;+IUn!3|Pq}3R6A(J3ZaQAaj`A3~`Li4pA`@s;j^0DYpMoRXy3s zAqgQlED>_@rgselPoBIei1DHqBN)AS5-*BG$Zd(=%x1?8xB>nZIRyL2j94z#SaC<_&l?fz(R zW<1;)zKykArD!Ef4SZRRh}|W5nLsbjO1^{jqb&bJ6s0P}bh_4{fY(y!1+B_V@CB7n zl~U8P$QBVvV9M%DQzbb$sUVx4>=MPLsE%%tnbwtxTCEinm?^7M6BKspMFvOCt{bO# ze`Tg+nP$K$p-f)pT_W=IY0Xcft}#-{=1enraCV8fI((?*F@@4h3x3dpeiZ1{6K%?+ zwW1e6Y3i6PXP3%?U0msD$vR%7kSm(hd8Jxi12jt`aw73K_u4k=Sa#sp%$jzbAP8d? zaKFv%c6h?b7{cKw#8f~Mkx^MRi4%|!lNbOyAeI}sVdRBmYcw%9<1<*zN|sqfa<)rZ z3ca?~Bvl>bNY;~rf+J>u8q!Om!U0RTP%o7WBx(CTgP65xY=S#oY0sN`anqNWVJtB#ay< za)Xs8bHNY+-^-lILa3R6j^KtDT1%eg5LbcU0jMa;#2iqg0yzh~FQ)duQhYkL1Is`m2;4uo(BSbP znwvQ2Y(clT-!fM8h%v_0Y+-85Ql^IS+Rf)0H}-ycud#9L`@V7AdZF?4S6}?I@$q+_ z{nA4^{^|OS!HYM4|K@J1bNBh+svLYcCIvy}x(v_O1Irzy9h+pIyDT|4gIt=+Q>w{0IL&*l9Ex F#(%V5g*X5J diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/ZenTest/GET/request b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/ZenTest/GET/request deleted file mode 100644 index 3ea541b077..0000000000 --- a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/ZenTest/GET/request +++ /dev/null @@ -1,7 +0,0 @@ -> GET /info/ZenTest -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 7edfb7e0938d0c35 -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/ZenTest/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/ZenTest/GET/response deleted file mode 100644 index eb7c8c84ad01e428737f900a9f8b3972e8c8e3aa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3606 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 diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/abstract/GET/request b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/abstract/GET/request deleted file mode 100644 index 2ca8ecefe5..0000000000 --- a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/abstract/GET/request +++ /dev/null @@ -1,7 +0,0 @@ -> GET /info/abstract -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 7edfb7e0938d0c35 -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/abstract/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/abstract/GET/response deleted file mode 100644 index 5146d1d3b2711eb8f78732e2ca58a33f495327fe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1120 zcmZuw&x;&I7#)a0Y!mU6i$aP8jfbh8>h788o*ss17Us577hI|#5mT-W*imCM8aZ>CXV-BF(8ka^ zU@Y}rUh=z@;&)bjI=V>~Ih2N`O<9}H&;iTym~5rci~5P@MN#T|Ec6Ggn|MJlP5P;y z2o`KP1xGlvLS_=um>g89P5h7?aE$@*Lc)SLh+?l#b`Opm!Nn9-Ug@fcNy+Dw=P>HC zHmREgE!j8)N+6~}4*6YKqrnK-C#qq0F~P*hLQOW7XmOTnyVZzyvf3XaZ+w^$c~n%Nkq2mQ%wf3@5jMf zlbPg*fbV6-wUTD)pdz>tF}9quG;tO9V}P3SLe2m=8qhOHX@aR;ONvj&^L<8l4!5zq z+Kb8F{?X}zPNhXweOxak(fGQ&?jQ(4G&6L=C}h1s`__cDZ;hFQL=bp;eWCF)BicJ? zbg`h5$-B;KJYpPTYIZR-Zl!a_x%~P0);pj5_Cf31OOGC1{FGdH`N?;aZ(3hGyyU2f z^Z4=HKY8=y?`!AZ*c$(S_3D?mfBN|HkFWi3?Rs+$UU~hO_TJkUKm7H{Tla5%ee&Sd guP*)hZT55V{l9;F(rUGyK0Vih3;+D}KK?uZ0drn-zyJUM diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/actioncable/GET/request b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/actioncable/GET/request deleted file mode 100644 index d567e07c07..0000000000 --- a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/actioncable/GET/request +++ /dev/null @@ -1,7 +0,0 @@ -> GET /info/actioncable -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 7edfb7e0938d0c35 -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/actioncable/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/actioncable/GET/response deleted file mode 100644 index 939b4cc370971f23491dbbd8af3a284ca8a3a0c1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2216 zcmZuwYg7|w8qSv0#aNE0T`v)3sscrskja&VBA^0-LMp@nQIW~yOEQv7;>-kz2-Mnb zcNL{-TailvTfA`dE&{><$uzogHkNR+vP(6*C0cx?b zq=jM>NK{~WkTNnfBs2o%k{AZH(iRpFBUuH4`66bE4)|$J79s)W-$eOi1Z80;Qm-H5 zzyQKVldK)JT1+HiS0Fl|$89DSWoQENV1P;Q;fpW?O60aygnJ6gXX!Y1uBGks98v(PeteAS$EH3lYkYKr0Q829qH|Od${`U?e15#U*gU2uA&-EhYtG#*hF{TrsxL7Mj z^_U#86G&i0KGI^NSkep+RlpYrBqF&8#%wr*H(Q~KS`*BK2Kfc)48V&p(iSuD!(fFL zClUY!QG(Y+;-rZ|Bw{}1BjsZP_?0NcV$m2$6QB&N5gsrmmU3}|0PxgkoH77-@mf0z z7_JUyAxbb!LQ#DF5JezY2!#rfbX1f?5{Dz;BTK|-ie!vjD2W0Qii9ILBMy%~k^}&( zC~hJX0p!R4IuYnlExh_yl0q*rp-_$nM+U<5XiR}D3st@TL5(B}Nsa6`A_)y&Bqo-N zL^4byk@Cd?nU7rTrH&GKse=Su$O8@ze6>%|??!k9L!(W0G%9KZcN8AZh=eB<0#Ax> zp$%NF>vl)Z!_{xaavUy4-=bV(Z>RJ{KRK*?y!ai@{|H-$w=dgOx@-GHUvg#sgYqF0 z?;EmmyndiL_uvi3EKx^=wYRsoW}(L#S=y7UcaP-xpRKkO+FidcnO1fpde@bcAzt3C zzC$-Rmd+1y?=x$bKdw3acxA~@#lwxiY`$~pr|0{#JNsPcv_C&SJor3Awyy2WVA8

      t=FAO4C+FOLKW}g6(u4FYOJ8bg(zfUQ!$ax@O<7E={=+U3enPfxkhwP)zJX#d;IQ_C`5rfw_0I&_3`4Crdqv`Yvy~$1h#=B_03mc6Vv(=0#O)=(={XDEmxC`oiv&>xzP_Q-=EAbFG`a(}$Cl zzNfq=ORX{_l=fB_x{6OVb0nuem2UeX=TJ@QQ=9Q@*3e zi%M9Mv&Vk)N6Xw0dZG9=v*29B;d=ac#C?o`&GyAr?MvH zzs|M{KdhpNGpfF&o60mBbYoy!vd3ymmMRlDUeYCbRFPj&?s6^V(eK>q^*wuOA2O3Mhv1q~S#^RQM z-IF6r77sQwyQS>Ct665N-BKO1V2PX)`*BRxmP<8{obODGKQg|u;r70Sqq0Z;92l>0 z;$EH`wiPk1zCJs3fhuekGA`4z(Qwl-Bl5-n?3+mLZ=3JArVq9xHR+1_{Ni^ehy!`X zPLXnQ+^mSOsaO>+m2*VClv)nQ)YjZ^0!}Q=T7x|&M=PXpWnHK+)O|>_HQWsU$Mxtt>-O%m794tHJ2XdE*OtV+cX+8;-BI|} z@`@eJ8fi?o_SlZkj+fc$q@k^kYo{-j8T$j|U9|Ap50_YH!4hxcLYt;KVragj%R2sn z8P%<=u4}hB-aWtMg!+7Ok(+z`e9z2e$Nq6gqa9X-xPO)G6rq?m;G2^-_2a^A%HrGU qQ&vrSl6rihNBp-jDnaYw GET /info/actionmailer -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 7edfb7e0938d0c35 -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/actionmailer/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/actionmailer/GET/response deleted file mode 100644 index ed4bef1c942040e28dba8f063b12701c495d5140..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15981 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 diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/actionpack/GET/request b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/actionpack/GET/request deleted file mode 100644 index e9b8ff77df..0000000000 --- a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/actionpack/GET/request +++ /dev/null @@ -1,7 +0,0 @@ -> GET /info/actionpack -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 7edfb7e0938d0c35 -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/actionpack/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/actionpack/GET/response deleted file mode 100644 index 0fbcd706e64af25ffdc463a10f64db7bf5dc1fe3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17131 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 diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/actionview/GET/request b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/actionview/GET/request deleted file mode 100644 index a4051b8722..0000000000 --- a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/actionview/GET/request +++ /dev/null @@ -1,7 +0,0 @@ -> GET /info/actionview -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 7edfb7e0938d0c35 -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/actionview/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/actionview/GET/response deleted file mode 100644 index ac472e23da5ee19f5fbfba283bf6a1ffc5c7f161..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5643 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 diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/actionwebservice/GET/request b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/actionwebservice/GET/request deleted file mode 100644 index 31145bfe62..0000000000 --- a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/actionwebservice/GET/request +++ /dev/null @@ -1,7 +0,0 @@ -> GET /info/actionwebservice -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 7edfb7e0938d0c35 -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/actionwebservice/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/actionwebservice/GET/response deleted file mode 100644 index e524ff06f4193daa5e87f3fec04e1527795f2662..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2437 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 diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/activejob/GET/request b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/activejob/GET/request deleted file mode 100644 index 1c54ffe4e9..0000000000 --- a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/activejob/GET/request +++ /dev/null @@ -1,7 +0,0 @@ -> GET /info/activejob -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 7edfb7e0938d0c35 -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/activejob/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/activejob/GET/response deleted file mode 100644 index 0323863eb302de4279e5bfa1f79c36a529e39280..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3571 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 N1<-TjG( GET /info/activemodel-globalid -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 7edfb7e0938d0c35 -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/activemodel-globalid/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/activemodel-globalid/GET/response deleted file mode 100644 index 241e6c48915746f77274d8ceeadee1ccce518b05..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1260 zcmZuwU1%It6pjr-7*zauP_g2rJ|xAxv-7imGfUJ|c9XPjBS|Q}$(=iAX0MsQ%)OIj z`y>^uC}=>?5=0?_)hAKVRK!BW7ok?9D82;$5TS_mL5ko*J-cbv2z}a}d(Qd3?|$F8 zGmDE)lug|vmSK>&V;WBr1&N}nmw`(Ztf_JqF_AP0@3LHink-a68`>HTaux$kGbPeQ zx@2Lh)0&%~ot{08wKXYemZu7Mzv>dRN#fLpNiRzI64v*#{0EVwG7&*A)F6Quxllct zrIFx0m-rB{B2rZ5oQz9|g7GGiJQvyiBhpnWlWw^@7zaIMMW}6@o)r#E=W)6M+EVC7m=W5vxu*EXSoW>%^$IM%}HL zWV*AcamKqa$Tv?Tm&9z1vJfU~Mu}vFhcOP*g@hw!f*Qh;BEzM~VY%pEOCX71HR`_4 zJX&)sgI2)c)bY)L8r-Ya8+Nts+jf7XNR)_iQ4QTNYIVoJvw|UgoS}O@w*h7&KB%$i!0wXlz9B|WemV|%{ z@AVW&&1VWp+POea8e}Tl^Tcs2%e89*PgVp&1bkyFEKh{&YUqfI7TQjqr=RfPkt_jZ zltp3%P@{x=1$^q^*6&)1S(=t@(DwWkmIr4pnVDVO`=DK+P?d$>eM@qDk!HoQ?YfC> z=`{@2u9QwJ7^M>}Lqj15JhgkF*7YDtZ45f<(S?P_wE;b1%;QQ;<4Wmi9%|YHFO7}d zy8iu>BcpFz>}UtfTb}>vv$JPL8;`yE&LemHrHhTtcPB27ojSeR-hS@b)|H?CdGq|0 zyOU?Oi_NW_otMu(efryA=bMACzqNM%*S}r*_3Br1I~#wz|I0GG(0;giVCMYM+^f>y9fVk{{m~~w%`B& diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/activemodel/GET/request b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/activemodel/GET/request deleted file mode 100644 index 19f106627d..0000000000 --- a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/activemodel/GET/request +++ /dev/null @@ -1,7 +0,0 @@ -> GET /info/activemodel -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 7edfb7e0938d0c35 -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/activemodel/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/activemodel/GET/response deleted file mode 100644 index fac578f55e6ed5fb21dc38cf71f943a645472cfc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12758 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 GET /info/activerecord-deprecated_finders -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 7edfb7e0938d0c35 -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/activerecord-deprecated_finders/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/activerecord-deprecated_finders/GET/response deleted file mode 100644 index a9185731b9922e3b6244dfa760481b953cf5cd0b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1397 zcmZuwe{2**7`i* zvu&?pw2JZvR0TCcs6t3g1J++jsn&r0VIv4J1TYnSIl;)=mg-I~K*LP*s5x0XZv$Ym$bAvaEh9%YP82MNB=N zp3y)savh!KdD}8{l;<66TMp$d)5xnJh11YAC{G*&mJn>DmqY+Tj&9$21TvJ`M6IeS zLSaFJt|nl@I%(d(x6IBorrG_8pjnn?U})<^KvpgS^qls8&9|e@U}z3(g%mo|vjxQB z@J%f@C#XqjH%3xY=IumDIw zAo^8VQROhGZ%l9qq6{wX%CQU;M!JFNJ za-ET+LP}5yCPTar`I3Af9fEu)>|?-^h-EB>P*BE&5!a-8j)hJXL{aw3es<x0YM5Wf+Vu9tOf%98IcAyHJVX@ zKN#j9LYO7Rfu@F8c$0aG373MDk<>Xl^CSdn?VFy2Ri97wD@9LQb;#n(-b*WVOr2yn z<_LpSe8B=wVTr}SXEC;UXy~nln-T1^;uN1`shzfzJsrvCSNOW-T2?NesbEDcar1}I z=#;5a*nhzihrKQ-5cd0nl3xxAN=RYT-j=xNZHbB;6T*ONr!N$}u?TM+TeOkq z?)8&%?mV}+yY$2F#!Hu9B$I!?wc*V#{<%Imd3NZtGoSY@dg8Cq(7j6+o|wlSZc6NY zZ}|84yNAEL^3ZU}(XwlE2JiZ4Rpnz9$KNjz4%MH9_bjje=F=9m)aAW&<)cgIuUv5U zZy)ho3o|kQpNr12Nm1;hx<-c4)>q_X}hv= z?a2$hJD-`gZF6tK{_du$M>>DT^7bpKHIx$VC2M8M?1eS^UOOkYJR;b-TT7%yW4)g@A%vw7rwLi zwKao%2Trem-BTl_5kce3U%eDeI({$CbN9DB~=@k~vXde(Ff?%Z*Q$HV;# D#McD~ diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/activerecord/GET/request b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/activerecord/GET/request deleted file mode 100644 index 3fd7ebd962..0000000000 --- a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/activerecord/GET/request +++ /dev/null @@ -1,7 +0,0 @@ -> GET /info/activerecord -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 7edfb7e0938d0c35 -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/activerecord/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/activerecord/GET/response deleted file mode 100644 index 0fff738696effaa91f05df480340ccb9631e6cae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16488 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 GF#kUyH$)Zy diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/activeresource/GET/request b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/activeresource/GET/request deleted file mode 100644 index a363f2fbfa..0000000000 --- a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/activeresource/GET/request +++ /dev/null @@ -1,7 +0,0 @@ -> GET /info/activeresource -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 7edfb7e0938d0c35 -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/activeresource/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/activeresource/GET/response deleted file mode 100644 index 632d9238e892899c6426974a649cfb6eb52b04ee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8619 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 GET /info/activesupport -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 7edfb7e0938d0c35 -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/activesupport/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/activesupport/GET/response deleted file mode 100644 index 94d631beef2f4e5e5c90690b8ed45908368502cb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14269 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 diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/adamantium/GET/request b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/adamantium/GET/request deleted file mode 100644 index acb93b6001..0000000000 --- a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/adamantium/GET/request +++ /dev/null @@ -1,7 +0,0 @@ -> GET /info/adamantium -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 53c83f3e5793993c -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/adamantium/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/adamantium/GET/response deleted file mode 100644 index 3431da60cc901affda4903947190f43e1c0e0f4a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1717 zcmZuwYfuwc7|jUUHmDtnwptn8VjWbn$>y<1Sb`2^0z^TOM8($1+-z=^Ey?b>yMY9J zR4o>?NGsAoEaGEok)pMNj(`f)mOiX#b)5QsR7D&Iwc;?E(ZiiVKVf~8o>itE(W8sfG9yZ)+f7hv(k^dMc{=v zFUTyd&+M2f^_Y$GY8v z8YD>jL{<*q0`Fnz04_p-7iFC1JOK)GK{xPuWLy$yEK-6VcVrAE(IP86e}rYpvLI0! z%>WcsGr-5Fp@cf+fCoM|JJ{$(_m|WR&odqf1Xfbhyf+48z0ChLzlb`B!H6IS$UuBD z+mARf{7lPJ3P}bsOF!vBesIXE7uqB}?vwCbD9N}^4ZI+a=Rod&9*yX81{mm-aF@?3 zNSYWWlmSCw5d<(msEsDIgwbRsq25gbvlHq_k}yGFpmh;S4?u8e6|9?uE(%NGITfZe zVJSdF0nnN-LQjz-r6;h&6o--qbQT=gmB@Q2%nSTDU|_6~P+@}4iB>YWDag?XlS3Mq zJXSyp7U3dazj79lK)uOngk}@&cAKMd19YPN=%PuSHoDACGhqPcXwX06<7C#0LPw|x zg47cvI`aWU?-h_yP7kWstg%)X166dE$a`U|7IioQoeep}l8~7WSdWB}2DR2~RBH+J zB`JeJKPb`zIY!Q+Fk^JI63{e6Nf80ZKonkQK!%di1!P2$AhO64GZrU2^CX(m=_rGC zz>^#npg5!Vk^@AJm9mt`5en0jI-;Mae~ANu&xTOIfrrh3NTUSB9O%NGD78;4MNdbo zGZ^rM^f*)=IHRy6o8#FJp2f;Yl>zM@NwYNq8c(UeiYI_$o2Qywo~Tk=o)v5oVDRXk0N7G$j!3^87Z|{fGHq2YyyC*buT1{cb{E%wDdA7MdeZxvVZHaR4QU8$2k}X|@ z*LGPJJ8YZZk4f5^J>pVD#&~~cyt1jZaK7W#*uY2oTKC7@oY>J+b+?0Rud1*f5AJIj znVeBS%=h!!VxI+;4ez23?CCdF)QJ9C6Sp)T!st!enS zAH%k9JsEmqtYXL1{V&PfA%6OS$t$AT6#8xZ*fV#m)0Yp?rp~)O!`;GE(xV&RZD}3( z$L@#8`LmlR-kbE%-nwgVlJ`}Xf(wf}=J(E7kq~}+!LA2E>Y*VcmhbQ0G-XZH&QO0~ z>fy{~z4!Jyo0k=Kb%!l%ot~C3#^&jgf5{C?9GW}wR7As(%X1%EKWkmXHWh@QRUbZm zBjaXGwq>QW`_CTxk{+=y|GK6xhbq{9x8O?J%y}2vU{&pS=kSgOd)w?A2fiIKr}$9$ d2HU}PM?Y6I_k<`EeSJZSnu9Ye^+Od3<-dfBs;2+| diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/addressable/GET/request b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/addressable/GET/request deleted file mode 100644 index 22f2e2db6f..0000000000 --- a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/addressable/GET/request +++ /dev/null @@ -1,7 +0,0 @@ -> GET /info/addressable -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 7edfb7e0938d0c35 -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/addressable/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/addressable/GET/response deleted file mode 100644 index a48c5a52c9355eb29bb49a048cd772414d297712..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2540 zcmZuxdt3~AA5Q7Ex==cGB!=ihv+d68Zo8YPR~MaEx)(Y*&CbqlqrJ5=TW#gGLI}w< zBIHhpl7ysBMK`=BlCG$n#8F5pIqww5>wG@%Uo-Rjet*yN{GRXgn?)fZ0nSW16Mz^D z!2jPgR4yYi83~eV1;z(REP-@ZNDy4+3ZT)5lE6qe6)6I_v;kwm!+i67JBtW*iqVoXYa zLX}iOIJ?p?5)t!(nQV^8MS#I5;v(R%U?%m&hrxygLbd>%Ns}NH95o7DgkwTJ z5RM6*0Eh?pAxbI$OcwxR@|iAtCL8ea3!$M18jX$3N-3A{0V$FIB4W&q!*Bu=DgiZ; z?~}r0D1|AbG>8*%1vOwL7ONUnj#DID2F7Lcm@E*2cubJx!a_ivkR_zv*dmCHFgR=% z&gd4EjKrl>=ooYcg9W?5)S3#R=%otED1n5k_+0X$Xp9R8*9ROpHqbb0`~ZNAg^zeaPp=mEm4EP!Ha2Q^b|%A6&oKa zHgvgCOruTTYM>P{t9hxGPF7g;mf4k)TJDE`s5+Nv*ZQ;LrPbvfwq}O+ylWmrt?Mfs z4k^fsiK~^+3r{E6LiguBuiodJ-LYpycjrLg#~uCE*$YNKH&`Y<3LpHe`W*Jw|4rzE zH6tH=a(j06^?Ys^I`LTE*81g(d1JjrPQj6*jeEViviQ5so@hLqTM4TaxeC>a;?GvR z@;{l6TMn(sA8v-#Ax-%raHXSdXWHSdzbrYJu`TIn%k?^rN#H3zPjO*x{>zrg)%nFs zp7Ass(`7fw3C6z7nL9WKxxVA;9*{-%FJuX4~XHxHCK9ePOrVO@@nI3EqZE1M3=%k zCFlh4VVcq7f~xN5a43d2WR9D4y_Z!?m*}0Jg%5CscmWxUs#_Iba?lHUS;Nb2z5ZZ3 z|0l-DXE#F?=etAVVfCO@+L79Arz}s!FTY6~>ozE4+_gVCtur9H|6h>JE6xoo^LasU zUzoRj99()OYU;d~56xkIuzuuI!Na`N?Zy1JoP-Wd=*KLd+e-KI0z-cHDECI~$RWb73vzD0@|I1Kf;%GXG$`CO7$~>U2Fv%9gB-6ROPgX&9Fj-^SvLo zWHjq^ISJS2PPOhkZ}bdfNUeXqTay}W|50*-LT+BJ?}n`Eqb48xi#A70)BnLtG3$IH|ZRE-OxNygnKz)=)=8%?!T{T zG0(BM+_WFeQ}CZ$h}m>y#`Qo$gY&UhMYDG0kw)-h2hS|Q(2*mn?X7EOEt;~D_o{tZ zb1&?idYN95j=>%{*Gk8z!RBP_Qe&4xnyGZs zu?CscK<~YXK+`(3GfX2&uT7Yb{SMvsG0yNXT;X3@c&#ZVyY!epcU8=9w?pHYXZ};p z_YRv;Qq-bbvdeGb#PBWInt)~L!`JdI6sbO0I3}Ftm8ym&_avS$)Uz?uY4WRx>~*xR z*F4Cu$V`dFmgFK17s~XrSmvH4U93B|j|iX0+V^dKb1D98mC7=?O3%9-V(M+Oo#L2m zpx4*vkg{rF4yb3*Yx2bMwLj!;T~!H~xyDhAqLfDnjw0~daF@9=U)B_~i&DuT55oAd z&1x_G)pZ6OBJS$uEn0aMRt*xZ_U9qx9$; zTh}EC$zO&zeQxumhu zHKX+uAl1$0h6%b=o@LENHrl@Wb(`}!R)KaIoojA(mK+)^J9Jb!{>bH-hILw#Hn!^r wN2zo5EbTcHZdwjap~3GX=(lSmyT9>`-52ANK1?MU$G-XYXATM diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/allison/GET/request b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/allison/GET/request deleted file mode 100644 index aeb0880a1f..0000000000 --- a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/allison/GET/request +++ /dev/null @@ -1,7 +0,0 @@ -> GET /info/allison -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 7edfb7e0938d0c35 -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/allison/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/allison/GET/response deleted file mode 100644 index 6fcc35a65944703fc083a8dcd1951924511adc9e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1293 zcmZuwTWB0r7~YuHrXvIq1O>rEiqyuP**P;iJG&EC2)diZCPsIcBB+!zXU@zHnOoGsst9>dsW19aDT)OJuSh`CVAKckQlU!ychjs9`ZUac`@aAC z{xjKX-Ce*6Mw+Uk+5HlYBf%mei%!BUB-o-TBmwcGF+|%WMqDFaxN!nEEw%(EriEV7(1+L2Qi(4{C1T8Mno}>eAn%B;EZOe zFFJA(2R`js$YCzY0wMF1qP?62?%pxPY3e82L#Qo8!mUD~*Ul7=WS+t}REkc(w)OT4 zUD%l`UL1P?BZ z3F293gyeH zQgutOSQw*;nU+KeZL^-gX&hK6B#ScfShb|)QIgqUW8YmCQJ5J42XDzw;3!gdDC@4} z1BjzmbZV3}*`cN_7b}`6SFoYVE^~3oDVB;A*XXunk?=z}R8>(`!_bNl%Lu@S38-iX zkeRAgYmUeAw4KHwt753I37umRpwtgGh#zod6ct=9DOiQCVHJydpJc!yPqZzhX_`bR zWpHUJi97}eZ+8Ual0yW5)KeccDWmaZOOuMFX_jvGG@17aJOOxP^CXRY-j+ZS7+EpP zU7W7Ny+<;~SR#|apJ%|4vvi(0vJF?iDJgh~H4V%4#yF&VF$+yjwYGlbwl9Dc)*;Z< zB!wr5ixpirv2K`(hBZSq^9P!0{yi!LKJ(N!? GET /info/ansi -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 7edfb7e0938d0c35 -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/ansi/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/ansi/GET/response deleted file mode 100644 index 092aeebbbd1229e1a8c5d395c41049cbf9946f36..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1674 zcmZuweNYr-9A=bp&eI$X9U&7}v(UUfcJFrYW3N-84mgm{Lo@^Iy}kF2jl11-cMrG& z4JKwvMJGQJ1WYILvxJm1!%#wy94qS&6~7q2My*J549r651(bBAzjpTh{eI8$ywCG{ z6EZW?qDd`@=?DT#O;WQ0uRvbGm4FBtOo2s8wCDvKZ^76+Ajwd%`V}{BQWxQF3HTr` zhzck0GJ`o{l5MFO_IP^=sujsHE=qy|*?}s9krvD+xS-YP71(@Kf12e#2wsqR&g~x7 zAVbzKaY_Ie1uw@2a0!Znq~HSY4KSDsx`E%T;IhPGQ8M(pqb!)rN}Txg5tgSYqRd1` z4?;n$2lzc&D5Fj#;Dt}k4mY~d{bj935IkN8L{8SSg3p3+KF|L(KZ`ny;gLWAP=GWv zJAgPi{6x!R3RwXP#}4%%KX~NTGi|aS_se)8loed31wIfIcu+W~CtC7510Lv;ahKmG z%Fz}zRDg%UW;lV##475QFSQes9kpS<3XnCCh14iS1C~hWb&-@=uQ!r<+NdRrG)0n{EC->OK1L3ONLKb*_c#W^U_xrm~}s{uuX27HuAHJ z7e_^?Mz$H>cHkT8CTg2M*i*XS7TQ!)5S86dS%S5j&6^&4e=hEL^((!hN9q^Io44<= zf8pqsjdvy~v(}ea-D=_|Rw}A-+x8zz|1iJfL{I3|Ib!)%ymCXGeFU|uqDXr%q3+^@ z?Y&ECej6XZb@`QGVnP7SEBj}Xsei|dM(q7i*Yq;hN=1=tRVF@8`N313USDx?^vrzw zm9T{9meL)|t7|*p^QXh)Pg`3f`E}Xa3o*<7oH6Inse0PkmU86oyKsdZaj>DW$FMu+ z&F2ffe&jCm(e{$Y^SRdyxm#Mu)Xr+l zrTf31SoKLSb-Ard6?ULpKR+lW=AOHsLZsci9cjN?`b*p7eX|!OXQ|uAuAaIv<>vxp zMfM9FAGe(C%oePtHD?UnmM!OTF)HQo-bOiHabIaNpO5jMja_nY^|(i)OV+G0HdyaP zb@|VPcb~j{?)nt(caA0L<(q~5;`HNT&P$kWJQbW<*066vvC7Ynx}$H5H`U}@n?R#u cU)I$d?@j9u2?^=%9~siQwyNY GET /info/archive-tar-minitar -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 7edfb7e0938d0c35 -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/archive-tar-minitar/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/archive-tar-minitar/GET/response deleted file mode 100644 index 9bb18f27055c08fe7ad7d4de6f1002873ce9abe7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 984 zcmYjPU1%It7~NV++aX8=q4C9BVv$n!Zsvb?Cs}2oyU8|56L+^sK#Ja(`DXXJvoq6~ zyUT7~7OcdF2!*21HdrN!55-EUpduFQ4^{lHViTp-<|TsGiUbrzTJNSm$~;`=J2U5; z@0>eQE>8|f2?@!fh$cn_%l8;~46}9s24c`+1A$AZH;Ak%2_s;c26J#qXkjNLb-;eW zsP9DvDrLuW6UD-CVK2v8QG|ogXJB&l_;8mLZMm{cI6i*Xb*OqW`>cL&enoF4a3nWX`@8^VDGa4E_~L`QQ{ zDri{Nb-=2fPGd8fva#gIN?O%a-O{w~FAa~;I*(9Hh@vhf6+UYaE?*A_qo&J|LN1fD zD-gG;p%>PARY6H-b~NFqNqLsgaACSC9zOnu;pOo5n|=uSI4_m zUkxC@#HCH(9wP{wU}Ljwpc|3$iy+Cei1WoPhu3EY8Yz@-z2GWk+*NnKZX_YUE0UU4 zl%%9+$%K}cR7r_XmBjc|P7=5gPMp25Q0`_C@jNfuZR1jDOjwua9L0v&9)^09@WYBA z^v!RHRor7Uv5n6j%I-Os?aBXnd~x$BIQ-d;qkUKQKX7#S{DoX?`;)C^XEeM2?SJlQ zAA0i#@3&80`!!fwnOOPqr%w;O*JGdjcFPI+;^%WKXODk3D&AAO>&(c)&~%Ke&(&|eJ>>r_x?PD&u=^V zy14tnr?&pG`QGtk(`%%S)QI*(syindG*dQyYKwa^YhOby-SxLI`s&s i+2X;kzZ(AH(vfS+@5W-W>(@8NW^0MxPi% GET /info/arel -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 7edfb7e0938d0c35 -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/arel/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/arel/GET/response deleted file mode 100644 index db830ed2290f00988d04701e89c6cbb78c160ab2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3490 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 GET /info/ast -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 7edfb7e0938d0c35 -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/ast/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/ast/GET/response deleted file mode 100644 index 3d85c8b21cd65d1ad4d90222fe9c6b9b21cecba6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1460 zcmZuwYitx%7~N2bWo#tSN)3YCG$|0-*`3*$+3ikkLnFJTKy7WyBZ1i5nYlANbarMs z_s+75Xh?hnL`evuV#OL-Fu_M?N|OpgOn~^pXozXhhKI%nK@AdX5ir5KTe{YSUz54t zcfWJKbIx7f(a{>_Lp+FZ9B5g|sE$pLO<0n1kqijRlCWz*)2;<-3VIlkI-lrl4U=Vc z52g|8xWsg9EQ9uj=0r zt`|9Ar23voa;)oErkZ0tG$PEeqd*;LL#cX2C$^)b5%VZug2Fby|5Hr!O89QJ%AXP`7@ zH9zg*Foi1El~-%>wvkeZUFc>IfrbpKbckX~lvitX6q6)T5(Hg~iwcxbG_J-uSjAY7 zVo@ti-9(xUnjJd`A~DbmJsKcB1~@^M;xZ?K#^w%2g=z{Fy!ISR25FdOp@Hh6ToAav zLM<&ijck?9v?&K;v+2@+c&OXYuVqpYiRYq%CPvs8RCrbtMTu1qFR_{~ND+-gQBGI# zSA3h8X&PEC#PO7TKBGRQ@M)K-s93bpl&DK+1`4Vv&q<>?o^~iu?Lsz1Np`kD)51U! zLwrp%#B=m3$)YF}Nm|G@NJ<7mtcHQAifGb2Xd8%zU&#@K84VH&lJrcfNeyUlCpC%7 zk%%nB3Yuh0NS_0JZyD&>CQdO_5g9}zUd-d<9WFeWE`(ebT4n}Oju?3vq_GN3{e+~{ zOFkk**koG+Ef>yYu)L{b@`p{CgtC(8e_j%gzD{0@3qp(+q!?XGBg4&KT7H^jb8lwiEDpe@9n&p_#k__ zy1!zNUpxAC-~Pv{#t&9cSNeNy4z~^U9vewUh7a^E{b$;${oaqcFMl4JziDyT$rGgy zv_1IV-s(NcSHBysTwr(3`X+O;e0k^AoL1Y(Froa?Y~L-6vKq+?QUsSetWfq%O9!ahyN@$c6Tv!H36s zPs%U!lOK+T)x8Htc3&MF+VR!2%l=2Fj%-`K^Yn{DEAWiQvw@2bMW5aH&ezRH*G5&Q zd}K8@Z@?d1v%7M}lW&ckx^cMd%=W)ZO8R4$o_qHV>$9~>V*3WpuDH-zb!iXNx9b*n z_1C$dOdqq#UcY~Q GET /info/astrolabe -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 7edfb7e0938d0c35 -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/astrolabe/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/astrolabe/GET/response deleted file mode 100644 index ebb6db7b72ecacfbee8cc9cd8df1dff508874fdd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1633 zcmZuwX-pJn7~TlgX1p3JqA|h2V%El;*_oYPc6ZiAi5ybF0}u^b={K|A&W_C0nOT-a zsnu#d5fwF7sm55vv{7qqtBqD`ZLwaZCTj4g^++sQ6c5CP{;=P!LTTc!$$aneJn!?o z@5JKbsdk#AaR)`=Qzl`&s+dqQ2{Woe7B^v~Y1bqmDn6VK0o{P6KWqjG4^~M8bs$4R z)l5-U3>GiSEXbZxn3tP38O16MgV1!Rs%{ws}DDLUDSF$;UUx14AyRs zw}PYq!U72mlxapK*rT>PF^J|jNI_Kv2?9+tNM4nFxF`#+O8$S>?jC{;Du4;}SZ()X zS8k7(509a}s_{z}h6zlOe?b9BrXV@v+1*nyMA#rA&@c%H31m>EDj*W4Y}dnFRDiNU z1j4dr*b!9Ru9#X~)k26fm3TG=O(3xNNRDy388013=XnrdIEG61cs-mO1{^^?oeFqH zViG`D$VxFN!T^gGsEQ4DxbXs@qXnYfIOSw156gJ*+=60^2Yd*|z1CHU#br=Q00H{b zDI2bZIb>14V|N>CBZ5R1E9GzNGcqD|9*B0#kKT-1aH762v!$(!d@rilGT|Y!fG!ZKo`j1JXqwA!dUWRegjLS_@9=D5e z*-DBiTS+#BAtI=8=8J){Um9V{K}JhaqNpezi^HQHg=nR6(Mpl3E@0S*m9JZJ*EG+x zB&@1CJ~xH#x4133qQ2@(?WoJ^lCB(CnKo(gJE>{yC7rF)KNy`iVEaOUYt_x+VsL&W z5@ASl*umP4_WCK$7NjVTdL6qxud(*evT-~M(*LY{f7onq>v&7YwreF0%ev5oYl&0uExnku zz4}-tIAW*iYvdf7a5cqj_v^y{-4H8SMO){6mV``e=W0 z(a-(ll#4&?=N_HjI38bjXGhM0EOOQxiA9$-tbX27rur7!2mW!rT)MLS>f=qdCuaJO z4*f2nlN{I3r{isBxwb5Ax3YTqge8M++{-xD`6MU7e*5v?>yxW4>b=f=yLI!4LBr2) zOkF*|>Pp>}xbOB&tAzFY^zfxOnu@RAZ|m=TQdi1s9I>x)T7!+zcGR5BI6LTz!o8>R zcME$S)IZJtaA@wwJHgjO=9f(RKC&of-kw|B7G>w5=GW4^HKO+;tzyxH<2i}{jIFve z^3CeYeamJ&95HZV`!B_B4auLec3GWtb8pi0r0UaibL$4PY4!4)QyH?eEt%+SoilNi zqkO|te=8OtR+Q4#j{C>IDWCi7$C9wom;#qqr+&%%to`?vwq31JH(NJvYWV47`-9}{ wV-@7I-`;H*!(?5_s`-6P#6NlR67g10-qv!i%wn-Tf1Y4DoFrRH6D=0(Ur~{3zW@LL diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/atomic/GET/request b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/atomic/GET/request deleted file mode 100644 index 50f2e06334..0000000000 --- a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/atomic/GET/request +++ /dev/null @@ -1,7 +0,0 @@ -> GET /info/atomic -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 7edfb7e0938d0c35 -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/atomic/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/atomic/GET/response deleted file mode 100644 index fa2af84995b71a1b684e0a532a13f8fa8f6b3a10..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3389 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 diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/autoparse/GET/request b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/autoparse/GET/request deleted file mode 100644 index c2a47f2cba..0000000000 --- a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/autoparse/GET/request +++ /dev/null @@ -1,7 +0,0 @@ -> GET /info/autoparse -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 53c83f3e5793993c -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/autoparse/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/autoparse/GET/response deleted file mode 100644 index f50b8503034441f1204a954e932b39a32e17e852..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1543 zcmZuweQXnD9Igxqo`WzGObjTmFh_#D_U_tV+ZzRkbRWVjwsT-`llQLgU5{Pw&bzl` z9f3^15SVTT4d_r%W@r%5EbI?(0n~{`2?7~WL{Pp0iaIgK$AE}$3#&8Xugm?up6B;G zzqhicX0Drcv4CS35SdL$hK`YrX`D8Z05EF8Zc~G*UJ9fHv}}Y!DJ;_gs)?2@m_)Q; zV%5-X0mRCx!;xrJMb$GT*JRtYX&D$v*{lHAQjj#_C?slz)Ijn>QT`jD8@8^>a-M^Y zq?D!NG;JE1Dy3-)nTCaFL)X#*h$9)MG)&u;1g6+Xlc$sdTe4JhXb2=QHf_P}&W%DY z1*Q}ivPmUQYiLMszECFn+b+d06b(UBwOx{tECp&(xmWT3r{-rU7HotVTG`%waIkhr zt`ua^?lt%>3mZeMN_Qv_$#f!Tt~$S!hfdk_Vq{~QbHOBRHgvc+N7-$q#I%BvHXTnT zP1{YNa&~3a8thgQBGz-&6v9vuz$A|MNifdxNDg{9e^3_v42L*|4T?dI^~J?Wlm-bF zu~L;)6c<3Xp*sQR2i4Fb2gLdT;}N_8!RH4R)ism^r3A`(Z5f&XlCX(}3JURz6PPKH zSekbl=@OZ#6AntVYLWx7&`YW8S}FlyAj`=C7^J3K&+bXP3qEp1yYWpN=-cKk&!EU!VQi|8re0JLb&|?HTu`L;IS#pW64;s#hbK^_iY? z;gV09FMDGzgUQGHkBu8YFP%yhPxEBvj20Dn%6-O>&ceUtg0VkR2d2+W6`nXaQ%qi( z+W+0-({3zWQSZo{9CmON*mkj@uJAfvz<}=J2`5LKpRgNdw$?hAu8EBQWkJ!-g4WJ4 zh3{>dy}5{eq3{-85c_nynJn7CEf4*;4SCYM>^_8hF@!~E50?O_`~JX zFAP7i?hL<3X<57DjW6-W)4N}<%(QD8e(Pl#cU&>sS8m(na5!$?E^x$m!Q=dJhlBbT D{Wn2< diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/axiom-types/GET/request b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/axiom-types/GET/request deleted file mode 100644 index 63fc070c2e..0000000000 --- a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/axiom-types/GET/request +++ /dev/null @@ -1,7 +0,0 @@ -> GET /info/axiom-types -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 53c83f3e5793993c -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/axiom-types/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/axiom-types/GET/response deleted file mode 100644 index 6c11680a3d7fa25c5bc8889f307610d3b3a49b22..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1485 zcmZuwYitx%6mC*Wnn`(SEEI*_l!OZ1*`2#PJG(n&!3tX_vJ~637)>a5XYS5Un4KAB z?zCMfAS8lVtwd}=@reP7*(6zJ(WSl^bMp)aDK&g$jL}@v&B}+9Qega8COk4DL zvQXHqAV+ayn`V-;@U{9p2aQHL-T3pF5utijq0 zVz&4Jm-{Vjf`}>&=1@I!s?~qeY#-~`Y$LV_>vf|PT59O1G0VqeIq|fDQ#LC*Dbx0p zGngPn1SK-Y@j%EYL(VTtK?x!rLKxuUp#(%hAs8rOG(_R(D%6CEWf4RT-37b>5JeU> z01N=mC;EdT&x2Xf7$YGmiL<-13{3Is@cHLyJ1jpLyrFX=_I}(k{Z?( zk`w_i1Q;Yqm^#Hmx`L^B<7t9zMn;4-skBt8Nf1<+4>SphUa!c*tR@XAqIRbD(ts>o zwUZ20gpMfqyqP|kC1wr37-N$~n%aOVM;luWSZ3qYwS$t<(}7-|XDe$eXgK>Og4tEE z2Y=Y4N+_$$m1QKc=ygFpS{SxU4&yO5ei%}I8fyNB3zYp(OR0V zt)0tc+f$4h>Y7>9HEzRF7^b)-Kj-Ef7hcH8ZQpQuUOOzP{Bvqv*WNYt^V)B%jxEd! zwX&n8>`APNY~S_er8BQjnNk>AA1(Rpi^k@U4j(?ediWtLd}hmv=F7z+dmHP!mz2G9 zd*JR3a^Y;SX=?SdX%lX|dG~7J-HVR1;?T02AFf={+}iR=;MUcV{ncwX8okRqW?t_* z*fjB)zH8CM@myO$S?TlLo0W~Lc0W3!bH?@lljE)x?fy9LlRXRjex0~zz%%xd{p;nv zE6|>~&ecEet8Y7p{nqnZ)wGCW@?(d!y8c?{Te`L9gXQN!!M<}nKe%$YE$JQM r-;h74{nN8gJLl`n-jzkut1oYi29Dmz&B?iUFE{7-Gwox3qTkFvN_{EN diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/backports/GET/request b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/backports/GET/request deleted file mode 100644 index 2b24b95d96..0000000000 --- a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/backports/GET/request +++ /dev/null @@ -1,7 +0,0 @@ -> GET /info/backports -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 7edfb7e0938d0c35 -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/backports/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/backports/GET/response deleted file mode 100644 index dde0004d37d1d6bbf59163e0c3e2cb92f747abb4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5492 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 GET /info/bacon -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/install options/retry,path,disable_shared_gems,spec_run,plugins,trampoline_disable d59b382d069fc94f -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/bacon/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/bacon/GET/response deleted file mode 100644 index 3778608650f2eca04d4ae63f1ca951becdb184b2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1291 zcmZuwTWB0r7~U94b9@O=4H{ za1?qj?HR~oHc32zc}&p+XP!MVi8zhjX!8?l3lVW6m+O}^*&&G|GY*-e=dn$-gG3u< z=CTupj>kyka+!wyByxS{cFF(mI_TlVq(cOW)7rt~M((EABude4*Z39-E{JgHIt7p^ z015lqgQ;|!aD0eyfi;=<KjJxn>RXhmwNdS~O%e37B_@bt zpfO9&TXtDfiLDesUPY%`rC=6WfoTO(uaw3lj{p|f=h`l_3^W@CS)`TFEQw)h)Dlv3 zLoXXj1vO?{5+$_F`u@hDXCR++F>zS6sAN%;m|)|;T^3O282|_8up7Zr#O%c+9m@p} zTC~fgV3%-7uc$b$Rw%CM#WL1yrfI6KStUx+k|YqW4~weEilP?_1$avc!21!XXnGKt znW|1%4$IPZ9Qv%PLWW7`A`1Ye{z8+u9!G_|td@(is=&8k9_<=0B)>9;=tu?2^299jFZBo z2KR4dk+BF9&+Rav$XVQB7B*q&*A)dTRV`n_^=1vi{Wk+m&$KpvaN89?DjhFXB!+`j z^A%k$so{_SG@y^j5ntkl?yJk9HHh=nc%eJdKKRvlTU)=lS-iMBD zUHxTy{`wt_ua;VOetqJyzB2aK!Fx`A`zU_+Xub2nC#5%5E(}GrmxrHOXdF3ucH+J( z2l48}%}0LQUV7=zZNaHCyDw_ro5zojUtL9CJbUKeYb)=yKi*fpabfFomv4-Gw(tIL kPQ35ky>xb|y!;NX{jlqmOeV9oHk{e>>bpCphcX%IUpDr_q5uE@ diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/bcrypt-ruby/GET/request b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/bcrypt-ruby/GET/request deleted file mode 100644 index 3f12a0de94..0000000000 --- a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/bcrypt-ruby/GET/request +++ /dev/null @@ -1,7 +0,0 @@ -> GET /info/bcrypt-ruby -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 7edfb7e0938d0c35 -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/bcrypt-ruby/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/bcrypt-ruby/GET/response deleted file mode 100644 index e6377e538ea0a5e8937a5e4df658501c9d26fbdd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3734 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 diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/bcrypt/GET/request b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/bcrypt/GET/request deleted file mode 100644 index 706f39ebab..0000000000 --- a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/bcrypt/GET/request +++ /dev/null @@ -1,7 +0,0 @@ -> GET /info/bcrypt -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 7edfb7e0938d0c35 -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/bcrypt/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/bcrypt/GET/response deleted file mode 100644 index b0588b4972b4e7f6aa6b69f827b5023c322f1219..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2291 zcmZuwc~}#78jc5Ljd&pHTI3i}Hf_y>$$fArDj*Nlix1LqeD)a|d)_tD-HP3w4`+o2H{T4<=g?k7E zLP&%lP*^Y*Gm|V%vM_6rC2T!&hWEX>dt#A9%yj^_z67)?+gh9CpWQjE&OW2hY$=uwMafHRjU}r|4H=FfF9Hj_GfSFC65Mk2)Rq_8%9iE}5(L|I*>A~LN;QQJSa-Ps2 z+FuR+lLf<~EP=hF0AwP8ghSQCTZv%{11I4O3yTD(2~9DRXwnd6589%!>TweTYb_>< z@c>Xm77eQPzFTk5u;frR7iUqu3UZTbWExD0Yb0`1Awk8cR*CAwGKEs86-p%{h1QL0 zL;)7CkI)ggRt1HaNj@Z!Lm?;)jz%bl5V1;vsKjz8AS8;5p_l<5@|QLnRgeiyhEYB4 zEkpPaWzhf|huy_V49p|}2Ym`bfuo@D<(9#<2mm6*brLBqMPLlawXj5lC}53FfxvRP zL@rm#aji_D9c;0XEMWqNiU<%yrj&?4%z^@V69rV%7(ph`&)ZL{$N89nHk)v7A*j%x zSOQK06#qCiN*EbPDiH`3GJy~QU#UtW5f76z;-sE6fCCnZ5H5;gI5;&LCG|MCc#W0C z8Lk#(0g69O08tc>FZEs&rAj1HiDg5gBoZhX0UlW*N|OX*-~vfhkXR;?4+0HZJoHKu zaGZisBaw&$k_=8Kg4H$P?B8h$%oK_wa@b$(3(`X|6|^ug>irLFAXvak2L1;%p}~_B zN|a);Tqu^x1xm3@jwtxikqAH958(nLV6gAIh5Y_>g6|KUHd^7x$VJ>CcrZf^ZYluW zl)y~uxm?$Ef8!j=xg5h8#YP9`@%`+&7_I<06MB{S=IX9(Ti%SGep27qlcP&Hf49xJ zxMHt**X;Dl+S=Ovx2E^|AMM}QFz4-s{S9y5ROEljqbIcSpDSN*d%g$|-C+~z%ZnbC zST|Ogf*K;~zc24@PdZlX+WF{#!`>I&qi=n-73~bZa0$JM*PJ3lZcpA@6_ab}f_D1^ zW=*jz;oUD4UQ6%q+4QKt;K`Wc-4iY}Wmwa?b`_|~4VP=W4l{*ctj)*QPpNP2pMYipx(nC2%ntDmstgHu6 zaB-^QYVEaq#UJ0_c?x=Vpsdhy&at?{ilgR_iw@VVnHPD%aO5uKxU#Xrge;)!ZOHNa zEC(M>Ytne}21X|bkdJq3g$YjKHU3VW*2xpU%=Mjr4;i1?Bakh_650(ve^(_(mWzgwxP;>Th@YqPIlJo z&R#7ayJbx7nX0+1wtc~;$j-(ik2i;W>eau{)cu=oOxMhsW$Wu3rEW>`{Qp!c#Kq-D zpV<%e-0Zf2FHRTEb`~X7*tAAph~JUu6@KZ}W~(@~#KGksrG4u@Il435rD)L+@9;Ug zp!(hMUc$cSy)A;uCk6Yk`#0MHMmksQaQN}=-aDK3D`Rpwxw**sr#lO)u%Oad+Y@IW z#$Xk7$&a!^a%Rh17hmc?3~4JHqFQSrUL*s7YGH!c+Y6y~7ber)Qm8yRUa<ltDd0ZyIcu9U$oq_r}j|m*S|YGliD`P9-MCS?GtW) z9h21VU!R?mx8!I*ONE{A<}N|Y=bwhZYIp2#z3$O5cB@x7Cu8%h)v;{fOo7PS?Ed-p z6n$;(gHmFFT;e+A$ATZe9vGp2{cnXlWsHS$PUfhN=*`$zHuICrX9`nGuE`c!Fut-R zhPUw3#lHpTb&1m14VW>f7>|Li`INVAm0Fi(9V^iY2M z#rWH~Hn*tbKPTtuE+x+jD$O34v88o%ob#S}Rib3EYauG_baYzF&WOvKotmHV)q#%b zuKdf_fAs?l14|~ojF0wN73NU7*%BXI>u_$~M~-&mT62~ysa;>bV^vE|hwam;%`4jC z3XR{^Pg)l$J>Rt^zv#r${4hK3v=g!*+m5)r>U4gC@0wLDW5a^$(x1yY9L~VND9)46 MBl8Z9;c&Qr0QhIPng9R* diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/bcrypt_pbkdf/GET/request b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/bcrypt_pbkdf/GET/request deleted file mode 100644 index c8cc727762..0000000000 --- a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/bcrypt_pbkdf/GET/request +++ /dev/null @@ -1,7 +0,0 @@ -> GET /info/bcrypt_pbkdf -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 7edfb7e0938d0c35 -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/bcrypt_pbkdf/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/bcrypt_pbkdf/GET/response deleted file mode 100644 index c6e5114d536d9a678bce94aec4e24521150f9a59..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1410 zcmZuwTWl0n7~ZfF$zafk(1aqMmSDl|?9OE`v$I)DW80;nU9dN>v5+&fXJ)6Jote&@ z*>+nRG0+%V4HZnRZDI<%R7E1{gBJ>35-wgylWK_ZLSr8qFhQdRC8prnEnREE!(?*K zfBC-u`~I`7xp`-R^|OFu7_ehIC7T9D2BvY&LL$JZ2L~)2YDNsmX=pnL$6c(@0@Xt+ zHq0Q}w6JCxjtH8n8ftbl)+OqaB-Z0Nv}KzZ$@!=V*cix|DHNAut#9n+32g9-=fN<|DfvaMN5uRt1O%Mk;CLOJrQ&{h4& zA(=R*qb0S)M1{=k_*K(Xbp$QV@yli=2DFTNujK!CE%s1tn1vYH`P$;;V(yYy4CK-7 z)%Y$82ScpM3lxY<29dCkU7U)iU5D;Q4yHLj%)nmLfZYYk0o#>wD#|!?%FS3#fIt;2 z%B!_lt)?Yx6tXFVp(=uMg%c1Pj4G_eg}Gof3M1i^Bne!Q7eahgV#+BU5-eh$rf4W7 zf?8Yi0WJiRW|k}s8wRW(h8U4$L876VlA)YN1%GW*7eNO0&`?G3FyjN3D-j!u?jl1b zJq^M^?bR%@6gKK|^J8fQBq%5;7(yXB92TNeZ zD&uFEP&g7McP=FG8H=bW=_FED6R%0B$S0?5GlSwR$&jGjiH!UxdmEvqJ0KMFvqIR< zGUOi;gF(JXQb&f0(<0!53RJ{Njt;W3C`C(T>lY*?Ua}m| z(Y1|LBwV-?!M3{Q#RHwzFkuxU=e#5~d6C3co{zA6C_=`HgjmMc+C;t@h9X2rG*aw|BHW{lLK0*x;&9 zoJ&`e@BTCM?2*Z%t$z-_|Hzv4XA;Zbm@3b$O!ZfGK6;_+K#5SXwLiDw%>3yM9sT=y z&;IoF>rFfBtLe{1%NnMKFYdas$0=jB52T(c`8&Bcx8daQhkcWM`!4_bm)rkQ-*ZDH zXJ?)qpB?+9YyP)ew=1VtPTWd2Y`Ru`wC&grEwWiV3q}N-OzmH{d1TG-$lKoT{p|dM zZ~ji<@td!-zc)Gkz4uk=#euE;?<9@~PJOfXgtC64{psaZ*N?~NN~cQhtG{w_H{14b z#}gWNOznB=K&4u->!A~CPqm)*?eU522d^ETDShpE?~UoiSj*wZzxr|N GET /info/bones-extras -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 7edfb7e0938d0c35 -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/bones-extras/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/bones-extras/GET/response deleted file mode 100644 index 32c813d77e331ee18c5882f9249a03a742d8cd07..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1473 zcmZuwYitx%7+oz&JJFz_C=!(`5iq#3JF`2pyEA1IYqEvamO|S!wT(1)X70`oJ3BMZ z+}-Yi)Q~16Q1HRq8buKSO$@Y9LVO??u!1!NAwnQNcqkYiWrJx^zII z&bjA1cV=DPY%l9!fsbK8^^25j8WG9bsH?I0XZ;TRpFGIY#_ zNkp3#)=a|@L2Y?eq`D?LBRY%JGLA!AwuzCPuZn;z14&asVM#aT1gYQ2@*jj@I))aD zjc9O?oU%2Xr7cs}i;$0jXHv%+As|bzDhdY}H?UF?S;@$zkRcOHgJ@9aYZh6s zjb2IRm1~5=AL7{{3n9((K85Cj9HIqQQfP&XaSG3I3dc$Lk(7b8BnchkVHln$CTA%~ z=#v&PO43Os8VN@f6}jcOZ6;BeB^?r!6UZPe70oqJ(;dKb9yS#4unhU~BFFhhMC!;; zaa;r(&r?vA5lM;-4Hc2_N?D8?N`aV=RM;BvBm~N>+nxxb&nNl=1y9l%BylG1B@Jyu zbK(?nL$WYKz- zuC1-43iJe{hNNZ&NsY&}Rf?L}QS92gOW;=+6JvLExA9}^)4RlzkKcJKkFtst>W(1*5Yc0 z)y}^8vzAHxy0d+L|CEIj1~xA0xM%a{i}!U;TXp_K(bZ+WL#Gc^Zfxvd`u*7Dsy8ha zH3il^o9H==bLV>^(|Xo)eAyY;bRu)(Sa|N0`qOVMnOXex`yYO=fxaX^U4N`}a`mSl zuXN*0pjT_$wP@My9KP`6)}P*ZW;@rpH>t}%ZfgrL#VMw5&z5`Vj5@v`(Ybrzp;dz~ z-}vST{hlXdooJ^9a7#(>@$c~J%aiAHH*CAOGIQT^?W1!))Scq9pIr4$Z$9(egssjv zYjZ0)h3NH@6Tdn;z2w}E zn-4diX$ps5`}V?t{=crR=v})V=a!c4a-Qgp|FZCrnttE-ir7=n5B$E7*_W<}w$!&o dN>+XJ>I+BTS?_YWhK7n GET /info/bones-git -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 7edfb7e0938d0c35 -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/bones-git/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/bones-git/GET/response deleted file mode 100644 index b9307058c438d40777797f7b3cde89fc36ea41b3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1625 zcmZuw4^R|U96rSfU6iKLq)F2S1)sx?h!=B6vLLOOj@1syVaL^uJ!DNX+=g5F}%!xr|M&jJhE}>3Eam$oO z5x53noSPHKW zq16&tVrm>L``0LRp(Xw459Z_)sLBNYhb@ud?IQGMoz6t)3?{Xi)Z!!_oskCL1RQ}v zAaLBsffAk!B03Qcn)hL8X>TEZdWewe#W&~ocW|?hB|C1Ii?2=$s%$T7=qy0vuH3bJ7qv8F`)~WlmsVF-cifsJ^nEpN z=_W3q4xLM1|M`)pT0S%gS~Un6%!Izn6f#vjPOnx)7H5b z9N$BC)iblsXWg$WBuzm>m(B*($K$PJQAtQV8XCFt<094e$d!9`Z@Ze3HMeYgdHwPQ z``W739b#&li*u+=tFtbSZ9ZIQC~nT^&&e*yu4-HqaX53c<_NR3DW7fWjsCVJAmg(a z2yfTnABDj6@s5%rHrLgwyYNf)0eOE|j~F_6dU2<%<^0wCtLwZISQDS19sBr9!G|?B?~Eyrs4E3idx@a1CDz+MJP7z+i66pUYfPt9G2(62J5Hy!2M(%l6arbgf$le6?TSzmAlLS0r}d zo!(t_ZhmIS#Wl5qNh?E6?tR$z`@wcycA7pnc+-Y)eU@1fl_dc)a*)Zv%?-yZ7Z-L| z?wxp}@K)5(X@}U%6}eo`uAmD|1`pQVR&lD8NHukS?#h~55*)Ge-Cr$#znc1u(W70L z5jA1=*tAy4ecPM3N!*UY*7bNFCSWB6e5jluzQZGLIPF~>IBqebQ!%h&Gx nDW&-}hthg*AZ1E>#oc|G>8JXGRjQ$(0M(9@{YwYNsZ_|nKuLL( diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/bones-rcov/GET/request b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/bones-rcov/GET/request deleted file mode 100644 index cda799bd8f..0000000000 --- a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/bones-rcov/GET/request +++ /dev/null @@ -1,7 +0,0 @@ -> GET /info/bones-rcov -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 7edfb7e0938d0c35 -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/bones-rcov/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/bones-rcov/GET/response deleted file mode 100644 index c0f636366a49461ad3b8e9aa345855d87079d221..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1189 zcmZuwO^6&t7#&Cm(u(GwBDq*Zmt3ZL`geM!he75ryV*7C%Iq4lNyJolSN9a#-PNh8 zo=h(UqBo7nAqX)sN6EpPKSwVcbMdB!T|5Z^JqGj=2_dZC%x1?8cxt-7?|bjn`(B+~ zTYJA@>L#)b1FgKPg*;a@S6EdA^^u}u)hJTJ@(v1zL`bT-rHXM&8{=4zjAC9W#&hYT z)!uS{Ww5xg_#V{8QsP2zMZ-zeM`j0QJfhto<>3a@53>9Rk#m`|IG$;cG%N*E6)t$n z!U_voaG@~I)5=E?jY*j*EJcV;NSekcI!K0s6$g*dP^m)tjm8v;>Io?mol59bRZ0)c z&KhI5ztj`Xla!KzNj>CQ2eB;qzvkyrXBdefBch1do1Gv|hxfHSqmYUy7Vh#OfA|L>!hYZ_y9N%i8h2=FZB;k-wcO`i0 zql}C(Nocoe)KO6eu#(xPXdVJ)4jPh8R=|POlh8|A%xL0H4=stk|Ic+PzY~ODJr#yC?J^^3_NL} zUa{{<+qW#=_NJbU7y$%$FC!vyCWjh0;v>tk-3iZRiPOMuP+DM;vJnN1l8O@ zvlO0=Y1tN@AM~I+J@e7Y#kKt(JY)(~O1-q4U>z+CAfF z|DSIEl?y*bH-5PF$?tQIZ}pDiGwRO=*Yd+RcQ23m?YmnY;p{xT`()FLTmAOu$JW!G@2cKza`wkJlE1HPpXzQ`_y0OltL^R{s%>v& KonLCTn)WYVftaKK diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/bones-rspec/GET/request b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/bones-rspec/GET/request deleted file mode 100644 index 17d54bc001..0000000000 --- a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/bones-rspec/GET/request +++ /dev/null @@ -1,7 +0,0 @@ -> GET /info/bones-rspec -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 7edfb7e0938d0c35 -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/bones-rspec/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/bones-rspec/GET/response deleted file mode 100644 index dcae6fba431aa004c2c3e91bb3cd1a51ff22d498..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1332 zcmZuwU2IfE7~R-V$qf~Z(S%~`ShN+{*}Z?e_ou08(`-v^>(;hu(TH|-cJ}V2_pf(m zx83r<8;w{^THt}C6@5T_5MnAp64dychUh~vqTmZr35rFc;ekX^oZZq|5}$7FeBXDz zGv}PyF)+{@mtqo-MG>UC1nhf^cnq>qKuo~MIEx1kvb`pN^C+Z*H5XV8>cTk8g~%n) z518$H)CB#lJ*jkGXGiBVyf#iL3__m~T&|ixY67mGCCwSf$0NMHcFTVdo=-hHms{mP z2`+>-E5X2bY+QmN3H*>j-*ZYP$dVi?I1JJdgGNf6Tw@cUIJAScMc_%A5WXcePOk7APDeltDR$Tr}Z(Xsp5~9u_hsi?|eK3vNK;O#)%aGC{qO z(KA@Y7$=FWCNZ}Z8JK9gf%IHb7jyN3gE$kTf7FrmC8< z4mx@U1dMQ=RJ;m(#{@1KhsYw$Nihn7LWWzi>J;%X$MiS{Yr+n=!66wfl$qOniE7A( zO7tW|iX=i6VFT)!gbYPdQ#2!)RSiunj}$y+yF7GaOcWEMs_?S{;_Kaj3zczrr8Cu> z%336f^P%sOW{G!X5FQ~O-_rh4AF>?^5^7A+lQBu;-vqymvP#k+p2hMeP$X4A7!#h9 z5P25i;mwp7p+XihzN9_0xh6Vj4OTQUOj$M+t)fZMMm)~^y%bUC*)%V3MficNO65Ie z6DxrqAtZpvv5SOrq$DhoEX?rKE=$Uv4xdnAdtWOrSI$hZqjO;82j*?YS;_prEJ?^; zm!uksqDe|Zi-~$t)r{z1zZe}%i2^6Wfm@d^l)7U?w4EF6lwf~aXj8r*`UAx<)4eJ(5gVXEOjc4bx+ZV5;W}tAiuGZYXYtLNoFJlc; zrx%7MKSPsSoOf>?TPQvCx_9&BAJzV-_R~MN{tTjT@9&n57T@o?*in1%%eIYIQ>W8g z<)=4EuGFQ>O5%6*HxiHR{o>LGvq!9lFQxa~nwc2>c0e5#yRN#a!y4n)ncvgXdmmq)@Z07-ojiZ}`C~74U*9@1dfq>baVGA`#(VI#Sq} diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/bones-rubyforge/GET/request b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/bones-rubyforge/GET/request deleted file mode 100644 index 503579a397..0000000000 --- a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/bones-rubyforge/GET/request +++ /dev/null @@ -1,7 +0,0 @@ -> GET /info/bones-rubyforge -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 7edfb7e0938d0c35 -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/bones-rubyforge/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/bones-rubyforge/GET/response deleted file mode 100644 index 8c753f62cd80d5651992d6228dd5eb8f93440c7d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1151 zcmZuwO^6&t6dni?X%r&HV@R1brwAT$QB=I-pa%tW^PmtAB8a%Ynaz$H@H9Q|z52edzW3FY zt*w_@wrLZ`vdG5s1}_T@g{FE|K}a<0=~k67QS=C(FsVTIYn{-Ju}2fha-e0UMOmnj zY!23k8{^U1=tb=9DMc$;YT)y3NbDZT%NY7mR`MO}pJw?Fq9|1%l4Pkt0k5UdGg_6I z;4>;qDbq|IpPeHv4xeawK%q3#f*;SI9|d~# z(3o;*t>`W&O&ycvY`-kn?m|yX*3m45T+z7BE7j^5pjjG{6#zT(J%T(D$t-sp<$QIbc#GD^kGlMl%h{h?z!`RVmPu4jEJ@ zo^(UU3Eg1f$y6{z!1pp`vJh%wpd%rUJJy_MzQje~cK|BNGBE|zs6b93rV*z0*iw8t zw&PiJbv(fKq85@Xqpg!abRsmWvMnskJ(2jl>~`061Kafi(+YgowVT&At>(3%WuOv7 z9vt6j_+S&wRorwoqnn#A7z=*H7-MYKFg9i>Q^UCU&ZCXPw|{)4apwFtFB`Y5#}4lP zc^IAj?3vM>_Jv=s-)e53yO8}hxOeaSk1t;S=iKdsCsyA531J~ zS?nG?d3g4%-|yc4>AfGG9^brr@Obmp=hkoRY<#`_)CWIrUwwA}<`>DQ?|<@oa_5oH X#~)q(yU}PI9i3_H>i#cN{5Jjt&y$Gq diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/bones-zentest/GET/request b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/bones-zentest/GET/request deleted file mode 100644 index 85730397ca..0000000000 --- a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/bones-zentest/GET/request +++ /dev/null @@ -1,7 +0,0 @@ -> GET /info/bones-zentest -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 7edfb7e0938d0c35 -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/bones-zentest/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/bones-zentest/GET/response deleted file mode 100644 index 594cacefa300078de2b09b06e839004f2db99dce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1211 zcmZuwO^6&t6duSWG#W4JMIl8FF2Yn#SNF{HbdRI%VP-SxX5;LVh!?4@dEHZN|D~#W zvJ()M2%?_iMG$icLA-jA9P|)D(1UoknC=5 zk9TI%t?4<;9cWEURTvO;HY99FvSJRSC@sW3=8vQNHzF@|F5`H;g9cG4X;!o>QYltc zL0Kq6i#%P0WDYT}QbV;8WJ5z5Zw!eRN|wh%WMNFH!%n9e1$M%##0HI(W|hLR-gRM& z_iH;TiX;VIN^OfG8xol%4=Vou)b)%+@g+B0)xGQBQSGtZkkn`o8hn2XZMc!*a0R3+ zM>?D8^;I6NG`$SkP}k-ezf$D*Nf#FF= z&N#gw5UdY@+vRiLa|6fkMR6PiT_=d*fpf-6IbxxdGL|q8$##*qiR+VXuFyctCyp0( zyP+G9t?fNaaIt_!YgMEn$@l@~35@zqo0L_AlCG78T;R+ccSx?t5)Go@QdOTN5kw3? zxRJ+czY8AiGS8zC^9Akq+`gD|27w>dEmdx0hNg9F$LaP0hOvqxd{!chQHq)Acr>0T z&=w0-WH72LA};nJN0iBHGcHq2dR?0h`Zja$w};1g>m^gj6SF`wy90|00q8Wv^90cR z(aM0f=G-92L`mdiKsL)GPJ+;NL(gwGSxSx*@Vza$%B5ad$ViCgEU0m6g_{Sn4^UE` z$|c~A8q^ZzG(y)OQi@tKx7(wW*(Ro&SV+!J_m2M1g*3Pob1+bIqVRdLZs2)7^LoDR z_&)P{?F+k3`@-0Z-P1Ff4=#Y`gri}wVyAV-yeVC<_jmoxAWJZF<8Fky{`Bv2*vE=k9!3{P6i3x1MJ0j|N-&H>R&XZ%%#k*Ds%0Z2aB%=-Tbs f9T&2%AN$}2OrAW~YPIg&JJI^_*MHtB@!R?rU+bF! diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/bones/GET/request b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/bones/GET/request deleted file mode 100644 index b35fc99573..0000000000 --- a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/bones/GET/request +++ /dev/null @@ -1,7 +0,0 @@ -> GET /info/bones -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 7edfb7e0938d0c35 -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/bones/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/bones/GET/response deleted file mode 100644 index 38f4b18f3aaa3a3f822beb66c53236b88582c985..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3708 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 H;{*K<<{i5^ diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/builder/GET/request b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/builder/GET/request deleted file mode 100644 index 174e5c6ae8..0000000000 --- a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/builder/GET/request +++ /dev/null @@ -1,7 +0,0 @@ -> GET /info/builder -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 7edfb7e0938d0c35 -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/builder/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/builder/GET/response deleted file mode 100644 index bf6b9b65f8ba63bda5cd04001c54f0554c6e7fd3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2001 zcmZuwYg82H8D2sHxDu;D2uj4!;3dhttJ`}Hi{FIR*MFqET;e0{BzU= z3=>Oa5rfkXv4Q9bk`z&(`E|I8|215vDK#fX0j>=>T9MuB@f#Om~k|d=H zj8M#u*cqO(z|cv=kiA?I0?+IOTyL>Kq4YGYMCr6Tg9(U8Gi$W~Ee1RE1epPt*{f_% zASjwcYY5`ga(3#OXf7e zRmdhAJFkf(M2+KWsbWr(Op1VUhVLblU>S-t3!x%vM1f(mYi2#1%XLOaLiz zfXxI3R1ZTtuPA&u7>-NP@PtjUJa?u>BBPRi{6WnW4@u$he^wC|J}yiaB9$sJsaz?R zhe+iixF|VMB1+atgpdaW-ZXz7-48y9!lBQ!6HQFqDx6ynF%n>CB4B95R@NjGu0G%; z81Zwa3f$9vsVQ8i^llzpUVC}Tmfs$Y><^#v^6-wxldkTQf4L-kT(|0?xM;X5bkEde z#f^tim!`|!=82@6nJ3a7jNJNzZ*hG(X+F4(^PZ4>d#Y}_@0j+laf;BKDUY5jcZaLV z79)AIG<(biWV`u+ZJFtQ{Kwb2H{a`NFH2v% zl8^1!>FIW;wzNG-6EW#`I=S|2kOLhkOlufx%)Gy5Y3z}kC=>P@`xj(nBVESntbZ0gSMuhmqE3;c z+$-XfbEzZa?T7p-G||;sS3iSM@2^f*U-PA%HnnO{QPJNl0Q9`~MR$rVS_iudS0@~0zj_w;mG&TY2su9NjX z*uog{)|?s3eKGKI7HzC>*f0J1(eZMhSj5`iCTl2|Jl{8zdobuhOJ9ad=gP3G?Y~jf zpR@Swg9EsaTh7p;XM^;uUS(IReV!ffp0E|^&Ep>qV5_ z$XmJ>JSqBEdeoPm0|x)6z6#s+sJEooo^s{9kK4ewpq7j5Uh2q4RX*2?MlPmQF5Pg! zJNb0ulE(tH2CwS>=G6^TVS`<9d1Ku>gz+zTcSPI`^4_xYwKauJo3jGEYkZ{fStfsv z-#>42uQL>```ptt`d#IL6yJW$uYk?}lbtHjMoatBqT^}T^Svrwo=na8Pf~s8?!1-{ VW&{Gk%#6F>R>!vk(VhZ<@PCJRHLCys diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/bundler/GET/request b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/bundler/GET/request deleted file mode 100644 index ac5a4718b8..0000000000 --- a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/bundler/GET/request +++ /dev/null @@ -1,7 +0,0 @@ -> GET /info/bundler -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 7edfb7e0938d0c35 -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/bundler/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/bundler/GET/response deleted file mode 100644 index b7e865b581351cb93c1d058df409435313aa59ab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11827 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 GET /info/camping -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 7edfb7e0938d0c35 -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/camping/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/camping/GET/response deleted file mode 100644 index dd79d5637414fed1eb715e8ef152e0b6449270c8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1816 zcmZuwdsGxv99}d{S3t!_VLm1(@g%d%&g_Go4Phxj!WCrqkfDZmXYcNgJ3BMZ%p$8; zq(%`Yd9t*JkF+@93m=&gg47Z1APOf6(tIyw*aH(H3yUt8WasqPoVmZ>@B6;{{k}Wf zZqJI-YP1+h5Ljl0nh|&f@(Qj5L`Y)_EKuS^4zRo#V?02Tp_1TNTzI^?0C!2i2XR4E zSb>*m%x1BsWM-$QrO!pR0$IjINl+luU!^gv8S@EFnBd?9#*6Crviu9d3o_5TT!R{9 z$oM5z3E-l@u}lD$peRTRF7RA{#+=Xv{G5Wz5`)FakaNYDF`1EA@!liMqbQdu9h4UFiO@#w`eL4g!&tHH_dhW312pf6f0z9mH@;ARj0|x-;94 zI52!y%Rdyd0u+|H(}Vorkyrm|lPTOUZ* zS%HKCpfzFyMN{!KrNh#!b~OVS4;*TFKz1AkQF79%*nd zXGOGN2`=^bD`ydjgVZ?)U@+lMh9Yqta5`|{)H!g23A&(O>(mmYtAE7LE36NNj?fT< zK~EUbnI9l}pNNcdaHx`=l91wb!&t^62|k#hMI8>ncp;BiQuDF_%gLBtr_sh6G+F|E z^|Ve$4T|I-?^ZlCW;DgC0mDF)6bbNdh{Ed#C{R{Afr3aOjm=KC-~GWotb$bO(SN@s5_(-)or$81T1s!!=;JAaP8*wJBVuz>2sILd zfGu|}l=9CaVpGwgxd3jn%~21~BaCd6nlzLejUc(z>S?7TRCLKV^HoFNx1Z;8(n60k z+1f*r+qWL7DZQ`L(Rmh69{YWC#hR~Ps!ZIr;bY65@tb!Ye1Kw_*5=hL_pkm<`l0ui z^TO{P9l;Z$H=bw{E}pxRa4~p(b>4*)g|)NlYR)CJ?>K6%yx5cZ{L#)l`DkBv_YHbx zI{d)WF%hp*_Ah>8>Eu;W=j94&L2k+136WPPBt?IopHU=4XsQwy*4l1Ada0>z>x`tj zq}cuRytMp=&xUUI-de|&G*?>Z?;Uldd~a~Kd&u}k+XeLvsD30?34Kd%->~AG{+0T& zRUsW?5;|s#jL|-`i0Z0qpYpE1F*l@U&I?y=wk#Z1Jas|QP!IfdANBC`cN$Dt#oWn} zuN8)`TSUxp3l$S?B#vJw7u_}v>$d$hKZ7iJ@XgfT&mQ+_I;&caM+N2FwI`3u#cc4i~Grz410TtxoG2uNmi~qR3=E>ucUB#0+4_xlK z();JrJ=0#=UD9&8domX>DhYpYbLIZ#LzBYH!v2Vjd#Vmq@B8p6x_e4URrTZb*Ya*& zwvFl|Ti^IO@K}*5x+UL3`96LOEYF=aQiVGu8Z#WnEcH8HX@1DN( z+Lo7ln|02HE1sTH6NC2N(n9NV6~7f;n;8~-zIorY#Kx7LwCd(5XG<+ny`fmpb#E?jsc*7f{dE>yX;->JXRXZLxb)1Hm5EY!_~@#v6U%bU gEi+3$8nb=U7P0Gol}gpuH&hjd?O4z{T%}U~4fm+r$^ZZW diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/capybara/GET/request b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/capybara/GET/request deleted file mode 100644 index 6ab44e0410..0000000000 --- a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/capybara/GET/request +++ /dev/null @@ -1,7 +0,0 @@ -> GET /info/capybara -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 7edfb7e0938d0c35 -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/capybara/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/capybara/GET/response deleted file mode 100644 index 4feb60944120f5cd1a74b2b6daecd3b5a06a219b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4162 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 diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/celerity/GET/request b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/celerity/GET/request deleted file mode 100644 index d9c142dbe8..0000000000 --- a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/celerity/GET/request +++ /dev/null @@ -1,7 +0,0 @@ -> GET /info/celerity -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 7edfb7e0938d0c35 -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/celerity/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/celerity/GET/response deleted file mode 100644 index 3b0ae068e7f1781ffb32c8f8dc3f96ab9d51d36b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2445 zcmZuwc|25m9~KEih*%$YM|GMhPPFu1~Gi&Af!w3+Hn zi?k@>b0fEfHzc$vsd&|GLE9Zm;vOn*@8@&>I-m31p6B~K-=AMl&>9kjNCBv1GQeF$ zfMrq)kzydGk|P`dLlQ8OTnve%P5>MYDNqD+QDOp+MMwYz3P^&0GC3xaNl^~4);++R z8|d%r|4%%ZfTEyWA;S=OJj($nPJl$lM_hPf861P>e?Fuhz!pWs0$V2lg%u+Ck0Br$!{jK3M4D(vh(bsyBqAtYiK)cM z551Fx0(@tbD3r;BVg!R3=(nxD>9QoVY6uhM+#japfYI!8ih||2-px=z~s>xG%JD_ z!m)7sL;?}Q=KujRsRKY|0s)W$KN<=XAk#QBHiyOnd;@|AFa$><6aFe>Vh$jI5)Db7KdD3aqxp+I7l<72szRqkj~~&KsJTR z038t+VInjtL}u~FTa;2vB*71rOeB*TR2CJFDIpwQBF9zaiSdlTw~IGlh&aH}3Yi3P zq2Luf2#!IdIEqhXAS4o_fFqqqVKImlGX8bs(CM^El43+E#G>&7rZMRR2!;{-)D)0Z zh~O8`Q(*{7;6oUW;-e7ZqObsW`FBy+94eJVV@!w=CxY-1_#=yh6jBiyO~57L;NszY zzgax-N@5U14nks49DlR~AjK%YQ&JUtQP0Dk^K-+#bp5r(rG zUvOL#1^y%{bT*B~q|h80L>i02q%s_W*ODEAy~zZe2tL^T>q6e&oN(~LoffOWwQE-s zCgAZIf%r}N;x|Qko1g62Q)Ri$>B5G(uu7Zui0Ye^3$-n~ii1P5f4kFDw?fC$UwFXE zs4!eAFe?+D6yJ1GdrP(a>X#7*_r55)2Ew-t$Xg&o&z zRjYq$O_3d(&p#e=PVn9m>bm7S#Uka zsr#gxll8k4gB}a!)#LSw{dxxNyR-i7Y0*MMzfjSht;5RF?Ctc6wYug3-uLwKJR&zB zd)Blqw2nSoHsjz!uV0Sh>rOwXF*;NHa%YnP>D8%Tr;MxK%^B@^0e5T~_QVP*b+^4T z!8D(A!(^##vBOQZcE&6B&*+t&@y{x&`?;(^EpnStu8I6q*5n(`sk+%X_gRWw$DslG zZr|d!re+0Bt=Iai0yPW#!7KNIQ<2;qAE#bj>VI3<(2r_QIOpCj^cZ~DR;ifY(#6ZE zN7L$2ld3yR%4xlgZ?9+zy30J041SxwkkqyRnPoZ}5i;A3QCns)KK#tU!c4dQjvEybZpHwvNNDRrZV)t%kNsDy9lQkx6tIA&v(rr9mlw#ahgQq(M0KVhT&cJDpW zN5nG+Z&lcL_1i684}9Ug*G-2(iyg^~ihyJB!85FFKdyhZtw+BFS@Mpd zu1!DMXPedk940@84bCyS! z#QY?DAn&u+{-MzH>~fW+)~ldnU0>^)LHEF87fycM#yPt+YSHNX=Eyfsg7<1QnOWs6 zo?Ol!&}GBBS=M%dRjw$bF?>PhrDZm47V|>rqZN;yTF)qC#cH3tjH>atTQE)cKmYaD zO^IuzE-T-1e#~I+d$#4zDSc>n!YwUHyI8*`^NyKsr(cm}F{@zv#*km4-gMtjyX&>t zSd-RnoVNJLDVxvwgG(J^XD1Owmp#~iF`C|Wj510UU3+D!wfe}1O2PA%>!XKEJ&ejZ zL&n={I!NTOYrTea*Y|2Oc7ej$UZdT*v~8y4aCIe!ED7bAKY48`8+%@(qoXr6rl+$r M{lg2Gprb?h3r?C9VgLXD diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/celluloid-essentials/GET/request b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/celluloid-essentials/GET/request deleted file mode 100644 index 16d119afa8..0000000000 --- a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/celluloid-essentials/GET/request +++ /dev/null @@ -1,7 +0,0 @@ -> GET /info/celluloid-essentials -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 7edfb7e0938d0c35 -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/celluloid-essentials/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/celluloid-essentials/GET/response deleted file mode 100644 index 9b515751ee67adb888cfc04921b4fa07776f62f2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1815 zcmZuweNYr-9KNImI}y|{hb&l`(Nl-L+r4j=ITDMn3`ssDK)`qR-rHNb+g*0|h(nR2 z87j3>KKxD#Aw{yl6ht!YV*oWRX*9};YK%woaVfYgF_=b%E{7%tlNpH$7$`vU)lNL# z&AlfUgZa?@ukk-DWCbW3bB6+wj7M_%vnQr9;2s%&4$2Cy*8(>v6?pKRpR!K!&|Vh0 zW!&y@i?R+u`R($lb+?*z(hBd-Rzn4_6c%aGo9uw39R$rll7?m)>YMO2qOAsV zq}l}#7P69aaL`U+DFPpb=`C0akkA5=7K|`bq=_==vBZ=NH3JwY^m{D{E(&vl5*)D5 zW+tLA(L*CkC!B^ngL?9a16#_8Xh9@cq$=yq$$nj8hWa&_<#R8Zd>B zM<@veX@GOdn8~Omt!6E%*P=;`M#BV27vx#RNnsX)K@AuNqD_+k&qB2Pv{!+$+71*1 zk|1$N6Dt-c-qj?U((5UM*{?}42hcg7dn*PK&&f_TQiQ_vMuW+R<8#=5Foh6`IB;>r z5OI{DR1EDnjkf-dq{vHBZ?xhGX>lm*f1|LZWB@K zRW~;GJ*x^hoVko=EJ3&W({HF|zYsY$ZN!Q(p zi9c-q_yvd;3ph~lAvj{e=9YyLX6u74mkwmkOnZ`Qut{FHVu zKg;k!P6s$>To|kgUui2f?WykR7<_W-!TG^;Q{kFe+r|Q2^y%eoH?CgGsy)Ii;_U!D$pji(O zt_m+Bx6RzMBQzw^@S?qb{q$MYIg4^a9(uFolS{VaqdUI~d2Q{X+hezwp6$a#NcZ@O zku%fM?|XksTknq6{4J;LBTYdU>Nb8I^k>6+88xj}&JuH1KGIzpvi7EC%yaa5NB7U8 z-}dh-=a^jm=$^sy@z%!e!!$p_5O1v1?k>z>n(}G_+m%z1dhD|0U2x zRJ{Jctk$ape`+JSE9^vXK=b~f-RH0qWfkvkxKgC2^A^l2oHIR(9>=a$Y5VT`ygf;C zg(}_i^~_C`pQ<(twC~^XPRgmgBOeY{^|1A|1w+|4=JXvjuiCXzQ+xQa?_peZ_fN-9 z8jjS&-fy$bpR%Z=IB(g>x3KIf(5Xf-mU?+3ZP~i7l66W>&O+(6}>xapTZt zX`}&6@9s+CYHzx@%40>j_g@RkyLhWvwQOWtedqyxT`YP2tE8@H!=E@_u;SHqhkx#w h6WXggP^F1kQr( GET /info/celluloid-extras -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 7edfb7e0938d0c35 -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/celluloid-extras/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/celluloid-extras/GET/response deleted file mode 100644 index d50ae55481fd55246327fa3430829dbf1501e4e2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1573 zcmZuweNYr-96lv8FH}S)Q%g6;uQB#+cW?JT7H<^gj)OcgASJ)>y}ft$R`+(d{QwTX z=nrtjOifbrGyELX3{f-toQi0eAa$^0w9F|>Q4wcUoE(c@4kexGubq8=zu)sb@AG@! zKwjQVJ82^^iXgD;SFD^O8&EcIBc?(YGhne{S0y0IsTdalnhp)GY4Et)T8#4=h(cUZ z4N;MG7RyZw`m%E}GcsqOTCuL#DLCnTkb~F!Y8bg|AW%i!#wpQMOpFTu*Zd@E4~C$DLSO)`d$tQP zKKw|_LkishhRAjIAU|Z})e~*H12=WN2#=KQC?>$Dj)%>ts@qeo z&;SC9jShPpl!JnNh$nd90hEgh6K;Zc@dV>?I3XNul>mZ6s}Ok+hFL7A$SD}*!h%3U z0U%u%L9-;oG9;D}%(HTUi@^AuC@98(0KHBk1yjusT1n5Qpv)mm8EFtoL=`Pq zgKwB!%0)y1Tp`-&fE4Z|Jt3UtNd^x&++m!DeAwae@Fa9{T_dJ!h*1Jck)gvBV@!F2I-EioSW#Sp4EkiseQoy z`)%_EyJCYE?8;a%$2RPI-KLI@@BdhnC+}W*@c7oMg(C;eUX@hEKNZ|{_8n?&^Q0N; z>gyV-2BjxVcQJ_vOU@r}7-(PAezESuWv?$S`gx;x@?z`v&E}%Xrb+jWwoE)GIhwO{kE;>tK2?QbZXPxo6)!>II7~9cT$GIs1I| z&{cGL<(#=UseS&GwcsxK!Lr0Po_xQ2;>hol7mgx#?tieoy{eqr;h#7z@94(7En zNT@NZ;hJUd`J+pwU2e&pl38|euKGz$!?m^jr3d-6MckKM*L%qE3XAiF;pJnmrqzxc jtov7cN|I9xYS GET /info/celluloid-fsm -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 7edfb7e0938d0c35 -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/celluloid-fsm/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/celluloid-fsm/GET/response deleted file mode 100644 index 2e34bab9dc5947dab468bcd69f635da11dce9125..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1534 zcmZuwYitx%7+s429hy)Zg&>5ENZSBAvopIp`1*5akjI_bJF{bFXQnf= zuTo-!P_;F|%F_atG$0gtiGV>wVn9qxcuCYkTfv|}utHHoC1COH7AhqEn#}#a@0@eb zckV2|zsyFHG;XITytEkORmFsgNtkgBvbYIjrcIN9q~zdy5aW{Ph2cf8jA_>Bf z1_Sb8T{7c@rpgi@Cv>Q(x=E;t9B1(W6hK%u2}9@cYy-+db`Eavx}-gRga=JiGgzA~ z2?a?Jghdh>sMCzg@UhvUMgiU5AVpObWe7CMAbB;EgG(Xt|C*mf9l{WG5CJC82WJzA z$>B#@9#R-4FeQGl2l=5OubyZ#97Nb4qR=o2I|)LdUR6LesmG>=xwr^J1`!B{G{csI zK@*59K2dN0%E2=Z0eToW^af~7aC2TS#qn;+McdsIF&Q8@vIDCOvM4$4y(SD=BMrK7}D62-r7xq5Ox7uoj?2 z%WMKJk1#4wY6?+mNL3dxETj1u%O5SBb1lOTtS(o&sMN+wOPj`Td3NUPty@!m zTR5qyce(cykp0#0)SP?I#}*tpG;aQq6^m!4+>Fz&18f*zMX8}>-3r%yT`7yyz|Ap4x;1C2UWKt(|)u?`!if;yY`-2 zF<~8ZC3-(#m2ceb9KLyPesn6EdJS}cwwr98PGl8Y z&sbF}Ey`N^J2lOEe&6)nhtCge`Saq<@~3vabZvC|d;Y>{t@B6MoNAAbUOCctr=!`Q z2LjptaVy?0Fn0T~%iEhyRhE>uP6_ss-qS5#cVwn1 zJwI%)W=+yFnT(NHed!k(n4hDU?_Ijx75nZAT$b_1(M1=y5l3&2`djVac(yC|`?iW* z)sxDqh|L)bT2Ab!esiO3?m1@9ni)FNpRz3yo{?9~%wBdprE|o^R~+F;5j(i~~Q^qT$6 z*NZE^U7k7bSVV3o^ZGXJd~4vymGIQYUus+z@7Gz1-`@6Dm$Yz9Xf1y|3(Ldz_Iy6P oY+qXq_~>$#xAhiQUN^aa=T8kIES3ikhFO->ecE{FX^RE>7yg1mNdN!< diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/celluloid-io/GET/request b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/celluloid-io/GET/request deleted file mode 100644 index b866fbb35a..0000000000 --- a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/celluloid-io/GET/request +++ /dev/null @@ -1,7 +0,0 @@ -> GET /info/celluloid-io -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 53c83f3e5793993c -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/celluloid-io/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/celluloid-io/GET/response deleted file mode 100644 index aa374a1c0c681a561b5ae43925b146ecf82ce9e0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2503 zcmZuwX;c$g8by)mHj3?n0@{rwDk!FsN>T|S2rUN#f&w(mn~&7b-^m#M{26sRM$G=>gUB>>ME&}ikDi%hLWRZRVBmj6KzT8h9GiV+PI zhU!V2Hh?;<8b=KviRrW?4QdIsK?2Az1)^8eAVs2pJ%ylDO{cEg+Jnb(Dn5 z9fraZU=-6y8`RiWXGa5~jQma*}F+_(`98{}u25^n?@0$M~bp%66B2fs9 zkV9ujHox?KRdWW0*!~XqFBKGx&^Y>80%IA$*g4!iaw`F-r@&~8qCq|f(I7@GfkY2W z=8}4uL5XQ7P_EbLC@w=a9M_OrUrs9{Wi&C|&BACzDFJL@KCBQRGLc*+7m6JfP6DA2 zLPZKh2JuBsPGUz}mKtHWm?&`tj>#o}kCtEqd`G|sA(;W*r>M;LmIj&V_@W-4A% z7pYu{vC&9UtHE4`I%Ei{!U%@NW0gOGt0_PTb9iDAhX*lVp#+8nBO=upp`;_3VTSn- z3qetg88s3ilo&JpG6RiKEIC3mEFL7zm?8$;bYDzyVjPjcykS$KaD;(i9$XYc5;zsf zVl0sWd>Dp?h=w8_elaQx(}9Q@kHQ#{6h=m2a!|&M{bx^^FnN5w2=wrGW6HyO5@3l} z;Fkp$iPMZKCuTk53CTQ99_%C#I5K|mIFOk6gV{j=5IaZ;u^1r?u-oSgN&iZM?ZG6i zHh=*E%UHwo42C~5Q=ZIBakQk8#hSU}Ta$qujVnw{j|Ybm;f~|`Z#tYYsRQPFTbRP@ z_RVuJ?^w9n-i&1tzV6xMOdYXaYx6ugR_D2?FT1W$rI0N-nOl9s7GPw<3rs`b+@7#@8_h#r|#5OSHw1p-j+vsdo%(7-(~Z{ z`aIeBfHq-Ax_{#fMQ}~mi7TvA@STD^liY%&S=qB4kGKo*Q^|3w-I(B$E@;NIokJ!AXu&=WV)-Mu`lzsU@{l=yNr2WWK-n?5(% z)4{F5DF1h1(BmFnvq{zEw?Ifo=M7xt_j^ry!j+2&_iSn3mFKY1!o~-w7WY%uEC~6w z(1GIU97?-(J&fMFK#|=-zK#ze+Iy>F<2HY^es=L~cH^CWp}6&_pH^7DIp&fyclM7n z&HG0guG<~YX!@bZvKSp0#G6)YEf78y4C^y!BgO#&9;+zf@eVky^J>lMmph$TS z4on6oI)WY(8Ca?N5r$CIn;Uc@+Ta#C)h{KPMQbH}eEGYDxFuBuxbn5QDKeFt^C#~kY zEZTzpdO9NO(z{Lh+kBHE{ycOQZcd3{$3|7&KkjZQ+oal=FhQSebHgHWQLH!qL{{-m z$%>fyOKZr|_}0A^b2e5hO`C0ltY@J1qw?!d+|e8`LR+^Ag16NEP|%;ySJ)~p-EO_4 z7)nSi3RzXaf0Q*P>t7X4r>CZ?X2CPe^KxHK-%>KAGB@he&X9bIGFQyt(%@`XT@{gO zvHv7CBW5?49;?1GE2wE2aJ53$fR|@SjlS^(0QB733IvM+*y^d{mW^7z$iZ*2 zpIVi(W^eWBn#9_iT|(!l3)@~?QU^EPE(cAb>aBanyu4byuX;Jr3%6WGn z$2YGw&Ng+`O*28Xli&4K!#;M;YagV*- zGo7sN9jvN5YZDxc9XPh5D$^ltx-QZyyv)38k)2;{w~gpp)A9-NOK(Ms##`Fww5=?; z?7Dd{@v_)?Pv@F3GfHJuwheU8*)~JLl;Yy3GU;kiQnfIt_R*`vnEgl7(z5qe1THq! z`%X$6oD@HA{n(a}`d1L-mEl8d3XwUqlZD=iHEsE=Li-#}8oI?SM= GET /info/celluloid-pool -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 7edfb7e0938d0c35 -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/celluloid-pool/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/celluloid-pool/GET/response deleted file mode 100644 index 339d9f2f3a74136a7cf00be384f94e8431715fc6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1496 zcmZuwYitx%7+pky4pd5jNJ

      kPu>Lcb@y0Qqr32!cq#jT?z_n?#|qu9XdNR%)PsG zF`xw`5v=m^83W=2!$W8UBacc+kq~G^frJ`JXvAVwS`b8{i4pHEbgc=$CUd{XIo~*KvV5I7FZsbN&xBFG{v$vH>?1T_+$V?x8K0BQ=l7?H{hNwPtvkxjZVjab_u zhHYU5)K%Ap=ftAZqqAwO5o6YIZGzN%Q~`ViNZT5!OqjOXK;r{Z{%c{`*fNsIA_t7r zjBAh_>)58D<`kfzB+QtE#jXk_V`L^LR{*TKhBNR9qzG}a;`0^CkynQq-HR~IBsmie zs4XTY>CD)x+qP~Z=or|m+UW{lr1kqH|G#Uohwj2GB+$**79aa_2gE8s9_@aO@3FuH z5<|U9fy!i22@Bc9sYEt|*`){*R`9|!TxMHvX@RoO%_MRi-aM6-Xek_B6$o`PPL4jwJvZk?8AR)6sNkps+xkN$>iGmymvOP*oA#G#6Srq6?qM5ri2H5(*M=4XQ~HR6G5egcLzgM1Mh(tO4l> z&>PD_*D`R5p^7L#kVH9;lXtjqBn=2TEHsTQq8u@Dvq)nTbnEX*O1cZa=;r51O%Qhudn0E>%$yFiO|N?cLxgJGom~~ zjW%;^UEM6E08e|w=t@neE9JFaongkWd&twb;rj)i!TUEYT)c=MzNTy6+GnbIz{#8J z`rdHh({19r(A)IXFBh&l7dE!8=E)vW_#vsIens~@7ix<+O;jduIqc2wH#YA=Ix&4@1O7X-R67G{dK5qe#dio zv*TNQzGU3R(x-oXc8Ggw&)J$lp07%y zE8FMIYzxoY*Zxw|q_JxrJm)JLdHS*8uf(iPlUm2r9^183-#TvYNAXt^J3esVvbvwV z*v7ewx0H1?A8ELCYQaxq#fGL0LpOZE*Y27!EPMN4$*PX22j-0`JzsTneQD>Lti57k z)owgn8GWkv9cBAksWbJ@s;Ng`o*8fGE*&i{@v}2$og4q_rQ_F+4DxvH+!^fIX& GET /info/celluloid-supervision -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 7edfb7e0938d0c35 -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/celluloid-supervision/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/celluloid-supervision/GET/response deleted file mode 100644 index b629fb7fa04cc3740b97c9689807fde22965dde3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1619 zcmZuwYfKbZ7~LqgI%*5mh^-o?v=I?znVDVoF`KngqM)?C+Nx1nrP1O8dI6=H^w-V3-*?YB_k8Cj zIvmTR2t9$4IF6<*MHorcfT&@bUj`Ja0iPBn^E4;gP{u zagwM~Xl6`mTv|p_Leer=^QkH(E0PA7kt&4}HdK&UV0ZEoQvmDFvit`jN~*}YT;m#4 zz<3o-^JB8abBrHTfGjB*CW*YCLRsLVy}X903WJ8JfOm!2P?b?Q`Pn1XqiM2AMMaH5 z0lk~{y7fSXotmEq&)gkvbiwzldbcFGc|gmYs%Ip@hH`@Y|C*mi9mjAhbRn(L%Gliz z#L>%7wLGCvHCp4Cu^#A$2)%l)O*LR%6)OU&hLL(&po=AuE*jMnrFflwHxN{e^$M~Y zWkY~QyD2o3Ac$z%Y9%d%m9UsyByMC#CxbIMX>}P$K!zeb4dLJ@I2Q+43Qd*7NR%|A zsk8zEK$ub7NDK>IM-4eTa75|zD9IFj*60g-{2BGlk6 z=43cv1+4XsDCZ!F*<^KDX$wSREd*wCnp~LEWHiC8*}$4jEKUIH$Q7@saRLk-uE+6c zqX~y+UK-L1GBnD`!%9+|J&tvQNXDZ`0UBo9Ql=Alp%P9QYH0GJeo7To}b*Xh@QimN#Yd_dSXFikL+FNL%sa;gV`j!-CRB#9B8ks*!-z5oCjqj|0nK#eL;3IU5bVQR-LgVAW=KWY^W(qP&4>2-eY7$^-^pfI6kdUg$y1Uiqb9571KhIk;7oQe4+`f6m zV%H~p&%p^@D_MK*nN#I;yO%G>Usu0uYsF$TysKta!@8C?3)=fOl;)SsyCuF{HmBD;z9vD@UYY_MddURkoQJZJN{Q|ki`ukn{h+N*Ex3~XQzX9agQb(AIS`Y6|5 z(Y0yPwOr=y$SN^*t_S*+SiZ)&q&KH&p-0-y@ zJ7VkW%U{`X* zJ7D}vf6EK3oOjx;wn59|pz!s@cg`ly+PArckZ>O$v2-s^& zQnWm5CXd(hY{zE7=krt;>k|9VI6laA{0??>M)V9%eN6on+j#8n*6W>WvSXm`$Aw?a zT7ewDSrd&>-@i|UwJr`k{$fOJWqO`jAJ+D@KfR$lw5c=3x+&0@oi^dqmZ0GMz2Q?X zE<~p9u5S3@WKOI+8Eq=_y>dNjYE#da_;NJm&~Y7TJRx+;lLjs=h?t+dw|Co?>aUus cE GET /info/celluloid -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 7edfb7e0938d0c35 -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/celluloid/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/celluloid/GET/response deleted file mode 100644 index db270708990f4195482f521d693bb56e87025b32..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3625 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 R#5d@p(k GET /info/cgi_multipart_eof_fix -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 7edfb7e0938d0c35 -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/cgi_multipart_eof_fix/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/cgi_multipart_eof_fix/GET/response deleted file mode 100644 index 83b80c1695c7e8f81787fb1f15c1a574eccfe287..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1317 zcmZuwZEO@p7(OJJW+hRo|4QS^`a0TGOfM2%ua4WczFO=)ZlV2omHqA_YhY@=XEox9Rn5`S%G-}il< zXP)<&*6!|(xEK?Glt_RrZ36aOMqCD2*(Vxcq{QOBjVw0{a1jNRuw2Ltm=;RV2#`ad z=QGQ5sRp_l+MBj?=3DZcd96e#^aGC(T&Ze6%mT+NkeqINxS!XTvit|(depTHV^ISo zI1DUShQ4Q8xC{g0djW% zGe#)yWM!KynO$r&`2A_j^gPoh$hT+=drlTuj`@Gh*P||Cm;o9@3SdES6c$3qr}3;n7&0|br%N)H z3`LS;1508G%aS3h8C@YnQDmG}>I55cIKB$Yut-4z?VcM2k_y^UzylzvAR%jVT2n;O z(%vm#go~uQtH850;GhyjCds7|QQ(IJO<%Qcw8md_U)kb$tG+~OpLER&2Z z%aCA2heWCVmU;YkUQ zYZ4w_z03#|3W#x%=D^~fq(Otf;7LZ4Bu!3LJsGqRk28NSgD7wW!TlVNvP6uj82}K7M_}z z7np*uW`9kj?eX(lBg;2Uw(UFEP;=vC`S>B#kMB5e{I}0r@?d6d;n}gH+Tlm*9`k4Z zoE_dZx%&IRFQ0hig)6iFoIQ8**8|T?uj_rIBkoJxR{fI`wb{3>PV88D>HVn{FaC9D{K)Bd zdM@1Amm7QS*oU|69X<7#pf{e~ GET /info/childprocess -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 7edfb7e0938d0c35 -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/childprocess/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/childprocess/GET/response deleted file mode 100644 index 026624314b654eeb55530c615043492cbdde1483..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3744 zcmZuwc|4T+9v-wH4n^r4l_?_2>@${e#(Heo%ARcRjMtdVW)^Ge6y+o-Dr-cyOeBiz zl_;{NkTQjuD2!}{BjUcCd%EX-KKHNp^Zvfe^ZcIY`PsU;9YA4_7&sPu0JQAN5gfNtiKm>6B28dv>c{CQ2ON6_cJ6bur z*xA@QLA3}j7s2MRcpzo9N`zyK;S5$FNFvi&ln|)?Pn7?zV6wPOT2Rmr4qTAJ=g@eO z2sVpOqeK$nfnX58r}Ge84h62o1?fRr#&9l$Lu3E*2p-JivAIMPYHb`uQUN{{338!M zUL+m-$Lx>BAn49qB$dUY(m{Yt<02_6hB2JRp#Hz+|K0jy2bBYa0X%@SI{V}B@7{mZ zjNz+j|8MbsSa5j&k4E{60wfa?l5nm2$E|P(J{J)Va(M_W5?}yPEG7`XMj6H7lOw4h zgNq2{GuT`d1hr<-s#Zwu`a}W-ZsX`CO93ds;F`Z2 z7M%!Z01*g)3X=5EdT=(M4B7a@U64tEb}}Ij)F>Jo3IzuY<*#0g27zG7f%*hA&Hxca zpnwRxVIY7Y1NvwL0Fd>A^a)rDNC8$y_)H#+0R&MKVKG1w2I?RKln{^!p;-I705m!mPQW8EhWbbh8u}85cs%Y0Njk`+@`52g z`UW^zfIVMa%v%gwZE%XwbQt{dQT(WPf5x2%TLokOFwnK|)v zosN{KO|L?`-qH@Yms)WODM@=8!_N!|Tjr%>Xf(=x?P2W+RHOZawDz(~gs{(yq8xAk zr*j3ADzBu^T46yZx8^l=Ba7Y3x0YaYM8ga{FuWh3F^O?NuwItNg;GB=yWC=mvkfZ< z3a1UkePg#hcU3=ez5h_zS#a~j$s=uvg_>oV`&r!_0~pygYE(bujE?R%2a{Nj8>kQC z&eO{-_lqBhGf7qxE*{SuO67fb#Z$Aq(>ierhwIFK4*4pKxJs<4Ont1KQ`cobJ@LI4 zb1YBA?vkqJ4!i)rm_$Ci@NuUff_AvC+bD8K(q-|8evXKxky#T`mBv3(^zL=TsgP^0 zgaU<~+R^cWj-oxM=fS<`JU$T71>j5Vgy-u**f2+>+r%a|pRKGhz_&QhSp_ zDt7xuXB}?=N|hU8neXvSXjDJUL-8Kx{>wujU6;=NhRB%xc-Hdzz4cE+@JJk<7k@$!}#0lfSM}Ha5sfQo30&v4REAwPuf8b8cmQ8 zbgsr=-Nf{pt1I}GNz)Gs$CpM^drKxgnW+9G6z_Vo-B>yHXk1yP`@iCTpBILOpE~ea z&fLE2MuP0;_hR_#8>Wqm_Mv`?p&1$CT$G(scTJtwMpTyMbf#I^^mx2o21UyD{Ei2v z@%C7%}JE;}-=vCq) zgTzxc$Tl6PV{femSEbs6z{ILc4o`DL-&}TZoI-?FT^V;C6)~&4uQ7V$KYHGDn+|Dz zSsYa8q>#8?+1+?pn~7>vnz;4c4fog)ZE$M$`7(^OY4f+7vlHq1@Is8-tYb4xLdVnU zs%Uw`(Wa_xKK`O|-{iMuLt`IOrPkF0rYX~h?$k7EAhp?uquIv?2enYBMydFHp1v>{ za^f#|Y}dzesi9e^pTv?Q9#MndT#Lmcu^{Qwi2>6_v3+QfO5SwMqS=nrD@~6P*OabF z+v0%%iMgKb%jb6e3L{qI@*i8hg5r{g!_k#5vy(wLLfegve|iP3=h)1S{LY_B@X^(* z%!~;$;EHmSn4B#)9mTlWEBGj z-`!7$74DqH%5_&Ok5)a+ z$x6$zi-38=eV7L*x!`ZLuPuUYTBJ|gVdU_lu5tJYfmhMwu37(i+W@wOCwhBd@9bt? zz&^1|L&Ll5O~u-m4-$|yo$VLVCQCa+ZSzG!RP@l2uA`yQq1laJmwCw9J2>UNYj1A% zotKmO!x^Mar+o($;Yrte9(|^Dnc{ax|9)HYk=;Os?t1etM78Nu-;hl{W<7BfX>-Jd zd?#58??*51>UPd~>em?<1@F{7ksHRGeF5-n8v3N~TGZE@qmTnqo)7Ko3&UAo!v>vZ zX(@Hb{1zE&4+e5;<8!_)#U8RZk)0lx&GtNb`MqwxQ-0Tb#Z+)GA_AL(=Jpdmpy(bWb zekx*D>=kKmmfNH?dzVhG*mZpuHZrsX#D}pwM!t0|C>g5OI<+=`3|KF`vRi9F+%$PB zy=wWRZ8jJxu2ECL+T0x4bWN50hoD7}C%N><{KAR-4PPEiX?jqb+EN-dW1~{cjL*)_ z@RUAj#CmW_ybd>_E`L`y%aZTG3z^w7Dv&7HR)1V|LlY;bG3(hSH<{Xwjf+E9 z=tV*iZHDGU_1{)reddU~^PSqsFWWS79eZY7G#4($NPUqgH*)ugJNK?r>w&m?sJkku z(fXrY9^D}R!nyp-7@68EN3r7f>?*&f{YPW(d;a#csn)opZ>hFLtBOC@|N5psP2jX) zbNB5FiAVRUrJKJiiEsyUlEPG;oBK4Zq^I9o#@|(Nyn`QyeZAK$vk-wh3C}7gO^B)t zRxZY-JNV_g>orcye5gVh=eBe|G3^hW$?u98dh4zaWHZLc)Xpq982vi$d$8(RQ%ZoWa z%#-RR7B7D~-BJc$cWAfj*!Qsf@79B=#fDPa7M;x*2T99`**CXoRs&RTC7iW;Ifx28>q?q a)@2VanZjVOl@%#iQm^`}9V#%G?7smBgtSQj diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/climate_control/GET/request b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/climate_control/GET/request deleted file mode 100644 index bf8ceaff0b..0000000000 --- a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/climate_control/GET/request +++ /dev/null @@ -1,7 +0,0 @@ -> GET /info/climate_control -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 6d5397ce7f8b26e0 -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/climate_control/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/climate_control/GET/response deleted file mode 100644 index 37b445903f13d178d6ba8f7efde7d1ba316400fa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1332 zcmZuwU1%It7+opUFhXgpU`y3rD_D@dvvX&5XLo1aYLML|HEC*+E+ru8o!L9H)68Gz z-br`!P%A|HAQlvT&^{=}Xv8WJYDK6&MDYi){#UFIRtjRNv=jw>Q0ljvW{uFNoxR_8 z&pF?B&K(#Z-<2UUL8_vlk^3bp3_g660#aJ=1i0mVdH|-#CA-5 zhQmm>VZaSE);C-k86E5&+zGWN=QxT(!K`-GK%|8Hu+GY+7g|$LU(NC#L=f`8we7A3 z&a5PMMGHrv=UOcsvnY%O4g;@cpgOZ@;t9-S3vJ`fv$vHHw_-P1eS{i9MBK<^I#5h@ zXyV9>L#JqYY}MUvqYd+O*$G3(V>EKPY=wRaxxRC)=KrI1F`SrAQ$geQ-R|K^@2Xk} zwb`x(d{qS(RJhi%1Xx)B>+E!Qr_yl3@d3sKR%PnbnJ}OSI+8PSVzwOSb6ijSh-ZMR zV^@1yE4Q77DS}S7!~}H=wAIelZJn^Zp0)LQf$1jGSs}|TooGs-Zkt;rj{+B1>Dn%< zgXvVHk&;I{XaE5sc|;T=ryJQk>K`7LENV4a$Ll!s4CK=$rVcCXN*YCp36^%9W`PBm z0cdb$+z0{^v;9eXEEh;rOHl|@6iiH_<17forjl2&MT)vgw4#z@O8ZI@2-k!hmAb>yRwE95RwmG4QfrC@z*3zYrLMJDBz!445lT##WSqzdE)4*X6ezPSQm+DjiNi}xUNG+hgC|=%)QZ!U`Whc`vh35e8 zZJNe`%Nr7G#6TJ;=Gr`MhdU2uim?b&&z)wVk+XQ3)v*bwUtTGANmNb2)zLmEcg_qn zFgU*Q2RB>+s@n6lR}zC!BwN(9Jkj*LoXr&rIW=7yQ_{5xkw6Fl_bm@pxoSkZ3PyV^ zJT^8Yb?5=SI)57*@>f1r%w0MA5!Y+>MirX4BRw$`QiiFEj{JF+Q~Z>M&De2s@l6< z8hY~l{LXuC-}Ke6xv=ltug0Jq$k}y2KD6uT=GyOz-+Ac^7q_o1<(3wDUw!bY`NJowi!W{3 duy%iC={@JRgV&`}SFWr{&HR1%?OFJi{ssL5*Cqe} diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/cocaine/GET/request b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/cocaine/GET/request deleted file mode 100644 index 74ef2885ea..0000000000 --- a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/cocaine/GET/request +++ /dev/null @@ -1,7 +0,0 @@ -> GET /info/cocaine -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 6d5397ce7f8b26e0 -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/cocaine/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/cocaine/GET/response deleted file mode 100644 index 0cd1786231265efdde94a516e26e59ef6d6d3423..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1974 zcmZuweNYtV9X?`!dDi1KkoJ`^;72D7{O-rmaI-m<#~ z9F>VJ3VtEUBw7t98X`{ABsOTF0?`;LHhMG`ArwCw6e~eT1SABJzIR4qXY$9*&i%fg z=lA@cH!&k4O@pa1M5omvsYy!O&C7t7QQ0d10+B(XtPwbp+ZBVbF6O6-|9|S_3`QjLNtqP=y_3PG zwa?^Y5I@>a4gP_JB$F~rKcN6+;-Q3r>dCG2s7FEzfFz?jHR&RY+&ozjpsW!+l$QZ6 z3AKA%f~0{^ffM=FdfLr6DVYycD}hWh1QO*SDV)+%deUyvoAdw!G-byOT077hXo|!@ zl#(MM7Cay8V1b=LlHI%t(V38BQiP_#Oo&!b;3fjoAqmMDN}8mdAaGyN%@K%;EJR5L zSdCg0B6uix#>wjfo`y4d$bl(h1!xKprq z8%-32n+-aPzs1ALtP2`dtJZ1_CZj**AtAg=fGScP%-G_radrl%Xs76Q0V@V8D3Z0$pM~`odjah;!2XH0d$&3@(h56r@S(dly*{v zAn_s#H8CTx!c$EwgiZ%#322hflJE(@HlGA$}J_{@$k()C&Q8PoT8KM;eOmbI(B{H(Ez(Qs@Oop7@9TqG3d7SHYdSr9?I+(N3Q`=BdA6vc;@{#Y^k{Qw z(y=l7g6)6I!sVN%xs$d1TQAM8sa@9}ePi{ky7L9zh56QRKmBI#Zc~X|-O*YX0(Jzk zeAk-pPhHNvXx7{fkFIWP8eA3=9)@?l*V~Kbmd-0YDxPa-Uhi7%sC;Mp_=~`$V)!QH5_$!%ux?Wws)z``T@|3d| z_s-hw-Sn{g#OA|w9bE^D_Gzv26MQB8Uj?OoW}5bG*w>-2WVN*nwq0dD)K^@6e#XTI zHL9fUW92WXep|dTwq!W?yXKdrEjB8AnRa*Bf9@E5k?WdT`rQ1*^g3U}#m1xD*;&Pz zFI|F=3#UJhUU@K0$XlD8ce$;le)_}4&dUcPu7CEtVeX!jXKrn)B4;YpN2{ve9Q)$b zL(S-|e}3|2@#v#Fts|SqLKaU9JzoC8<7$3uYS@C;B6AL`J37{P0o}aNHap|?JZa#) zO-paqZuO2>-ll!yA5?1EJ5nl&!{=_0jf*r5^}2U=g)KdW*_0=I?e}zRhWq)Pou=e! zc}Vwq`hH#S(kwK>{|L5j>PRKLduA_CX0`pdjmy|_XvfD(vkhT0 z=ajkjg@-w-vkN=S-ps)A*o$!$2kw}F?F) GET /info/coercible -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 53c83f3e5793993c -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/coercible/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/coercible/GET/response deleted file mode 100644 index 91b3a0aa078cd2b084193bfb94e9b4b832a7ad25..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1406 zcmZuwYiJx*7+sS}!!)!3h1wSBwP_6K&hE_a%swVfY``Q+ExSBSYn!jN|h8#ef`jCLQAQn1{xnkgoy7*(xl$qG;4(Z8s>hF zbG~!FZ%13(?w}YDK}Zll%VV7C*c926r&$*%fTC_1bWLd3H9*ZkOc1U0Xqu04-FzBD z3-OLi4aX)5NY*DBT3VZ%njdGeZbEn$I~1w;r~b$a=+3EX$is*x@lcSXnk>X6O;qzG zo=pvlEv*m`1SuAevNsPhc*|ufrc4%TZm4b0bmUhv*s)Np$TCt;?Lam|X*|#h4U+&_ z3W%{tKorS3OHEjxXnk(d`FIcv)5O8e0EuH0&8<7j$ItJ)_%OFBQF?u{ukKL4Iiu0b?%H4P{|$e5{6=r-*jtOg|NVW> zh1!KD>#kgUz0x^3GB7fG{o1@Yn0?|{-Nc2P`{ur!nVua)Lu>k~NpX(tU3qeG31ht>2S)Ba&(FAAkDf z*3ZBsS+}9}o^#KyzB%&C#yz>wfxot28X!ORe*WrLqr2AT;(Z&pS5-drUi_0)mRvG4 zeC5F0A1{+boBuTS&GfF;pZj9*cj|J;f8cedSY4p-&SnTZF! z+h%o+b(e2CyE`}c(a`+FvFV>)x^%j2Q$=p<+cjly{oYeA49->z?Js*|;Vz%=)~!-s N{c!&&T;lU_{{p0{2FU;b diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/coffee-rails/GET/request b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/coffee-rails/GET/request deleted file mode 100644 index 36bd99f974..0000000000 --- a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/coffee-rails/GET/request +++ /dev/null @@ -1,7 +0,0 @@ -> GET /info/coffee-rails -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 7edfb7e0938d0c35 -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/coffee-rails/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/coffee-rails/GET/response deleted file mode 100644 index 98413d244aacb6a3aa0ee9b6794570eebdf51b90..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1936 zcmZuweN+_n8eYJgy4MOXo+tzzw){A>vpcgNv%_qAkZ!w(gd)2@nh3MAzug^~omppQ z`4Df3H$<;dx0~oej-rR_rHiE*sdX|970eGVV0@%tR(ds21oV=X68&~f@}ARQbLRJc zJkR?)?>pb&$k5^%9MNGIvM5c-2)qn<8I?=?fI?(YENlH7&GKf1@zSCMWJ^GHqolGJ zb&IqQpn_j!1zw^MdvdyUQD$mN>OvSRmL$|K3Nm1VQ3}D$h)-|Jxq!w5bz!umYFm;C=-$9s50x{#J>F<3kP z_#pS8m>CJ8{a)i=Sx7Q1v&?-8P$nKq7|I@>N{P_MIp*sG2krm z0H1`q0zSW_g-{`jf@(de_IRB#AIeq&nf6eK%0OU%APqRFXRt(_%V{D=fEjVxND>T9 zyA3KOM?)-VAM0j;i$c-`UXAEXNIEUTrNK=Irl$-h%8-bpq&t)h&3Hk`Us2#F#77sS zv?+K$ApDr=#>lNRvXAh9>}TtdJIYR`M#LA{3NRPX=*<4u_7U002Kq zb8I1i93>zY0yr<+`umbXFL9loL~WVLFdTZLkol>O2S2Enl_9I(d_hS>c#*gvQLi`Q zdZS505SY%SQ)k;Tb+#2#LL#tn^8JCVzZ#*oL8G}6)NX%K8G?sBGT}<4z?ISnqDQHm zxp9&LZ2a;iMZ}@3UY@Z=u5Qb@yrKSh|MqLwsyF11?b;hzK5Owms^&ev+U%3|wY#GS zRq;n+e|$YR%aYY~@ZiCm(KQpv=X%TbG%p{V`Rb}am40-0;KE3rcBo~B{%Jn%#*aT= z8@YL*sAr)4G5>A#outEGoj9HJ_>t!>}7H}_3{n+10kRkp4F`nop0^k1C?wtYRz!#MN2 zmU*pRk9?cGB92JVzldLbBI=ROf*b1Do2S**T)($;!O7Sijd#ie%{uq7UA{-N;#97* z<^!I^EjLS-Mh(T`6^mEYFUt670r7JFAhBMNZ;We?B8FcAds}AYpWXa)O=or2WObvh z>Wi!4oEUy$V^iB_yMO-A3&%@sgK?)+WeXCgtpA`dce%EvvF%D(7;3$vs^2+sn~p&lG$THBqW%wzq3Hjp9_X zVeT2*KW8+usnd|y!>6Y1?3kX`9lxo%FZaNf${PC*PsSELFGSbXmR+6y&IaeTzS5Z! z-^)r|S9-nWxFMrriJ>pYs#>#RsB@o?-N5B_Tx=RE8os#v&4|_Zi?y%HZk=s#=^M9i zZoKkc`=cM9J@?idJ$c#DeU3f(SDreMyl}(*a{lNSNei1M|M$pS2_pw~*$nKaq;n1J zpL?hN5VPl8gzZ8`HG@6V%5IDO-h0}y?bh*c(k4plgp(bKFORrp;jcNi&hHFdo-nIF zSsxaURj+$(e^*IXWa*B*fkWHU{`R$fXzrfwxH|vpk)}V8(ddAWuU-qz-fDiKGe7>_ ztw%Gq7NFa!dZX@v{^6n9(rpeO764aeQczt(%BYyMt5WzM3OYH~+vmu;X@ zIe7l)ca4*lWll~BAMk}sU5CNHotMy#Pd5)Yv>f{&H+$;iPj&29HN-4!UQ(IcM5jMl zh15rtot`~JlvOq+6z24pudl_~+cBBbtI8_M&5pa>3tQj$cG7#X`fg GET /info/coffee-script-source -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 7edfb7e0938d0c35 -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/coffee-script-source/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/coffee-script-source/GET/response deleted file mode 100644 index ed9e9eeb98a3476cbb8c77580ea73279b67b10e2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2383 zcmZuwc~lek8jWmXR1lXQM1&C#s?CI~goH)$u!=sE0Ih<+WHMPGnHgp#kci7ESVa*L z9uzE~h!lOIh*nSp1(B-s=>r!))W@Pl+>45cp!Q9$wf3C%S0=yj``zz;_ugM{M8qn0 zE}IMRI2<4>lnG-fg`gBj8E`}bP>7y#$2E`|^#WiOM34yOqoWj{CsPk92uO>77*44% zl#~Eczm)-D;UPgG|DbDnk_2%AqY&6wl>l5XK#R!{ADIS&6Y2WrQ~rWLF%nfP6rVVd z2&^O2lmWysjT$z91cGA(1!AbiAOYlv0@7(HkR)KhjYKpGH!pyM2{r!t5ulxIKyPp~r^!_AUiD60&0^w?s4P#m_K&@5&zvjQAe!@@^P%=b8 z#K*fv#EHv)a`|HfNkNnv{@6q7fzn$2t&QY^IucAlNDAb!AuY5XL!p!jKJJ80W>6wp z5|rz-IO*=iL?}op0i1Yz4o?or`FtMC5%T4T5b~740*EJ;Lx_h+D0X6MAR3OgLak6E zatRPfs96Bl1Mo*+Iso(sS0E7zC44auv@(JTL$C^&@QT1R54kO=#&xBwYp`$`Ts1l*mD>G0C$&^DB zJ!L`^o+sdk6Gl-)07oq0@g#iFgeb{sh=!maOfp2EYEs3dC7};^o*d&Kql*)XPec$L zgf!}8geFNML^2`=Wpr#mYD&KyE|13r1H=93^2C`02o8z(^AD&}Q#32%f<{dU`gw5$ zVm@EQ^{YMQr8&Mz^DG>715q|HGK`rY#m0KiOSDt$H7sNzqj`zDh{MdN0@x#8&$sfiWe;;pi3`y#|elBq1&vlhw_oa0Ees#%v z>XIWTsWtmbYRgrZX85qqjA9{Uxm4tutZfDE3n4Yw{VFf=b$N%VbNbx9(Wm0dQU_}~ z`n`G1OLAXD-v7Zb??hDbyz`Yi%D;%qQ@M2|r0rGgZP#u%<^picpkInU)*5j5AzPTsi#=tf3>)J-;;g2 z-n#6cE(fHUFAA#edZ9f-hlI(4t}ZsjG3NuvV}8`X-V>;#tmmdWB{^RkH@JrlY7Ges zUQgfClbJIjz0&}E>F&22U1%HUO0>@&SXZgk4QZx4nA*P(bn!BI?^jl^`r&ZQBjcu% zr^SVO_c=&+-Sf3C^J>|;ucsM_N!2_|W&sf=6CT-7rRP)wWvIGpvo^G^S=9~89zew$HgA?^aXI|Lw zl97FI?%ooyzhwH&wWHF@y!um<`6i4%)!;me6tq>1ff9* zXm45*FzvamZEf(F<)##awnnA`4C2i0dTmNU{E$BOGRHO%Z`Oo!CtfcM~ z@w91Irq#&OT}rke{i(uw+50LV>i(X9fTe>$Lw7ESIkOHarDSKFsdQ3v+=k{I$J5L9 z%}>vJGG8BQ(orbyaeLpav>dB!?jJRASUfC$X^!Wr#{Cy=d|@5EEe~jTo}X^U%86z! zUNjbv-M8t6>x^X#Kht@P?vm1V_N)f|p|ooOKC1H1}*wX#(2+}%*C@Qs-% z-%Y9A z>G*h&@4p{*FaE9LuIY}_(wx^B0*iql$ioc2Txb{bHLhHm)wKIUD>12VW|*h#h`gw$ zGOx`p?E5(@T3RWYt~vPj`fT0SM0-Y}X>sz@B8&0ows=Ynne{gMMMpu_GgHaJ$57nT z`PdZ^+u37E%jT$!zg^4^QN1B6?R*@(A-|i)vz;34Zj^FXEbi5u=B~3o<%W-YR#ApI oU9;|DU(OnO2~fC2#^hziP|)Ug<_yN~znd})#ZSZ8Oa_DbKcX_|>Hq)$ diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/coffee-script/GET/request b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/coffee-script/GET/request deleted file mode 100644 index 0ba65c484f..0000000000 --- a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/coffee-script/GET/request +++ /dev/null @@ -1,7 +0,0 @@ -> GET /info/coffee-script -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 7edfb7e0938d0c35 -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/coffee-script/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/coffee-script/GET/response deleted file mode 100644 index 66de298d3426ed4a9508419e3234bce0a792a1bb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2267 zcmZuwc~}$o7L6M0Nrn&ts8Lx2q6id0u`)>}$w)F2XC^=pQBhH< zxO|H6WU~cvsk@>gDxk6mb*mt_R7Bc>f`S5y1)&30pZ&h~*UbFxz2}@c_xu9F!$aJ- z94^3vAYf4tTSnkCiqjyi*PY3ND8HWbhH8#vJ*fBiD*!e(9#%z zQz9TtEb(0wy1;+ILZ+5LQJ|J2XjC>*6#-l?Ktsq;AE}y<#WM9TS^fus6BLdq6rVLv zs7yywzFYD}gFNmNUaG)UlTy$Fz_3Ph)-L5h?C&J?OvIC}w0xj zw^1mRqeOH{4oWedv|f#VG5fhu!TdkPQ4)kwjUrl%;>ZY%7l3J$|F8LEe#1aWlula{|JC>o(L*~cEn51jGpA8iyL)KOqOO3@&XgJ_UM0!QLU^|+Bbsa}a{ zC{V7`Xel=@HcBH(5#T6=P*1sx&sTT|Jf(a-1jC+)y8wY89`h&zH%k%DpQe!2KC`G9a2OVi{cE6 z--=KKQ&WID%;5?J94^E>-9<3W|146C;!0Y@gpmge*@#SrGEpHBT!}L2mFj7fV#^Vl zVeum|#uOnS)_yX@Q^ezm_<~VW;xL4PU@lA?LgE;uVl$SA06q-!Muj~l#P*}7%-!Mg_z>t9DrU-~XCfeALHMT+P=(Qqsu5d8JRzCu#f3fj zd=D<)-Gk%F6~F@6H6jdhjqruoj1UG`{PBl;|K5bFAG2w-9t;Z$W{=V{7@nDA<1Le^c*G!bYG=cNW3cy~Wr)6+1$ zY>e3f@xM;XR=@gvpufMLmt5#jJz+SlEMl;=gBTvfHk@1CL(8c|7|Cw`j{rnY!MmfZo%$|LR z4&W`BrCs8iPkueBJTWb<*FGu#7L0oQuLr-^0>gAL-&dsVNNbdPIX^<2>u{jH?KdeYbOEnlof{ZfuM0gD))H8|B^}Q1eZ;PrqLlsjdiE z8rt6XVAg;>*ZHZJK!#H1-o^&Tl!BGFUtIF+Nqm?~x8}H9TX<{#jqGU~?uFKMF5A@A zWSik7m#^P*;9>2()tv#et?y^q3`-xGk#*j?C9xap5=~Ldn3t?|vg?^^ z#IsxZdehB+XT4dqy$Q(mcID19KEA*8H_L8I!PkpY3lU8Od)=$CKUZ%WD}T-!+~)-S zXZ)mzRWlxmQ~xxk{L9~)W|yqb!3%eo|L$;(C%m3zIoG&6%P4tn%%n$oPOHC)NVz#F zdrKYTh)w1-((P{T1;fgx!$GXXg}o>Ij@jQIvN%|vn9b77Ndn&bz8q=uy0a#*_gE6R zO1}`_L%mxUeX3oiO8?=z!Xu{hggpj}!)ud1n05Ar)fq}E;NbYCfZj{NHb+w2uBM)B zrZC*sYT1@P@z`b;xm|yf<5OjIoPkyH2m6_>Cu=oJ%$&R)Sf-dlM+(M8Ut6@)DBQrt z0}F1tWtBX0TYl+Jv#wORtsQ7Q;jm)u(96t2`9p8o9ICQ2n!Qf8mTo9$pX=@VpfK%X ziBCpMuG0?ZE`@r`p=mSPSrWm{v@335>8pMggiqb9P3oLmbm`B8{Fd}HS|spZaUg1(Q3q^u2sv^X})x z){n27+muR0<(3Jm$oZ^DTg{8&1Gby%FB+45k0;(L`lI5vn(Jlf56*5Va~T@yTYEY$ zAX?&(8f0Oo8bAHIRP GET /info/colorize -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 7edfb7e0938d0c35 -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/colorize/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/colorize/GET/response deleted file mode 100644 index b1d7d61044e235bc66c96c151d3d8f7e91f92488..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1784 zcmZuwX>b!|7|u{An2NQ6DEC@~c7|-Sn@vcvy@>RRB?a3Q5U}OT=G$cLW;g6^lBN{o z5Ct5{NT)I&hfqLhg>nucAXSEzn?b<>70PL$f&+3>1iu8RIODIK{odnw-sgGWY=>i{ zj?|Kvo*=LhIci1}6euXT67oSBQ(%dr^YMTak}$>tBpE6xeuc%&>JprlfEVJTPvJyC zrm=jhJ!3?kEz6dRVkNSS`y^3;OgKtoWD@2TT`A2cfLsdM)sRQc(cG2xXn*cZS^1E8{M|*C*=`RK%jN zS}&^I9;YHivei%lZW@cX7zhdwCe~@DShK-NnT;kF$(n)7La;`c(-g1f0m4G|aV!U2 zG-ekC4W>6?b|9gpAx#)T(UgVO>#;1mL(Krj10()QB2QypP=W(DOc_FGFrVLvY;1QI z3JmHgAP(+Q&WDylf)oAWu{Z<*%z$-SECg;ONfI{VQbq#3`2m9W`jCoF9z|>!DH$#|)G!`N^um;Il@l<NP`+M3`CnI0l^K?!aG9>l+`YvAdpOnLzz_%A zyd?E{Bc7ROMd8RBjb+;$FMeMNWBN z)2kURg&AU9*V!u{kms+@yx2K;GH=h2_NSBGxq6;xMxD`O5e#^lETRZuamyCe2y+2co>r#!xQ zoB8CYgvYUIIfnzi3WKK$@0B{cRrWhHroo)v@?*^Bw--Ge_`}(fhlR)I#x8EIzG2_F zZ|0`js?w_|Sp~LDE9T#PeUa+=p(%Yv^*>d=U=%j^tJI;PDB6}Fl%FyUY5sZ1DQv=# zUCw3ojkAYox4$@t_5{lr??P6mQbto2e&VAD!JY zuV(W?2pePe7eyPc{o<;P+jgX2p5{Ww*1f@LR^HlBeHodSXZ@nepAJo!2_e#ue+Am zbv+hroA!2ICnm1rjZpu6_^pb-sw(Z>!uWTIKu$&57i?6G8YC6CB{jLgXwEd{=TcvgK)I0lz zowIh>y5+`p@J-Q$iX5gk>DHtPxyyB(j(?q*R{P=L_+fXR>XXH~k<)wbAG^6nW7~ss z-7c-z$y$rsqCHXFPw$#Ae%Wltt)(Zfz}_i!_w7Ax4OiCO3Z&179>1GS<+CU4=~3ky zIO5AbTLxV<^o92m=jhiZqdeQvqK0E7A5iq=p&f0DKg;>9?r8NH{d8^aK%*`>6xXOa zTiCDlt=LzXRrg0uZCshQfX&JrS5cMUJ2!YCzwC|dro>~Vw^ikB!GyHBU~IznH_vCa zWH GET /info/concurrent-ruby -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 7edfb7e0938d0c35 -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/concurrent-ruby/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/concurrent-ruby/GET/response deleted file mode 100644 index 6c17777a184edd72d8fd4e721701b5dddda3eaf7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5792 zcmYk4bzGBg+r~kpMhPe#Ly>X=#zu{fk)x4D7-NGGBQ_8zr9-;g04eDbL1{rkLJ>qn zN+cwtL5X+2=Xsy!egC>X_jTT%<2cUmap{&T@qsr6 z4kTg%h!Wl&C>&k^h;~K!5->z1KOz<^2M7RTeNmnmu$MOx=Y=Q0fo5t32qRNnZCyjs zEPy}&d;5A3G3bA$a3Dkh=;`H*QF8L|Lc5dZ|KH{RB=BAYJPwNmV2CIeIPj*kq%_(I z1CvLi(Xvo^Svh$uM%EcC1(k%#W8`JzAU6RXC;|~o62@V17-v!hKRgI1B?HvLIFZ(Y z$O0jKCnFA#B%RW57!3N~kRBMk3(*x0l$Mm02cXbsj5iVNi^98LNL@HR zAYuprXB3g-qUDPtL6HNhdHenw3W39>*)0!Tqf!fO9s2=Tv7fV4vRT4yU_cm^*Dx!{{o>rq>tGl4ReHx9AZ1xBc^{l{(^e6n8MJ6$DCG3w$ zheBs)!{x=U#FKs_e&tK}v#g&ZqnPH2D`i$_5$RuX1-D~-h%;Oo zh@&CBqdlBxvcO*R$!^@qvno!_EWVdK3$*K+)-juft%9}85w7tw{x-K(x}@%JRaSi9 zZCIOLDswsFpXF#DZn}w)R&W#CFOd(d^e;&{lxwg~P}8n;p)AaMuf>6@Icz>Tt=JzE zcK@hcHTpUKpg3#;4zX@ZM^Er%r}|`}q+e|*NPs8J4Lz5|LIc{1Kk}z$YL|t2{PeRi zQhT2G8cL01$*SQv6pZ)$$vdsfQno!AQ-n-PinM(ytA8eL+&J-|yvF3XsZyQ+VBhrf zJ67>K{_VRojYJ&S?dez7!p^&B9^yCfcz$y*yU3^dX9s$^{Kcp#5sd8?;!M^9=T6P zdu`<81aljlpej%+E^76hMZv}Td9xIT5G{l2QD)oMj8vOQc{4S(73R=%XsFR!Rff}z zcHQq{vvknfkB`}ht`07av_a#H=Mzo$PT$|0YTaBsX^;Ls&HnmBzHW*o53=6QlwRM0 z=5VbbBw2S6G7Wp74jq6km4CL$ml=IIz#E^q-ZQ8^YThca_;7Ty0_N|&`IPmUfcTGa zfK!JwU(UUfYlR!Av1^1({C6^x*Ilk};}yQwJQOlLtrnZc-isgyr7Kr??zSr#J182r z*c5-)N}oFhN#)4hiL1LV+Gqn7pq~u|>Ql{lzMtT@4P||U+utz=q87rHwpmt)O0~bJ zhS)wP&zvXsQ3&!9j_IbQF$lidFct6mR0cbddQkjq`Ko9bL@pc~&KMdRpcs3y z+c+3=$#V(azJV%(5*)*6+^($`XI24I6kn9FtXe7mX1s>fl2?o1bhUnrY(E$i`@2ye zLVI?crhIm`T&8jf{$2)NBM;+tQ#9d*rGQH)fGrOiCe10g6htPLVioA3AOlwP{HFO@ zLE2{)%4Y}5We%62?1dH*!rkgG-4186QYyND@!a82IeOKs%y?w7B5nNmxmA70W;_T3@duijXgpfwj6aa}B^|S9C0+cT-FL)F95{#H^P0 z=R?m9)ONJ*+rI8L*yj;$MvOrH7Tef*n{AvM_5I^Sd(3&J<9*ktcs_|lKM6d(c`sXC z;@ok3k3Kq*MZwZGHfk!ALp3}+jIphvt64jNcKfq0s4&c~==|Wywi6$M!0pCs`mX%Y zy7y5Fyq6zn%o5@6#KX~BM=v@=;Q30C-NGL9P^PqF`wu0vuGQzQncX8{d}j>;c>y;*C9NmTvkK!d*b!U^@GV5SsGcMxp!<*OhZ5`}f0Y+wZmS z1`9-;SSA(hi4Dz!8?~XY{ARzP&d`c{E01cl*8sVyaB=S|EIAOB8fB&%N=`k=&~vo> zZCcLX*ww>x(^L``6S}Kci3JuiA8SO}L&oYI?uTsmLS8|g(2ePVeG|z#hCX7{OjMqn z0Z|WZmRb@@(4p55BhwG4jCYnhCk}JvZ&|^AEtAP2o04wm)~L9w>%8l+D3>rW)N|Ij znUEI<2gJ!J&Ur7o+cUXy-7d`N4%ax^-AJG~@#Drk;t8Ahu6XB6XZ@YsS^U$)MB#X& zu|L1D({#~=A126@Bfc3VzFucUEiv(jODZ;edA1RZ)G_suV6*0Vj5Ly15XX}9XcDqRwBPn0fycI}LoI$ZqkZK(lS<`J7;*H^jwOMeC3=C`FlRF@3Qt?LXqqdbMPK_z0gHDwINm%gh-r zW{=HGsPg7Pf92$HH-GI(8%of77bWI#M(7xsK6iF`I-As1cO4#*g63GS3m;ZB4Leym z?q$d^c&mQcAz+w(iK%UNP`n6py2DDOn+j#D%=`HKVGv)TPXkXnA;Ym+|B;v;OKAQ) zDk}DHM~MvtOg1>+*@?JNRz4S7n2+{XrV}0gqLW zc{V@}5dW&Sa;eCyHey?ovUEg;Oat!6g0}cZ{YkJHene%7+wZ_?Jbg~zBd|naGN|Uj zx^F*TyYu-;zbf`+-3IK|LHYO)9|Ik8F0%{S?x>Kfo6tmiI;P+c&V2Z@bRT8ry#YpM zTPdEXlo6qrqO3MOK)62{CZy6a+YBjIaXm$TdM0`viy9rs40yZL^{W+zP>!M2OYOM_ z`EDr6Qod9V3I5o7HBMI;*PpRZJ*29)3V4t;-0GES>S^^o?xm1X*(08ejsxklugR=6 zYXlIaN6pxC>}4X#c-A&WP2 zN!pTOM;Iih>p}33+9#^W3o%jtt0|j12G6btIKPpT=SS_JKHqWA~o@ z_GzN=4WFh!7UkQVFx0JP0fj5SV-|v9+Xt2;FkxyUN(!>jTvL~Wdy#I*O>f+aLRSG( zC?lgL#2vP;&U<%4{5v^%Bl3A3ZpGYD&mZeHt?ov)sor!7wx`E?WzeNJVW>94PP_2_ zpY%Kc4O2ssk1iTV0Dh^}BeXhpys;=+Cg#7~8`EpV*!d){6zrJ6IW&@N?GPIHZef98 zL9}vUzBZG}$u$pE9C9d~WM46w{r)(1U7||wm|a21!1cY;=1^q+A`kLL-#v8&YtwQ= zX7}5}0S?)HiDXK=2jA_e?3z344rI&S1#RjXY1o3oC+4*u(}b_e)#pB6Q;C{s%AgHx zm=msH>%1Bg($D(G{Q{q4Ba&sSd+}3orG>XUXR)B}WLQ#F=tyY!BnaL4G5lZ*YWd~- zITmrIUJ$jX7xPs%_GW(PO5t3scd8#F857l#SLjkx{gnI0UCKFhu>0gI+ojRh zVGR&%4_>XeT9D5C$7d;2j`^H!xzV=xb^W5|4;Qh8=giBy-BIFLmgtt>T?BLa?yi~V z0}gISaL%wWJN33cT^QW2$yM{A2Jyyn2VfaQ&#jT@E~XUDdBMP5#unLf#NK(*Zz_!I zVuldUukg)uEhK99?`d^lK}wmo;@UUyiF2S%$1v7&cSf*+Bb$rIg%U*(Du)hWkZYKp z&@DFqX5sYK-ecR_u<6vW4TH+omKNq}T-Q5LkgsNzwnc0!;)^g22Xa#gb*-ES9nVK} z1mFhxDsPo3YgZYJGmMnTWLVqI7jEBcS(qGOb*9Y$&wf6`OsB-p1}U#m3~;HMB$VbZ z;EIXh~uIZxMd^yFG!^=zY?9Lhqwjb2iff+T+u+i44UNAj9Lu^unu`O&)^ZHgR7qp^<(0 zz8Q(bpeok4GUn~4kN=&^3pdE3#IKpqd4N(TZB^lwEy;#YwtMM2yB8H?C8=e>(saFS` zKK>|or%K*zDVaBeW8V<$S6&giuYAgO8rpC85VlIKiT**A2T!q5r8r$TZdM8Wlr_S< z7dJw!l2uHX-!bH_?Gtp?+nnYX*{9GJDaWcbf2EEwxxx&8#IEAOz~)@XQ=1Ta1~9bF z{%{mnvhk8Bi7<#5*1350TuhuY{bkOZ*?fQJm7@)ucxQIf5g9#OudS`RPuGqm8M&8u}@ck=Oc9Qs^{+_?z#&&a>oGaRw1}$A`$netlG#eJ@J$kgLMNZb+_dlvjaTM)gPJ$3m9#<~tEhBRX8C z?04!+1VhC49!oH!z&b1460gy<%7-&jy3?B%o16u*i#vX5?OS-V5;hc6Xb!pZw-U&A z^dlGC{QBU8yIAicsaeZDIZoXy&d?lOUq2|Muw4p>dE&}*5!?~$qmm_~r1l~+Qq3ui zA|buOhN!#lxcU@FyB5vlGq>W*rphb%VXL5e`jwu?PA;%ggF}fMj}n^g zsy}$m-#0OMs?DB2H-Nd7Tnck-+x!qz*iUOLk2g(+&a7{)Pv*!{gicg*n#Hhc`nk?? z;ZE+3MSkzHO=ka5} GET /info/configuration -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 7edfb7e0938d0c35 -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/configuration/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/configuration/GET/response deleted file mode 100644 index 73d55c025776ab3547d8db16d06227e30c97742f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1438 zcmZuwYitx%7+pXRrbcRgRBalsB|w5Zvokxhui0*;Ke}x#YinN-3Dmo@cW1|)mos;_ z-4Y@Jx=IjjNiZrR5~JlI#26YR)?t*uQij^TitWkF*DB^f$KI;L^PL?Xbb3%g7eDtZt|324~}hf+9B`>8HEZb1#v zhKUtJw?)uW9jR$-uCJ|soaDM}n>H;2BPpL10T%?C5ksMAS8EG~hOKGO<3Q`C| zSp*dxzYyb5ob$#592e&}e~kC>0%AEI&qL^oRZuDt+&&P27BK+l z11vA{ev$Ko+DI!UK`DU>yRr;b1RCt3p^QRa)(Om1l&oZWQ%IKxrcOA>-HJ&TY@ugU zdFBck0wurX;k{lOdOZPJV1)o35IBjJ*r>okUhoQ%H{X)dv7!;vu?)+SV1UF@kc`(% zB2-i*nfjVgO-x2kDPb8J3UQ<&3Z*2{$&_$MGgMR?cm#&?dl`-;e~%~#{4_}w=`v1; zKyb4Zlq5u)VnJO-#JtfAMm80Lm<$P93em(5s?8gk1Vp!6RWFd z=!Aj^D<3)MC9%ls;)DRt`#9d?WBdXy@SL-~g>|;quoNLefUBo2RC9e1&M;ZDnxR`- zmQjWA1f!X_rk1#dF)W#)9@;e5v1H?kCmpj|w*>az!`_kotCM2J!k4%B&w5w&Y}i#? z{`@d6TwT&%_wnSWN6D9yLgz+C|9Il^)!%n?j6RTF5dZVc5vFHlYj^4J2Lmr&oU?r_ z{MdQ?_RPv(%2ItLxuQeH(D6mbfBk4)I`=84dZF!T@z57r&+NjRFO{4-zL&`!*!ciNBXWh5B_+{v3_;= p*XtkYJbi8*y|H$(H&HqNU~$zyGaQa<*Je2$-gS8S4>KJO>R*sI8IS+~ diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/coveralls/GET/request b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/coveralls/GET/request deleted file mode 100644 index 93909670ed..0000000000 --- a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/coveralls/GET/request +++ /dev/null @@ -1,7 +0,0 @@ -> GET /info/coveralls -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 7edfb7e0938d0c35 -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/coveralls/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/coveralls/GET/response deleted file mode 100644 index 3f36dd42a56e179475140cbe039bbc4049014a67..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3648 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 diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/crass/GET/request b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/crass/GET/request deleted file mode 100644 index 483bd7dc80..0000000000 --- a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/crass/GET/request +++ /dev/null @@ -1,7 +0,0 @@ -> GET /info/crass -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 7edfb7e0938d0c35 -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/crass/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/crass/GET/response deleted file mode 100644 index 10da702e1bc83c5772b439671ed1dcc1ef6e5f44..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1418 zcmZuwTWl0n7~WbXFhP_Dz*4l+f-Mg_yE8j8dzo$1G-kIKXji&xDG~!`X3oxzJGai9 z-F695FH!2H3Kat;6p$FAF+kCJA%@yEpotHSO0*_I(nw$s@ZpyGu)J!Rj>vvE255h1V zLro?ZI5<$s*ec3VmZ_;yjP#l!Pl?u>8{K&mv?gY_`5R`;|yER}JnZs;J&=K(s{VH%*j$j57E#GC?khmte8 z<#@vcL_iV9s({RgIED>Ezbpoz7$~fKJcRxblqH!Ls|XEXIBbQQRG}=8t)}57eF3r+ z*f;=8fTTHrW(9^N8(R~E1f&!!dS#oMKRYA0K@VDPYAmjpxqsD{6%O26T!d@a~F!-F~S|iMr%1L z9^Xh5$776koSH_Q8joo!1X1z&VpqvqKX|&7^r;r@k?V%({Fztb)SBC>qFKq*Ncm{ zUt9g@=GZ1Dy|O~E_7BAdzo~v8J>&oB)JlGJ(@fWz$?&yZPb_b1`TLPQyUP!b43CNv zZ6&8#)*PCkZ#0)n)0gV|Hb*}^w}0Eozw(!Vnap?n!ylfwRk0HupWZk0W7$iob8RO# z_ANUYzI}X2{ZTI4fBpa$8C)T~+;_F+=9kZ1U-!e6;aAwnuF2?hy!$nC!0*}|S- GET /info/cucumber-core -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 7edfb7e0938d0c35 -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/cucumber-core/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/cucumber-core/GET/response deleted file mode 100644 index 46bf1cd117f2749cb7df83017e3bece80f371d61..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1868 zcmZuwdsGv57EZM+c2K)MTH4xfr&y)CWx`}83CTdz)Ds@1zzXcL6w-Dw`6U^c%nUOV zl5`cZT{+#VX!qEPv_2Np!VxRFKO zm;v!&4vBUHOb``T;AINUF=tq^veQ!1GGWXo%a|w$3SdG}3e_Z{Zov*rHcnuQVf_9s zKSS_>%(D*1BnKHV9*I@_m?&^8D56Zo$A_VS+DUtyY9PZ*#m|BJY9|vNaDG|s6a*&+XpxoGjNnd0S-11ol7ERh ziQ$y!Qd*&(GU)< zf_1RKPNB&X8;9Zqngc{=0F53c2uedzB!Q-6)xLTlHNjNP7K zvx88HhgVoPG##$Sah;AZ!Z!~M+q*?5l#PRtG>ge%cY-*^B?)d|(!dNG%@hMZG|H>l zG|S1TPOH`!^lA+bzdA~*B_~O8fOje`3N`3(gk~53og&e^6F~FY{0fi}JFUPbVND1F zY8IuCCJ88Rq@XOMKCDS8OG7)udnu(Qo|Rn)RD?oFJ*0bYiDAPR10Z5F$CidBlYvwU z?3fL@_O7JxbTkBM#FDekFdTlP(A2ctpZ;JjR)MTSR~C{)g4dg@ylL$-?L~CK`Nl^3t?QMaL~TE0eeAYn-RC1QJsX7H zBP$}J54T+#dHU+biLZJGC(1^u)v3{=&o9dTZgJU!uW#w^H4!bBa~E2h0`A%xw!NkA zN&O?m-B-Tu&>xpRTFqv@wQfmZR>!FbYoPeS#_FN|S^8x$vrjL2th!_@&-7Py5M95c zYD%;1=+%eDf@4kbzNos2Q#B3EbLKvEcti4)>>|Bd{-2R8LQ$zR|E zx6F^$FQi*%?*V^5cjvgN?2X9YOZ!%EY)Nx~C>hvVnp{16z2Y>|T9h#`96zI?XKH!_ zS^c-B>o?{kUEZb6GZs{>8gIL@@8-0Y3x@Lgb)T+!hr?5@d#a9~t1u;1G++E~B6@wn zgE!7@Uz*rmkF2O}czH@+>h6`?@J;W`uH)qnHcxt2v2EsqykpX;dV z$lI2Fux3Wt13&C~Cw=dX)tfsH{`0?GbsN8FCf+WpT74;I{@~gET^X@88*4v0Se

    1. `iKKB0Qm9}FAzRpzv-GL0_=bcLk zE`QUC6Yf3Prq<5lLZIRr_?)l&ZS!p%ePbs_#xI}pUOU@D4Pkh9`5SxR@5Y$aY|pLo z7ryL#w&vU#^J&$5Q&}BJ`Al!l>pgZd@LKKO=-=dA+kLfAm^bL!apv2BsLT08=5WTQ zmZ&|w2Xv2nPt?EgVpiMt>4DM8@x^5;M~6m#P{ytt?d GET /info/cucumber-wire -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 7edfb7e0938d0c35 -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/cucumber-wire/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/cucumber-wire/GET/response deleted file mode 100644 index c6843ecf9ab204c048bcfdc58ba0e21d223291cb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1134 zcmZuwzmMER6kh2lB8$I)3@1gQ*zx+;de>ep%0=3}oWdp1-6=x+5E_r4y`!@|&dhkT z4h0QLlh8z=p^s>wMHEmVAsSMEP$DFtfpj1d8lWP)-ODW(iOQb$<9pwH@0$w;2UmKo z?Gn#%$mNR`mz9CaP}9~B69Ws=s|zNo5#ckYG?;N?GCH&tG*heuDr+NTrDL+cwL7`I zx3j%-33CgrX|1FIzRbqN9g$L|Fir}|4>5mo%6|}*)RoAxH3tp6QNpyemWALgRZvT1 zsH}=MCMjgBDGb$$ld~F%?CgkWu0(w@L}td+I_~vWP+;e*$!*YBY1#r#^sWmtyuY?{ zDf0qYEws&LIU=IW|F8I2)HOz~*qj-rj(V4ftL9@aPe*9OjNnH#s7HlbJyWKA+Gu(m zw4t8ON_In5?D~pNPc=!KL#b)nl(p`SEHEsO$)+Dcp9dau{UK!DFbbW}cO0I&z|%Ah z{7tK12#2c>nSeAVyRzyMZ$NgLLIb!1;smi9#lBCrcMmMi_zYINQnH9i$rhC5FbvfdO_95E~8klzqBE?B{}X31ROkc15&g^*KV{fq`IWpv1+h(@lHWCO;B0~jn@ zn#zb0P3PE-(~rVstYJ95tWl_>z|78MJV|rt@|lt)j9siq7(avxr%d14W1`TcAK30N zv|R_k{Wu8xHOT_1+|1C7ZfG&i0iB{)l>?eLX$@#AWd?^#l|W5~WUD^bB#J#R_QRDX zbHNY+-^-k-O6Zw|ieMme`^!1YC9VvA2vAd2h&dof4QdW4P0+PRlH${GJp=-9$HMUf_Wu3lts`KE^_pf#~p8MjW^{(@L=bO(zeBAlu5&!O` z`#;_jn;Sn*uf4eVyY1Zz&fUEI%Mb5-``528Ka4*3^Q+fCeq_CN=A(10x_RZ)d+)zF u$=LvyJUP9-nVw`S!!#^DjS3U-+lf={$L|(fRt*pMK-`Z~Y6i2ZSR4 diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/cucumber/GET/request b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/cucumber/GET/request deleted file mode 100644 index e9db995973..0000000000 --- a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/cucumber/GET/request +++ /dev/null @@ -1,7 +0,0 @@ -> GET /info/cucumber -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 7edfb7e0938d0c35 -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/cucumber/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/cucumber/GET/response deleted file mode 100644 index ad9bbed4fee43c98e54c508ccd5fe49ed9a3e9c9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8724 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 wv>%5k GET /info/culerity -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 7edfb7e0938d0c35 -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/culerity/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/culerity/GET/response deleted file mode 100644 index ca348b71d222ee3762d37aefa799f12562f592f8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1647 zcmZuwX-pJn7~bf%lC4$2L{v0PM6+$mEIYfi*U&A67LdXU0mK8fd^_{)?1Z_T16hpL zquNm0Xr)q#jT~01)I#csX~3h^T4HS)two_$>zPZ_j%rT zc5!h*3Sl8Io7IZt=bC6q)S#&0T1bWzrol=rMdkq~rebsuC@R#vx)#9Qrb;}Z00H8X ztZ|a4Qdm*CFEhU|Cp%{jidCvAE-R7-=}45qh*V6F80hu$5?zksBT@cqAxf&q1p>ny zR7mRzr-g7?;yF5mD^Qjc4VOedL}3gJ0G-!xRiQDn3i*IJ6;o-2lSe*bK~0lYDkUY_ z3R+m8vlghLOfAI25w*jK0W`mAVI_&>A&@!MLQ6s_#tH26lKq6Oo+J?BS{GxUS;MpsL|E3lKn+B!Xp8$|;KO53x{C zaYh$pH3dOM?TV;1RLutcni$PCK@G4JHpA|6`<-;a;UH<~@zVk5a(ieiV`JPN!V#d| zGfX@{Sjb8)z(Iz>e3F=q*<6?pC}@EQ7iP6nq?IBFEZbLXq5&O*QLhz=r!WCj;(&!- zr!^Uqbw9Fn*l8%zsHccHuvMIl7DRzd^~hKp0fH2St+hVUj!)SuIFm4yVHeXd0qTQ-H`qwEX^%22~RSGz5~R za7Yt3mM#xz;-PFd%I=J6Qo#Xq4(Q%0fFg2g(1aABkalic1SjHf^kB*%lySgw6%cV$ zp;7@E+>f^YsieqD!sf8zS%v8+9DSp(**V2SKX{PS5Ua?15lIwuodoHz+g*g+;k4L2 zgv(`1E-A7mmtxdjQ*%5w|TK=Z05j}lL>FOV|VBuS2rKIO~=Npo^iF`_Mq^ta9-H8%o^xT>b(&T zhx7lQl6J0i<@F!JZD}2Yec^<`{%g06x)SS;-n;XYl$O@<-qkLpopje$6&U|073Tf5 z#GUcgMmJixaLb3a372QKtvZ*OJ~$@b(Adnb?ODXV+*G!c>1HO@)$502*Mo(f{;VBW z4)$Dg{+cxVF&3=fKM~K_|Ki--iAGCkH+s^ zzi8ij)BN9$m2OSG*crdwTY6D1;eI|lN!gS%A->-@IU{Y=!%^Dint{&7^ZG-kmNQQ3 z%{4den11$D>X=KjwtaTF%(r$<=Oe?Vm*kVj8vcp9&$YHpjhXvrJKuA?;Z#l4@|9Xy zM|aaJ>lT_fCm!n?HM5OK)js}^JHC9)ynTIQo~3(b!I*IkNfWM2Zmj5UYRGHNzp^I2 zDK_bl)IROimIJ%98|^1Tu1gmd%>8Ej3rih$w_I(ln_7O*?5%!~QT*wyRbvmH=(%$)F<#j6#)`eZsxLp!m^J>4-LbmvLJS=r z#$Nla2X0+(rscc0)2at4J-+^z<0Xvwt&0y2i*MPK`Tn{?XZOT~ z;%@Zzx9=iOo~|YFIQae71KoX&PT!rS-m)+5?LIf>uspElh GET /info/curses -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 7edfb7e0938d0c35 -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/curses/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/curses/GET/response deleted file mode 100644 index a9403eb1ab26f6815f7f54cecc734221b07d0388..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2167 zcmZuwdsGuw9u8$W)^riw7U?3^sqYmg$>c>QJOs-_tb!txYQ0UvHK(HL({Y<wc~I|F=%;(6K}^!4vG*?8N1p z-bpndWDM=s7XQM6;|ZQ3UsHfGF;K$s?ul2)P!orm0mq|K5uqni4Gdu(rz~bo8jB9- zIW*p+H*#VKHEz+ET5qOx2^yXm?-l}{(5aERQqo&W;u3{afdh?1A|r5sYn52M1j8km z24HiAGy$=oeUz30@z7|3_d=vnB+$sh&|uz(M5>lyYPkXlT@@uH2{HkU`^y?=HKHd{ zP(la%loBt*XwpC%C)@=L33oD(gD#aa!cedv$u#yX3W8`zxm+VrdZV}o$5A;hB~e_e zl%S-H)M^2)RLE4Cu@Mu)Q+gOwiAW-mOK};zGZ7G8Z-gppXjlmg_6v^J0WUIvHRypK z20JtanFtt&60#|hplA+J$VHe+DZ(W1t5D13vI&wjV03%}46p=O3JH<~FlsEp=m1Q- z#=-+m7*FsJC4{A*D5^=K;A$z<#d}Q^^356c1V9@I0mo3!TE` zxJ>4a$rRoqiAsh`aIfgK60hiBi4YQjivwRjDEJpAyh5PUv;|$ecBOC}9`1;QnF@uO z5*b*XP&jAT+k*U>p$!5@{y+U+bsW9pC%x<%j`7e99!Sb?(bZL?NaAOg>?@0UUPo6gXu) z7`X35$>AR#mOAys)$Xqf1NRS6H`j!=+3IiXH|4N=hk`z@U4>O9G1r}s`QA|q?c4Lk zR8Wek(;sABZ8^X5Y{^%a4d%i80lwu#K*v)j2d;9hjt)#`(b6$cALe>!c&L);r*RJ1&Q zAipwbuRQ*;#jrbKX#W&z!>Qul%5(0wY`($Wd)IXp287kN)>b~*H1A35t%wVEPj(e| z4m-`NsI*sya`fg3Bxl~|)i=*x+xB_eYJ*G8McynwTH&`Vyf31=Ysz5OQMcZs*u{m> zTlZT|&9FVHk*#d}$C|W-L${ivlKjoTiw!xvr^~la=aFoCnByFn+eHOiV{HZI2h)8D zwx9X2sr+O$rT%rT9**fR&IE?v^t3gLNcDN`@ACr|ss6fy zKIxG7$Z?q(%PkmAIyz-AyQ=jIfhc4;b!nje9bs|{3FVQaH#vGvu$W4`4ET~^7) z6suc6$Fv*Oo~r!`S=Hs+uDLx=5R4w3mtmZB>HeXB{w|e^-6@V8um<_h?DpCxZHqo`uKnwFa=rjfULow~O$5r9ZrP zwaqoN>Mdtj=>WV*kv| z7y~^%^Ul33Zg0&)$?<4#1e;27w5dM%YxGS*dh1F#hu#=tYv>p zR2_UgbMNfyH-o%}(m(vL@VDPp-7CKxNsRg^MHVh|Xsg4+%qm)4jm zi#A_SzFctN$ojGpv`J`aED8t_|I GET /info/daemons -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 7edfb7e0938d0c35 -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/daemons/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/daemons/GET/response deleted file mode 100644 index 534324a6eaf0f9cb585604e8b5800e552cb62a9f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2370 zcmZuwdpK0<9v(T<*0@!>LXj1f#2T~aYDPL#Zd)$J(S@*P%{OB*H*2lIlxK5#dzB4JXe0V0S5@uZVRfyz}b5Eg~v1R!0tq!e~$#KTe?RRUP8A?0cn zA%cS3{X7Cz`gr;HQ?+=4fHk<91lU+r1R*YvQY`_lVuc!urt05L`5%NzO{nBj=~oT} zz_hrW)WI6HLXPQR9B9-y39D5Kod}WuDXLYFFo9!`9RUJ;FcvtJvf)cpyjOs$qF0IHD_OiZnGf#gcr|7-p$>Q@XIj>e)S zihn*khB$us3zt7f5F|>JdDbKE1%^EX|!U> zlCMqy6-HsIC=Rj>at&oL4q~)p%;nS&iG<5xvj88K2w6Os3j`P}M!9TQjPad?Je0@f zvBvU*YgMFNNrjHZWU+W`4v*T?qSSb$h7wAwpejBdt{xH@aKxf;wGy}@REHSFqJfH< z;u*0Ll`9B{$7LeUd?v!8{yY(v%lS%D0aP+FiV7o#hcHkK15{LSR3!scdc`^t5DW=Q zQd2x}IVFlSoHAm>Ukkt zA%`QNxC@v90iTbs9Ycaxjv*c_21SGdcK>`Kk3XGo^rW0t=-{BB<&5$16vj#_HeOV0 zm}*?cU|6Rc(B^J^w3?C1xPwvauAuexDi^E7*`EsdZMJ^sClo6`Oo|`hB`H&pb*F6`YCPm@%}%cJx8RnYJ583rZ3e{ys1B z?@90V$VI`YX5zK=TLNnsnZmPA71#Kq1qUi&LHkidH$ZmJ6}~ak(bopH^jcC2Lka2_O?F1EzUr2s?-pK}^~=Ry=hqxL-Y?`!=uJ;RcbjQ%i zasM>f4Q_=j&k5>UVG_a2H``SzsrKlBR#mI+7~7ag77fm?G_p*;|AOWivTjC4 zO0CNWde&J5e_AK~oW+B^Kg@GzaPpeM&0uaeL7FDhw!6oUtPLTS+r)R#v#rba-|P(U z=&-x|{fC<+n@tzcA3gs)rdYe9bvUxN=|+lAvgBEb|2v;;tUJo$q;sf#wQcRC%Cv5L zRryPBp{jEATBXT7mTUQo=C}0GJxl1_KZK_?tgp~tZ)cOyS0qZM`B6+_ao@!trOL8D14Vc|o4XJ=+5z*3G7zC6A|WW4|`*^BqVr zWti+=s;$@gBl~R6;6U+DGAeHP#K=VuE-u*TC%BY4N~lRMljORMVL7EOK_yGw3( zy@O26pZ=r!N$-9;+{Vo=XyMwXlxg87m67dao8d566KWb-{tv{$gSpdgIMQ9{nA2`F zp(^KJ9mC#3_nfcV9?o-idbSVjnzGsuLdAL;)TwF??M<^XbJme!FC)_ROgUnl7XIz*#lXMemu*>>3lA$_6Jq zo=Hr6R_|Ja7rxETocz{D-|6n!T;qXU*Yt_Rllz+w?q7V*Gv4?}FYhIKEh)k(jizY0 zfXrsMrL+aSD=xGVvlxa(afj^qCOvF=5waUiVtNk+r1sld9(K5UsyTXZGyjQkE_Pu~ zv4Q&1L#=tt&ioexlZw+mhL+8rL|O7%j^LiT+1Uy6R_FfearAteKQtVttF^hf!{C82 gZ0)%1gyEGv?j^@tKk3tGpQz6*p9=mw293t}FRf$Z^8f$< diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/database_cleaner/GET/request b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/database_cleaner/GET/request deleted file mode 100644 index cd1681afbb..0000000000 --- a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/database_cleaner/GET/request +++ /dev/null @@ -1,7 +0,0 @@ -> GET /info/database_cleaner -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 7edfb7e0938d0c35 -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/database_cleaner/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/database_cleaner/GET/response deleted file mode 100644 index 5bb1e956519c9227e267f5bc61b4133bcb44e006..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2826 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 GET /info/declarative-option -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 53c83f3e5793993c -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/declarative-option/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/declarative-option/GET/response deleted file mode 100644 index 6446d3be37bc455a58fb1053dd2c5a3e00a475fb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1184 zcmZuwO^6&t6ds8}XyQGhutgApFxAt4Gt<+AN# zve-lr;iW#Qbv)kh7?3vz_v~14;K2f0!GlCyWK+7cB*-dY6 z<v9OMP3*=0ol8L zXmQ4K=(1K-5s{LuDa&9sa{8ohVvKZ~G)Rt^5;bIZMU4xh;C9nqOCU)wjv+xYG;{)o z2JQ&xBp%{hn8a@EK?t0+M;d8FiA(F)juV9AG1eM}^kt1M#szlv7qdl@L7(TUDq-g0 zM9laRNMzal;DCujlVM=H;mCF!d=8@^@V6ohkeSJGnH|q!oC9u}Vlo3<{&-_RTM08r zva3Yr$-Gu4o=hUoivqXvWF;6P;QzK_N(!A@=m-|Z?xf{u6YhSPBY>K+LaYEaYEUak zXpCEbY$;~xdcIG059ZkJY7x1*e|Y*qb74@GkKe5&3WIWkiSLhHf8^SZABID(e{<>d zZ!R1Qg&^?!_(F@5Ao{x)bg`k!AN~B(+I#%Ue*gMa@5_r1C-237Ui|K#Ua$A`>ABt?)}y_5@!k3t)!>df diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/declarative/GET/request b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/declarative/GET/request deleted file mode 100644 index 99c2251ecd..0000000000 --- a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/declarative/GET/request +++ /dev/null @@ -1,7 +0,0 @@ -> GET /info/declarative -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 53c83f3e5793993c -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/declarative/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/declarative/GET/response deleted file mode 100644 index 605e2416fc26b0dbb1e14900f7857e2039920be0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1450 zcmZuwYitx%7+tMcI)TyzK~SL+jA<%6vopKXeay1ZB5f(smOfGpP0+hDcV@@Vi@A5V z-Nt~4kRqZ1(WJ3RBMKylwgCf52?z*A8vIcu8k9(u^3aM>LMacm-rbf8iN7Xuzwe%N z=A1K&>+6?!c$TNV97k6_Pf3=Ep@|usw4q32*n&N_4m2}NOEKUeh$C^VFhQz?Q5;}E z#rMbA;xwr45jo`r1>yySTc-6bxUd@^ZQx;gD@>*YKk(h z0YNG5XgJB(maa)j#(}owV8$}_q)5w90dXBO$dTv*1a+k#Oe4wB?E8=C7{)ddJ)R5{ zWK|GXS%}CcPU`T!yW@)r`F_NzmZj;N|0r&vT z`9#huasj%$vYwKF6oZ+p97`8z1GF$eg%LmJrtNr?L^7TfG$n#*5)EprW|M#&xGJ7j zt`U+bCj%wm7Z^Y12aMnk@=Op)K1LBF!WokNQNX9K#7(Rjq;wq1aREPEV4SO$!wH=;mlf+k@pd$AU1I--jNmJj+_o+Hm9Q4oCNB6Vo0I4079 z&r1PGf}|-9FjYv(8%<(}C>dZvQs!tGPfBcO%#)Dl^@;+Y@g$)EQfKnNB!FXTC`J)S z$U%S)rg_pKW(wZ~q0InYOF*I#K_>xaCQ4d6YAN}3c(0FV%4$omxLGeP!=L_&YKhJW$kPr&G8|pZBLn%iQAq2Q&^n*&rf^e6Sp!FnESGSbP z&=ZVW(wcJ88rE`DipqauqN^)s;|s1V{C4QAXs|nhQ)>qQdg{ocz7M{-a^c&V8hqxZyp~gQCu}(=cJ=mc%|9RQ$!lIW zd?I`0wp71`;Evk9j87TwPT@=cIP?&FD(1^z*7L z?R2W+cKfd0GdY55xc^Y@ylVr6hwtuuN7+8OVq$kgy|`{)-g|#u)u*c6=+;^9@y($n zHADSbM>io`>Ci~gtY5dg zmUsR(t+05@<-?aZn!9VlJL&4Vmp(cB-QC#~`^7-_owc{KU9ORlEZ51|?Rg8bTrTQg D__rj< diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/descendants_tracker/GET/request b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/descendants_tracker/GET/request deleted file mode 100644 index 775d272bfe..0000000000 --- a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/descendants_tracker/GET/request +++ /dev/null @@ -1,7 +0,0 @@ -> GET /info/descendants_tracker -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 53c83f3e5793993c -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/descendants_tracker/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/descendants_tracker/GET/response deleted file mode 100644 index e18f1e7bccc455fb33834815f0c17530b0174930..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1267 zcmZuwZD<@t7`{@AWf4T%AEl5uR!Sw@?CsZm?RljkHlTF@U64c3COM(PI=n^q|W|0qJSpb${wdzU7r;E!c@=6&aV zo_(HY`bI{c%;>6)3{69W`xP36l7$k>X3T6P*`&yr+N#<}FQFi+vvSRk=or*DqWm`^j6~=;&N>Id zXu>_&#Bt<%w23*3BQ9|i`b`_vnL`p^V!7@t<8l{5 zNFqJD+5>uopw&HX!o-Qd6HG{Ks3ag$QAj4*d@?+#HC+}6Tu*{nWJ(H?#I?~btzIwC ztW$8Pq17~#T2!N1J!_dc-O1+j`Yy#MFb=Hn9FNs)G!TVpWaQBR;Sc~lk2KTH=4``6 z)qxR(653#GuXyC!C?J!VxU8Jh(kM=9V9B~uETk|q1P<<$7lXl^9Zg!yJpdt^W$CO~ z!$i*(u~mn!f~6HPGe}X>0k&Xhts_Y&y#PX|shXD6b2{uL1mJ@hgsS;a>F+J~)?JpS z4ITxo-0G+iI>tgksT>|6o-a_=QuRVk)iro$ZOby(N%|~wWy3~>Ra6M243ff0=rRaz zttpvM>O=xag?pe$0d>b~niOrrur0l<$+$-#&TwDG2@gHdP(TqInK{#F;j~O_2Y!sP z7!%(cXTVV~KF;d62B}?@6t0eLm=>-KbwjzmXQRIUk+lVGcoJCUVcn91!|l?oqG{%J za8lK*LSEC-qr>p@Y6=j6!QHDr)O**6bOns|n|OHmfYOGC8AFhoDx^k@xT`3Sys|ar zzIyHH)aC=J07~cxbyROvuD0r?CUsVOmDgTPES{e zemef?)?jh^)WVlbSDroPPn_Fwspq4_|KOJ$3;al=pZ;xWwz{%!?*5D0zjt?@J|91J znRyL=mUOd)AH>Fa_ Ezjv6$aR2}S diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/diff-lcs/GET/request b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/diff-lcs/GET/request deleted file mode 100644 index b055b8d033..0000000000 --- a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/diff-lcs/GET/request +++ /dev/null @@ -1,7 +0,0 @@ -> GET /info/diff-lcs -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 7edfb7e0938d0c35 -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/diff-lcs/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/diff-lcs/GET/response deleted file mode 100644 index d7065cb642d56c6e327fff15b3e3446df15d9693..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1553 zcmZuwe{9rb7`_FTKxafG2vG)KKpA1zyY{a4tLH75a5pv>W83jN2w&T;y-Kew?RUp+ zMnNSZ0fTV?mq>JpV-ql8E+`B%pbRw`82rHyNd(+LjDSK=M_@R=yTLgV`bV3-@B6*a z^FGh}&5OquxmgzrJPZSB=2N1fW29pmXH3Kcj2f`p)S#+|ftY}njc_D|WjaVT(6R-S zh&D{D8oJGc`ts^%O) z3b_=RQe4O;l{llJ5ohy-GMV3YDTbkF2%4(x5{+aSs7d8v#sBY`@1a;Q4KcK`XY;`a zwIgz2kVSh~Qy`M*M9y4wekw1Wvg!56#?Lb6XLFBW3X1p{Cooe2 zu{7^A(nZo!CmfVU)g%jIp>?V3SSkS#C5aRKa)9=DeH_gR0!xRy5~LXs$zBf^kR(CQ z9!cp~O_HT$Tnyu5IF`gxkiaKRqN1RYOl33@l@#O@6PA%gk!*zk#kEK$D6!RbP}OYU z<6Lae?_wG9^^sw`d6F8^6`bG!7w}L}6cO1p3+f6Y%P(XwvMC8-0ur-SC-4M8xoHh+ z!i0E_hxht(nxs`ot^>JmX=v%HouG&!B*1c6n5@CM`?3}xlZKj_Mueh`tTd8nfh_&7 zqQpwpfc5$Uu0YUF9_NyJ#~hVHRWm++esJRB(+kFf&W4jSGP}EfFFR6pq@$z5eZzlh^M#vjeOKRT zxp2O4AJg*8uGy2e?BC>^ysGd<-`KKmI@3~@`Elu*-r9I6;_IAOpl8XzD7cKtAthK{k16{94*)} zPfGP){&7r?)qdr0BieZTz`Gl#z;z2>)sIa4H2TU0FVOQpxo0D(u@HUp>&YaH}vMtty(+)_D*&x?kD5bL&!f^|DLPl`fw4*--JZ;-B%@KPR6&U$CilPi@;J z=iFvwujuGCoo;Djn0H#tf~O*RiVFs2w9!Gmln@?^hBRpIlAVzcV=BNUw^N8Xny_7^LLM3 zn*DYeH-P9vtOxQ2zo+3{61* diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/docile/GET/request b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/docile/GET/request deleted file mode 100644 index 013653f8b5..0000000000 --- a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/docile/GET/request +++ /dev/null @@ -1,7 +0,0 @@ -> GET /info/docile -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 7edfb7e0938d0c35 -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/docile/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/docile/GET/response deleted file mode 100644 index 3b126362db9892f10f55632ec6169b5e87b537f2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1691 zcmZuwZB!Ih7+wR@7Lmx5=%9>dXZ>JyXTNu64<>c^Qcwi^O3m)h-kBYkof&3kfkh!D zD#|hy^F(@1V4O%p{KzabF~N*DONvw=h8Sh2sbD`uBec7qr04W!=j?so`#kUaJkL$a z%uLhiwR+4z5ZJ=`YD(Z0$Sb(w6CsHyFkjJ$9AJ3|M!A6`LnYR$(6~*VkJA$HKwJtX({`C-%%3`PREKmpS5-2mdy z<@>YTqmUJ#u+(r5(t}4@J=7)}aj%T$L0Q2KTHpZ%0uSN42Odb5jwgv~_LPMgc6pQh#jf$~-srw}HOW?%|f z5g9DO9B*K97Li!(z($*0Hk_cHX53_PI&r(%?!?Uopf}i^PJ_z?16RDf!g^5X2rWTa ztQI3W^8!Tg5s^?%4poxlW8+;6jG^3;;DNDv)ZqkFHsldY!s>Luax!K%Y4tXXR!^X> znKYS65RgPduS;*T8;w@I(QHL)>Fs7?%#sWuW=TAuMuQ;W zxZ#E3?->!3fQ;sRct%EwdWarjq@&a%qSR;wiBYSgH;h&FZfIYo3d$^-zj3m4Tzt<_ zwGQjNuypIV6Kg7OtzVCo1y2d?>u#uR`E$|Y%Bp9!^j{hr91NZF!g1KFq2V1L%-S_Q-N7dY$9=}7tRGXVoBM0cs`mL!mbb{L z+GSf0<$1a;vl0yC z?ZuBwNMD|3tF8?14So+aN6z>?sU~-ZHT}prmdU*0K9^7%*7y0v;@lOpBc`13e&6)! z?U()HwcX`cJ9~&5o==;LLkq(#-cw^nc(NUc*?r+To%}wT?`Dm;tIZ_C%7<@DhJuMQDpfg$glnmkG_!I#Efp;6Ls!nePQ*QZLPC1Cip#v2j4(Ef4F w)4eBaOy7ooLtAV+@7y@Gcc803`jw)FcL#xRH%O(ri+;{bNnX?vtWv4}1tcq)RR910 diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/domain_name/GET/request b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/domain_name/GET/request deleted file mode 100644 index ff51dcbb2a..0000000000 --- a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/domain_name/GET/request +++ /dev/null @@ -1,7 +0,0 @@ -> GET /info/domain_name -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 7edfb7e0938d0c35 -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/domain_name/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/domain_name/GET/response deleted file mode 100644 index 7a5a5ea8d688c40f2cea3282fd05bdbdfcdf5304..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2707 zcmZuwdpuNmA66neLT$-i2QMS$jJcYN=%oy{i_I+?v1iVlxiB|p&R~k9kX6F6-E5aP zR=bKQ_wE?lqEZqOwi_kUZe^>t?4ixu`}yo&=X1Wd=lMR*_varH^0gb4Oa*8Z3J|!8 z04wAeBF8{XqeQp>h9qKcN+~3fdjPN)LRARnsm6pLn~(?!QAmb>3MD2{$W>e**n5p{ zU{HWxz*;<)s8WGSRDmJzRF(@+Jph?PfOzty3OE+ee~$9M5psn}E)fc6IH(XL zs8mQLu!ai=5FwWFCM-Ci!(#Vhu+N6*}3DcC_P&Hp8LS!mXpq43B zZaCDmMN?{h>K2Lln0&gLfMAe_3)s`?R63QzW-|CN9Tp%ICX0#)5C)q9(FF)oD6l6; zAsh?0Pa>2c0xl3DR+9jVJK(KE@uQ)#01A!EpmJ#}z;8_m0ft~PGVL#_ka7VTln6p1 z#M7NZ0+eb#ZsUx*h#bae%5e^&O%f%36etp>o?1(SgCI;QUBIWYK?G(ZAOqp^K|U;i zK?a{f;~;!GhrRSk7RU?o#?#X=F5n*!^63W@OE8=j6aSym z1jV1^6at+^r88M%8kIq1(@9~$6jGQkg@6;m2YY{9$oFq2NIcwWsRj%VUQL*W$7clL zH|2-l6j_0a2!tg&4Rr35J_^^-OMSDGGU~=Py4->UZCd@v-lMkMyd>EQYd4D&( z)-Zc;xW-JC-?agBv538D+e1u<(ludq^lZLUHF$gC(s3K@Bh`y03vT!2eZkGVmtE@o zm_ygjnC7gbmX;OQY>R1Mnndm*r&mrRCL$Zwe7BA*Cm%`C~VJHPjoCYiw%Cf?D(t9&JzJE-?&^` zk`-uGReZ0%;JVkuzSZdtx8?R;U&ZD;?%CgAwx=n0+_}-6Oneubl;nKq&lRp#aPNkw zW9x>3di)an=Y4stvphKRR29?uf@9HyHM#v!Xr$L7MOW81%QkPb8m2fMsE^C_PmBXGqJJ%hlfoPAf*U-fXMznTxq3Md7 z-lY#>qE5xpet@Yyfy)nA>$@C{ey@{Z5!pG%5OB~NKlA4%)5%_whM4zP6)7pHms$SR zoFk!giM)~1`qc}Dz6^B;E7$8@=+W@~1IzS;y=nAYzk1Zx?z^jd#WKES-w%I?TfcB9 zuGP(o&x&jijG3R2ZW!4qB;VwSR~;Xm9XH_oa_dnrsr*@#;X@NICdGHd$f6LQ5ZY>w zJbD_tEpmj7y_!PUH_x!eriWI#sUX^7Nu5*Q>?`{0e)RC~=``D~kNomg z8(RABIi)3fH=BG6-fCAEVk6xTv7kSrc`vm=$-4uNo##3QTJN+SUvk-l@~Cg&oc>lD zZn(8e^>5cZmUXc`Hy=1$vf}K6D80Q&MZ>ou-IH2wRF%!%QbJsuYjW|81sJh9_s1J8 zS2hqV&Gbm^<8=n^A9(vsoWq^hly5wsj@)ThJM!*mohiI}WpCl&DfRQHh?BCa`~H&W z?;XE7HMby*xUf2VUDISWMYyf7=t+LxJF24h=;QCa!dy1ZEvze#Z@nGAxoDYWV0KWP zInz101ny$A)_S+eVThBwx2N^{x45+)2s2)(~PRl#nPhO z+3%X?OXK{=X*o1$+p>)n4+XJBE@`brUO(`)W~~O39fw2cW0jSAx#BWFo_Quq=NAIe z?2MNurKX~=%6Pl<#_8sbC5%>9SPE7c*=_s9q~3*!o+FyEc7rD|_RIc-cxP(LBN9%W zbIgqyS~1Sas2j1`*_*#My@GG~ALpc~%7(=anPu4_$%7=LjEhEgd7V(~YGYzWwv+#& z*4L9woBBGz0?cXGk*llG%WM zWtFi{ki9#Uwf%7mvDxV1TpF{@SZ>xmYGX1U_$ZJRlM|Juux?Aw^ZB+sY1aNOp_rYw za{Zm)h0oSoSeaeY=Iw{;3f2S6DsiySr6q zLD_GC1L2g~W2A)nWgUjQEZ*JCL&vEZmotm|%LgD4=U}S--b4BW^oNN%sI)!Bg_FN8 V*U{0LoYd9%Wl18t$XG{*@E1tmhXeos diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/dotenv-deployment/GET/request b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/dotenv-deployment/GET/request deleted file mode 100644 index 28fb69bdce..0000000000 --- a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/dotenv-deployment/GET/request +++ /dev/null @@ -1,7 +0,0 @@ -> GET /info/dotenv-deployment -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 7edfb7e0938d0c35 -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/dotenv-deployment/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/dotenv-deployment/GET/response deleted file mode 100644 index 4f6121b0e43d695ecb502e39db94b5b081a3681f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1323 zcmZuwU1%It6yA_xWvC(4qGBGrq(VUU&d%MP&Cbrc$kOg6X-ra+5ZWThotZncm&{-9 zy|c;IBHBoy7SsnHlwym2h{gJYpv4qlN(mywA1Df;P*GaYw)muo)_P~ttP%P&%suCP z-#OoR&gksy-W*a9$ZHyy8dvNn6eJW-v}0ldK^8?W_Aw1Bz;0s3iKr&Rg@&>SU4{b! zqgc==~O!~~2&zik4CxH$0z;PRajA?P7Qgx3Iu0t?fQ;LZ{^%ORTm>0uG%dh4;cFcZy}hC?nU_TxU@6vE-6gQkN3P1QSu1 z1^E(~z)UU>DgjM5wUVhBU}R!ev9aAG9j{sBn;^i85PPILtYtx*Sklt2(4R9RX!$ZSR40JV5Sld_r5n}y+yCM}BPImml! zVHQ%}RHPy)WI<1PQinSSGfzkiu}@p+WSp=TaiAr)eqB=OCCck1*qE-#aOcegqhqrh zKd?!K>?&0tm4wObM0&YUD4{~Jq)KUw;c|9vM$69CHAOZefotmn)o&Y-ZAhd2Hk_Gx zTgn>+L)D%$4)2E8qX|?y~+`zdiNdm3K}rJvcbD?Zn$} z4D6`w<+~O}KK6&lFTUUS@n-LfkAa_0e{|vbdyWpE*{4VEZ$9zX`6r*sD`OW#83@t)5Iq`4>-F(%1k1 diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/dotenv/GET/request b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/dotenv/GET/request deleted file mode 100644 index 8d9fd04cb3..0000000000 --- a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/dotenv/GET/request +++ /dev/null @@ -1,7 +0,0 @@ -> GET /info/dotenv -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 7edfb7e0938d0c35 -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/dotenv/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/dotenv/GET/response deleted file mode 100644 index 9aba4153d62af4225549a9d5a47def3553108be1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2172 zcmZuwYgiLk8jcsx&5BaNwMB*5YKuiCB$JTK2r7oChzJ5pt)lK^axxj2T$q_a09`Cz zu!YOsubE#Jxdq? zYPRsS*~H;UR8W{EJThcq$WmCdaU5!4%{(9nt2iQ=jTp^35U6F$WE`x&%kn=6lbJKo zdi}5l4vKmP;N9WFx4rMwW+Q`azX$xA3XUguntUSxT4sWF4s{PtB}J_qng}=^#YBXWNH&{@ z#39LktW}#t0V9X%tVRpx2dReQ8g%RJZOWkKO+(#6z!MaXe26J@gc9h1Tr5*6Fg>PJ zsB}8LUM|+lBmk4?KNK5|Y7A+(R z(g23CX3Y$a7zrCnP#{n)_C+jKEsS(HX<#BDrU`1Gl4%QE5EjH+2gjlziA*ok%jHr9 zijfK(DuW_Xl}fHcwS-P3m1#*#CnpB4SWP@_gi9+HiN!KGrh;cy0@52T&_yi+Dgi28jkE9(plx09a6hp%VZU$pJP2=ujnF^bjKw?$koKQzA1<358zU#|m8Iwl5cqV*ax7SgdB;>nlDd1rz^etn$kGtDj@? zBG-AYnVGI}C669a&XOXo`LL+U^Ox4z^u*q*x!3#8wWV+KN*!qH@$Raw>T2k$Q87EX zj%jCam$lUA_tZ(i2eQLSc$n&wwnHhN$)no6&tJV^JN)U(1GB!q_Oh|Mm6A+b*p^) zFGQ>sv^74CJXUqZ=Z_LRFVQbz8o7O2&WS!{(3I3sKkd&?yJ@~YqPRxj>8734<*r&? z)2ORF{;;F|4(AkB6~AI<#J`;e_Qk}{(X9Mf;Bbog&sSN&xu=RR`nO1)CUiHI_a1oW zKmSwD=Qq{6CT#B47v)sDZ0K>aXj?+IJWKKXrrqtq*jFCR6FV-8xz-%^YRlu)Ytv6tOCA!okABdOS6;s1a_Wqz`WwNIej9Q(E{%S# zWN}ZipfY23W{&!Z*Ms>Lr;1~eLvO6`Fa07){nZHDYC$CvaH1yo4V^mS*i)ro~wL9X(Tj;EJ)-rDNizxG&=?N;2x+MUwtTzjcc(MiqYrH$7rCoUfQ z`Em6LE_tr2SL;95)ZDz1`nQI@7bRFY-L0PL-ui2@`@ofD1M6NU*lk$;q^PpmfG@$Hdz=3Lh?%l& z>*&VTjE>1858b(UW?#v3qmM_|G<|YQ!1VC3i*K}U;4{|z;{rAndlK<}Y1W0t3`a~R z?%JVxjXZcUsr&oLXuGbrx#ARGysBWviqA?5r;n`MqP$#x_K1A3b9((}l=|roP(9*H z?|Bn0<~3`h#$?6+g2fo{lUKe^c(`Fz?8arg?RDctZfCmEUc9g=Jg2Aj_OV3~=_Z~1 z004W-$4A}0D*RKvBuiH&m|7S0Z1d4_TkX}(xW3@xnpchq16}=nulq}$-ILtBDpq50UuW$Pxd>0G~e z{iglr7Vhj+&rGA(Ik8Qn&)@F<k=b$Iu xt-*WjGup?P63d7Mhn;qOm-}d5eA@$cM0iW$z(|2$U|^J>DfO=P=P?3-@V~R&k5T{t diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/echoe/GET/request b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/echoe/GET/request deleted file mode 100644 index 8e36a8eb28..0000000000 --- a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/echoe/GET/request +++ /dev/null @@ -1,7 +0,0 @@ -> GET /info/echoe -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 7edfb7e0938d0c35 -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/echoe/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/echoe/GET/response deleted file mode 100644 index dfa235d75e1245e9bc6abec7936e24448d82d189..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3498 zcmZuwc{r4N8zxF;(t;EnGHs~LzIbP(Ol28MvNUBY@65c$FkAD^V4{VDR+22)zAR-| zmQ<2+GLkHvbkL!al1`#zDof~l>wKs0eAo3|^T&J5v)s@9+|T`U@buh?BVY+=A|8)+ zbwY8(A{iu-VPpykL`Tb@Fd0rF0Qn*-G$#<0!jQ~bE(^c_s4z@`6cj=ju|&ofi(oq1 zgW+Q9>dv%h?m%*3FpQB%#WINVElWoetk6O+7qVsx#GGIx|IaD^g%F8h5kDZ{2L~A9 z$fbOl0wWO%_#6dB3Q5FL8AdD;DClS|6adNvG7K!`pv_=N5MXA7hB;EcV3 zQaM|}gM=`KD;G*&oD~X^fjl~THAsa3yd{SgKn4IBjY18eacQ&wN&txi5oug9bu~%= zB5=ql_yK%~OGmqiMHXnHCE5j)A_gE>qVXg;383RCXnPk=6bIx4Lf>yC6$|KSAsB`M zd5|>~Z-JJ`*~m$LTnZ9#5KIxmfp>r}K@Kd1_RGI9=OaT%92%a=Cg3p~0vEuL0{{R6 z5Frp_2@nB*j3-+Xi1=?Ua*>QLL`;Xr;_+1Ehs5L{GF~V_gklSj4Aa)ymdk@IIDt~J z5V9s96>N|b42h5_cKh5xz5qs3$XEhE#S-wymqI6#Nk2#mAQ4X%NJkUNmH-Oma3I7g zQc%Q$5cjebG6+U-K^Zc|PRd6_0niM|-=fgyL?WGJ`CXI{K8W}kc`zZMRK$k^QHUhS zj+Ru~w?W^o_}%fr5G28X0)7aDkc1&=2*ky(5!?QyDe`s*L^6P}b7vsw?=d>sf$918 zA50)$hOi=#k-#@mq{#askZB~6C4oe-L>2=`WWa*ufwy4U;!y|_1ex*IMz;Ssg@qk* zYJmdd;o*$>J|DqwM|@+C_y#MM@=z#~lk?S#k3Zg{rcssJE85kp6Z2kyDwFD$l)Wn( z3d-yEo0=b(%7|L!p0_FDHZ{#)SQx-DdvUk7w`8jJ=Fpas-Q|1h;&6R+hrhgQ_|n(? z))LpS@aybs;mlN9EN&+I%gf6(Z$IItP5Ywj>-u94pAHS4o|)hE52%65kFcEDN}OtjEBhF<_%k@&_!P5M zhAVQh4_6e~n<(0^M|j{^*|`slQPvBZx32GsOvx=6{3B0!DLkS(Y0E{W8KXbr;)r3o zSvjdDaO3#^`I(`c&d{JQ&wNNx)#bFfG`=dSYgYygAR$&2gVa zbpF#sQnlih{-#fC(9vx(aJ$ zU}bziS2A|)dFutwQqR}e1Am6^$-ci4jZBSdUZ;C3pIlP*$Dn z`gFyhqq5fN!lL6z1q31EtkECLvb`adOSqTZu$8ls9$A{aQ`Zin417boo9%GzCaGsu z%K=S)$|*vv!jO@d;w$x-s~Gz@0Zr=RTKq5QJnp$a>Rx|x&Q7gNCdTPx`c>!`y@PL~ z<|SpeMrnS=M%zDs+==bK1H8|%4r(J^zc>x;DL0hy3ISItVlal0>_S&0_cG8waJ9!VGI(t79LGQoiPSKNIr33k zZAHjuoiOgjta9ZBACUDhbAJ65Tf>UCl`TDC%c^V=?sjqXRHij*V6JLHk zs-&(JJni^=&AS)7kruO#YiM{m;ruFF>*~g5x{|2%(5V3 z zcWez=nsJ5vdyk_E_1-YZI*pR9rzWu~@}`9K*qe)g&FNT~-paIJ=$3xI_`2sHSz}3W z?S}=09Fv!x81)CQQ}~|^l1*HjYr1q`^G^2O0&!o2cO-28s>*A0sBSq62q|%0HouC{@Ta(w|(bFVzWU zPZ-6AoqVSBy5Ggzo^*Iozy2ASlZn!J-GIdthpkBmZDx+Dca@A-%ueQ*`n;R4>ZxD& zO2j*>a`pXnZfwiSaQ}qhW7g8=rXlAzR|x$A{V2=dj&A2ZQ$Mq&STu+DC>}gMgD=~B zdB!~47G@F$BxPxHK3EXk^X!)RQgZQba|$)&(XRL7434pmdHL3yP-UoM&rP}cWV4>@ zvv0T(ueKRXjJWlX4J)Ol=v30;0j}YW9r44q5&M50Eb9ZN&2`(8UIvc>kJ0Z>{XXQV ze29Y3rDv0`r^KlWo>k(9k8>C4(fZ#pk|r5dPN!!QjjQ^z0{xAZsVWO?5310vwN~{cYR&d=EpBCxX5&CJ^ZV?wDXCmVLWTQ zQ;DDU@}xVm;$0%fh7>~3-JEkD#*TGJ>pzZX&f4Xgf`ajfyGWPrKkzwvy0K}7&0>{% zxUMcVGuHGHq^vhRN#3`^IV|;0l3#sAh?(y0fvtSZtajO2qnNr^68Mco|Tu8_NMw@$+aOPX6e`7+z9Qx-m{=nRb5@z zvDxUriwgT@3w_NrBaOt*OoI2zBfVq(Bc|c8!oY>c8B;qF4^8N<>zh{I>eq-%wl_b? z(^e78BJdHlb}vHj7JtfUY90VA+fT`A;`s!J?bsZd?drZ6X z{nq#L8ty;nxS{5$&4_)Unc33TafkJyw0U2y`eAS-ZsC!Rn9DZnf4_UZyDZNBH0i zYC0%#W4llA>n(Hd6}i^UZ_Lt!w1Mk{veE49jrU}${c)cQem0TqZR)_a0PPH7!&s;L zvXyaw`=>;z!O-Z!q&S28aLEpvTBj9{4{vUZe;MIu-%=kNo|RC4@c5QXy_*KWZ63jO zc1vN+s<4diir0|u!tIY#6sC3enOzMV8-^8a;R!RQeNoBT^NbJAk*xtLPQfNwd{KB* zwZrip0=gD(Ag*3-;84jr&3w*nzx-DBfz6oNpXf9D7-I79t$7djFWlDDs}NG|c{N0z zwYiHKlFYX*^WIh3?>WV6wO*uZqL(ga?6Wgi{C?Vit@KJ-r@k*)rz(;0uwQkRV%0rz zmVCRqziWxso42XEPn~`qYhkL;%$ZrdDp|FXx>j4TH8Ktmz`n0B^eMdd%g`#z< GET /info/em-hiredis -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 7edfb7e0938d0c35 -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/em-hiredis/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/em-hiredis/GET/response deleted file mode 100644 index 30b440529fc56386b5effce4302a63f0b2572334..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1476 zcmZuwYitx%6kgkab>aiC8X-Kc6o+M5-teghoR_Nq{OEHK1au1{6&oLaii*P>Mn+hGzv85=p(g(6uJapPM=7-1B|s z`_8RxZhoYUV>rOGELbp~QcMFQ1JgKTAqilV#$}ccH6sF)1hgH5%Uv9&LsXiM+c1e} z)54l*I1*^8tdA~etgESOAi1>T(3Wjtq-3)a;36Pt#!$Jen@S7Gk45>fg<(2|7LVsS zI7o4A4QFV})HNkT+sHC)Oq+(Dkw6T^p{rxsu@&HTkRJC&fTP%&H8uni7+a21R+ejp z7!|rIgB((cGddb`H(wYh^E-@cnyQYVr8$gZCL=&gsy8bBf7g5u)rKjEp`E>(502K3 z$wfdG?M98Svv4rPnsSW-k<1`+=Bo2k3AF3bOObZ~dR%T-?&B8#47X7k7hh;^kl@JoSa3~Hrl-)<$ zHL#W>OUp7WD~1EvmU%cC(B`ILlhCQ&&@DrBg%AcLS(FKL9D?f}2Y zaG?OhvE=kiqA27^>c~)WLIOfqq#%)mY?=)X6_MqaGZ;Bk3}OOOZEHl65U8|9H3>^R zFA0I1CMgY)=Rn?D3fhL|Bq*W?88OV}aIy~P9!v{D77cYRg$PFn*(nsGWwQ0xBqd&Q zybz|V8!JgV7n4A3UGwMuJsT#6UjA^SBHKU`*b8E*hi#&zxKXLX{wrJeJ zqgyWA^xL%diWMD4qTrrZJ~h$1jSsh8Sa`a)Vbk2wOUL$*Z`xDG_;Xzwz8=afZ~f=u zpVOK23j@PzhR>cI+IQc1;Q%x7yKkP}+7|45^0h-=_qM*xnVD+)4-EsAVNBQTZXdsQ z+?;}ocW*sW)%xP8>BUzE|5*H(4xYc|!Fl1;>Ds?b&rd1oe(UYUCpYaX7{L{vRUCd< zY@D^dKl*8WWJU3hJKT-E7cNzu-h2gjYNchuUbSau@#Nb}UwJHC7R GET /info/english -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 53c83f3e5793993c -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/english/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/english/GET/response deleted file mode 100644 index f90f92dbfe48aca4b4a2245267eae4be8a578f12..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1474 zcmZuwYitx%7+onMi~`YuX#`5~2muUIAruiBo*@Pc3PeajCBeH}sF3*MW-{O7eCM9; z+{v}I)59#yk{rX3)1D_3+d|Mn6v{bJA`z@ZVaEWvRYocq;Cc`xe56t_qK;BsU_#1v zkZxO^MAnp7S4>MKtCBC^T%G4pj%y>R7=al~-EZehmRUP2q zLB)4zJVyuRmh+R4K-LsdWx$%cZSFeLXIbe!v!cv zYrxlN=;2C~GvFP)1BEKSzej7ftr-wFx<@OvSw`xn_J759qYhwbF317|-2UD?Vxjpq zms=w|1dy)u*I+#?tkqp*9#8omH4l1-;%H!kdfNi?3Vgz@FXuF9dQ{ps9WPu)Km;_2 zEL9mrhysyQ@sS0Ng^`%3ra?5Ss`&6iDPaH%hgYGiI!sGswQYq+P9&>=iw(evB*RO5 zOk!EGs=Ag?fRcfQUAeX)ktV34fCdv$CPX^Ej8`(SDQGDe)509IdfmYbcH!%Op1F>P zM1UBVBeF>GN(54Znr0{vm!p&j1yNzeh#cd&e2Z@(-NdG2XoiXKY(C}#Jl=G$P_ltD z$%;fpT7w}ahc)CW3*>`!7^+YZ0MJyl5jw)znNS3gavlf(rfYEW7qOr3A5tx$$Oc$)WWEqP0a5# znqICwzpwI}?R(#Fw#{kTGn|I2I_I=>&fk98JbroJ{I2VLfA^g|wr1q$!zUl(V3#lZ3mZ2=(v8ahe-_Cu%u+|%nh?b>#r^!ccB?=HoKOik4^{ zJb3Y`FaCV2)*&xCq74pQbom@q<@CAI*a! zquho;J%jWky;s?`bsrC(Jw%v3P8FVAu&E_%_cdKRzpG=#n%w?%9h-L>tzGv#QPxp( ztyQVo*0Zx$|LE5<=HP=9Q2RT`zI~ diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/equalizer/GET/request b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/equalizer/GET/request deleted file mode 100644 index 6b4c9e1a0d..0000000000 --- a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/equalizer/GET/request +++ /dev/null @@ -1,7 +0,0 @@ -> GET /info/equalizer -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 53c83f3e5793993c -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/equalizer/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/equalizer/GET/response deleted file mode 100644 index 941845c4f437292f667faa8dc3e5f0963474c8f0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1625 zcmZuweNYr-96mxV*L1L^F^5T4@}u;2Z})ER4wjDQnhqpI3y4%CdT;N&y@kEqb$9RJ z)G-GMl@D{KoNN?E(?&;ZO2kym5fnecVJ1I9D!(!z$3{^=(S+VRglNXUcJ}>!JkRfW ze!tn7neUrulE%#xh0mXZak8XCNhkD>0$E&#g}O-*fgmN~oDZlP)ExocOT=S^gjWTA zNXUvV$dbn58O}7<{Pfh6)OjdYsA+_v$~xr2Q5L5Yalh<=4!0AIq^ zCR3ypBzX|vNvNSrJtV?mwL^(sG`~jjvdoJRD1t_EvOf_Q{QR?$|KD|}2d{!4(19AR z9eNzh9TrQ(!)VWH{FH^J16|+-C?LrsBxfXhXetX4(1-%4>4cdCey~)QKtY7ENe#F| zJoIaXC*W5!6M~A^6;^Aon)kVNDUyvr9q=q32i#OJPoL5foMBUSy-!$HPd)XS|-K;&Ico2tFp-Aeo#mN z9y)B45my3kWa*I8P~uQe331?;3JO{f6)p*c#}W{T8Q2gbyPE*%v z88X&*D@`+$JzNrybit37mLe&Nv0G{M761s|uOJoOB8sHC94-$Jjhs)F{m>E4a04zM zN(d!6HysF~hFckuj<=CCg}zpnVJt%=MJVyQk3|_)3~(Goo2CMZhiLiTAsuR%2j~bS zSrw2b@wihN)Fgp5n^|T+lb`_5IiPzB0#y<;ABGe`BQjx>u)mRW$%jxOfG7kZVyHni z2t9-w?fihC$Vu94VTj~(CkjX2SbTPB=HL(E6LiEWJY85272PJyBv>qV+G3+gD&9=n ztj4Si%9!P%Fhm12b`Ff=dTN6)8QCm`h>VQ6SOgyRNJk5mf)+w^m+T+~BQ$wP^aZjenH9)*qX{@Wk9V&NdY}4xhnxtUdbf z)T-}lDE|$zIJp0Q(%0Jc&~uGr=NxG`lf66V>MNU~KfCbr;=Jsx+I#fj3B5~3mY#~* zntIliua%Lu^Cd;CMRsHVsA_r7iizJZsM%hMjlqA={fh#-vu{sJOz@F>)yDker&_+?#zz2Tus5arnN6`Pu`p8{B_Z-+UC5O8!CjRF&BE;Y7MLA_N?5r z<;rOC!pLpa){Zq>t!Z!nnHLwlKjppJUkvZuyt)4Tr1nZ%bIXB?KaD<7d3Ddm>(#$; z%{iItt8?th=WVP})Mq4IiT+o2IX`}QYI`C!hzi7mmq zr*{?CAAh_&rRMVtX`N%%H&M;qoxLCR1uDl^<+YY2UH)q_r`FfCJWA*uJ$_o<>q}zC rp4uCewAs8Nxps5s7U|%q%VheK GET /info/erubi -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 7edfb7e0938d0c35 -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/erubi/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/erubi/GET/response deleted file mode 100644 index 3e22a274fec10dfdaf1cdc4f1210a982ecf33050..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1458 zcmZuwe{2**7(J*6tZC4YCXfnD2nsQ`dpmo#ch|jCXvke@uz>AZ3#pXZ+1b6dd%Mf- z+_l$4Y)F+TiU9?!)HD_i3D_7bNK9X6_z!CM5fGvT6_7OWkKo)D&YJMo?alYi z_ulv3n-%Hwnh+EqkVFxzUdds{ro^T^Ex1GhlyuRMYa!E40GvUdPiSq9>U^B*;&l&Y z3GcYnbZlP%&2^2*)lCic4XaqK%lCQLb11>ZssdmFWF3vvs+NO0SbZ|eeW!raSovWGHogB@`-+ zB7%W(hCqDQNedR4bhq57v;BR+a2&%T$TfWdJJ|#UM0@S)v^Ba%#aKS)bQ( zS=SFSsFGbpweH?FGAgx8-5jCFP{2Y>i$+ylkHu@SF2_+!)a0;CP#8y4B1R;*kh2iO zVpf{ENi+pCI(869F_0oE3lNL}7*ix!VITF4X$~WtAtkRp$5KERb@9j`wNWt$+?>iR zEjvwY%x2n*gVAleEFd1)m@BSjGLX1Lpsr%bLlsB)2v%ACbcFdZ)S-s4$jIU1m7Gn@ zEDNnDh@uQdnVsbjgU`B5Mb%=JhGcD0Ge{6;JSR(PA?r{P?jSZpNwqg2)AE5F5nwzj zK#~2*N+c34leCC!(2N4Yu_%WyCM;_*n7((&o=!G#}rY3R3l17oT9^}2h%}_%OlIo6UNaeUY=;Y%2GceDf1Fa zQk+jU)vMj%%?0%6RwKP-oYc1f%c_e-W;6+ z&7BW@bz+Dl_x1@NT_N8WgfGyA=Egb4ds+@%JQ6rr5kDzz8Hzq|wsL*PlTYn_W0|cy z3R{<6+BCAIf4Fzuw{;`aM+Rmq2gEb2#-$hE-hAQI;kJ1zpWfSg3h(bcRz;6?oUW`N zKKSQS_qht;V$^={r6Z%7*7otiZ(d#UOy^oJaAR!erT2fY9(-@C^03x(v#qdw=8u2F z GET /info/erubis -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 7edfb7e0938d0c35 -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/erubis/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/erubis/GET/response deleted file mode 100644 index aea5b8572d35e7e4e7dbef8fcf93ba936fe22c63..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1910 zcmZuwYgAO_8Xgaox<3{8459=JGO#5k7mno%3D6A~k00#Bk50$}VB(WpT3wCm9$)FFy4 z!K_pcK>-CtNR$Eyuv7Fh;E~ypMmxN}prAO8VgTWy1qI1Dqfy#P{lDhFqK;rtJmDrp zf*+m@A`T5d)bb~VAQB=?4);JmSm@PX+5` zNgNx6stsro!NUNk3@ENKYm8=Gk0vCgAtXUMz|gLEjxnQ7!h;bMh|%Lws7tcKm5gi( zuq4D}p$004cEJVnAWI4=ry+@*By1*|-G-5NQiEyjMgwND8nu`SSk<^*YtrBV1VV37jX|Z+85DYz#-!6ntx3hB z)>v=^3W30}!xysrxrnHExM;?UrKY}s4ADc36quR>m>LDgQwTEq%`viBTf5fDLh@gX zXmSJ`S$Pw}k^Wk&t$m&f1tzn`6Z z|M!8)fsDc5zSZ~&-}>qA52R}Y+~9*-NA|R}yDnvA-l%TmI$~>_PyhRFdy$FSc~J6s za!wS^!8&cripS?H?>bU>XhrqS8r6;;ZX7-HMd$~wRTTNA%1_z8GPOmPH-GI5)JU7~ zr6-||3`pK;*k`t#%FwACx-r=Izn zb#-|Fo3i-Vli#H6tZH~CH*Sl=RKw4#sbE{e>$;^Eu&lD~)Z?YArcUMXt^N_*mywKi{T2V{JZb8B*7C1Y1swgzxJPsFHLzA*yO7dR<#jfBpfeqP^KzT~R`};n z5TWPN&mRcnZ_aX8R;yQsr9VB#k~?j3b=$1_+iy7Pz6w`H)=sxhXs~|P6PW(^nSI?8 z%fIiPc1>5@w*Qo`uHix-abk!vGr+0ObMDJ54Y zZ%4L-zP+ijA$HlNBxYOMw6f8~=%iWQiYNCHk=qVcmTAYfPx8xWA6#B?Q9F=5dFk94 zfv;ztP5&}t<$c95$NG?88gC=L%ZnFRT-u%b`i8v0cHKtHz}>!idE1=neV-n+ho?_n zl#T8@uW#B~rakRP3sC_HjvQ(J~QqpQT6kaYmXcV dJ6<;NO8>E?4`edg;9!W1Sy1zyW3)_$`~gf)3i<#5 diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/escape_utils/GET/request b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/escape_utils/GET/request deleted file mode 100644 index eeba97c719..0000000000 --- a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/escape_utils/GET/request +++ /dev/null @@ -1,7 +0,0 @@ -> GET /info/escape_utils -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 53c83f3e5793993c -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/escape_utils/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/escape_utils/GET/response deleted file mode 100644 index d31f7d1fbb0c5a60880366d6c1ebee1fdd87731b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2133 zcmZuwYgiL!8cmzEY7_+ZQCC1lse(3>%uGT8K`1QCRj3w_RS?$63NBC!<)a2&^J1+Bu*@M35mWIfkUIeh6hIc>#$2HqnUs$TCnPPg(%V zaw5%I1sxI_6df`@CL%221DMMY1eD`h5m19!9fJEI7S;g#^$bg;!u*>o|AVlyf|WKJ zhi4D~W#ehlj&dwRQ+AXG9LtL+Yh~;@!~l$>jS*3Srw~s8Fh);5M4)(@dozTXMUfM9 zO63p~P?$)YNdW{{DcTwEM(=Q;5$-Q2Oe||+0LjsUf?_Rx2yHR_Uh)5<4r7>jGK~~T zez12q_`3FuoF6jC_Itp;O(BS+NK>yyfRb6EoI};aTd7c+fTjaMLC)JRx#oQxtVGZ?xx z&oVm1LS~?(3HWO;Il|fW@T9|+2387UTHy?)OqzoR;lVQ7;94{!F{-sBAP6H$8T0^E z``{{6k9+%|Mv7AT0+Q5t8^Bfgm%GB4i2WX();h62!e0#aBlVIyF8dN*YZ<2>9UANZv{dW*L+O28dTg zgC`z(F{uD>D9O-igR2REPXh*24{iTSQ+Q0AAP6)xCJ3g7Vmc%|BJTAMYNkavl?wh3 zYQn?kiK~58DlM+kKyIx{nO%HqNS9ALzKd zMEU8nofuY|wJGI5+`|5zf1mU0*PXd^=j@X!%|8tMci_1;AbTAel~EeYuPVKqB; zCf+u89j=!)vN>I~372khYbUP1bN5Tnr^iDsRXq5)?Bt2{d-KxPb+_&%m+x>7v`c%1 zdvne@&Yap(sb(wNPvkHuM?IA{&I#{&FOz33WZbs&HUu zPo{M4mR65%S|**?Tw%FDU+I`sL`LtZ{;Bf5bf5gdgZb1XQN?tfP&5d%w6C9R& zPS27a{;aLVuMXpuIQ*d9`{BKogDW-mg5t!0oaYW)XP(eRop7AdJ`Y zqc-kPV8m0&N%ae2VfS{&XRBh73vpmtN-ci<_-dqKL&APK#&v1tPfd@D*PlP{yEy)o zy?pz~#~rg1@XO-o^`@S=OHX}taZSmXfVrl7mNkFKUfR1Pc>K)=GtM`+Je8dB1Fefa zyr&mVPk(oJL)o;h<^pIZCCm~b6xHY*jn||gKWp(f3 zbTv^J@3duaU59X?{Y90>oR7C6xR-NRaNf}(kI)AbdisOU6+~7rwMPToBJ=JA>I#vD zI*)O)r&r1>4-@w|)uSzmSa^8vTUo6A{2`&^X2YY@$;`AhHSM`&562w)@^E$sM|<_n z&M(_++B1Um8=d2x9(i`#s9x?U@wTt?^7o==&FHExbY7V}^Mk$SMKsqqRvIkXHRaO$ z6?v^<4D9qD9~>jd2UyO9!! F>{l@GYo!1H diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/et-orbi/GET/request b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/et-orbi/GET/request deleted file mode 100644 index 76c1856b73..0000000000 --- a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/et-orbi/GET/request +++ /dev/null @@ -1,7 +0,0 @@ -> GET /info/et-orbi -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/install options/retry,path,disable_shared_gems,spec_run,plugins,trampoline_disable d59b382d069fc94f -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/et-orbi/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/et-orbi/GET/response deleted file mode 100644 index 282596b7d535431a6b8e78d7411803657884794f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1348 zcmZuwZD<@t7``^B?Kb$)s#Os)Rxng<_jY#g_U`sbYYdkUV$zzNNBg7IxxLxF<@U>& z*-I`^tr&&2DB2o@+Gqop9owktpomQrI!vU*0Id`|W@`pegV@39BT!;2pn5D;FUOLFLQBGwXR@k; zSJgHWO};agEZ?^ri~^fVhVN#8?OHcW{(sj-4~w7*Vu;jg8;2{ot6~{YL%Uhy>r+sM zm~AYNz-jV0h4t*lR;n0MaR^f;DiU(hi0`4H`p7X77OEC@saOo%fW|mfU7{LWE7ex1 zz`T04fEluMumzL6DNqd?X` zdqB8pV3NOd{-_G*>dOfRGD^6vFYz56xM)~J7H-qzCk#eaIy+TyaPUc? z4$pfGa7T47H#Ic$Cx-u_3zy0g!#f3kAY2NpZTu; zo-?Dn^WE|3lV5$X>yC}{k6$`^*ThpFZF(s9W?yA&MEddM%iA8wzp5Sh@bvDzM-HBC ze%m6yU4g0S$0sHqoaptPv*%yCW=lsZht0>{SYK>;t30>)kK5K}4sLztXlv{FR}Sx; z0{_0(_xGi(>rTNFw;#H7y1d_QxiIZFg4-aC8ur?)gMOkQ1_e{pip zzK6eDc;bhP1M>&2{4_IuuA}4rbmjD7{?P}Xb}xSW^USpkk;u|gQ{?+?`Pr#8k%;gg D?L_3H diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/event-bus/GET/request b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/event-bus/GET/request deleted file mode 100644 index 9b03349b29..0000000000 --- a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/event-bus/GET/request +++ /dev/null @@ -1,7 +0,0 @@ -> GET /info/event-bus -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 7edfb7e0938d0c35 -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/event-bus/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/event-bus/GET/response deleted file mode 100644 index ba06cf15af1d95f3c5adab9601ea315560c98eb1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1281 zcmZuwUuYaf9KI47($yC!*au5Gt(7M9W^Z?IZ*Omp!`?&wVdI4)7E?;f-0a-mlKtn* z>?PNV58@xH5MuQq5tLesMFgppAQhpl7JLvZ`TPmObzCZ^!i?#%Bu z-}lY;`=)nzcp#<9D$o=Kl%9}q7;qAB$mw z1cniJ!+=>}sMz0C8tm)ods5UU7=sZFIl+yp1=Kw7Lz@)JUWms;eKX5{5JAWSw^G^A zzzB}1%j+--Jr~y@B~eH@3~Y8_2KyNCD*N()Vd_Skw?LKih*_yr6N<rZJu_ErzWG4(AkD$n9G7kMbaDC_hn(s&5z;Gz4A&%(U*#=_s@Vb_J z6pSP8;2=a?Ib0aNl!+)(Zc5=~XI zX&bB1Fmf2`Sjj;%V-lFwOj0qFift%b<47EE*B7BvWJSqndSfp}g5HmWQDsk5`nn2T zwnLJ*N<*I%RMAmJc#H&srTge0aydA%k(Lm~L?nfx zz#$^M~-P9GHn4lP~dy=y>%}N_hPiig_aTf2ThG^ijsw5l{kfx?Icp5`& z27Zi?2qMp|5uuS0S|c_ri`1@JDxQw2=~>u4SQO>vo&|dQhSwLc>T;pV5bK5|RJ<-# z&!y8@HJ!=IrePSWo;)<9BoB2dk`N+*i)$C^x;Kbqw-~fnheJaLr6#?=7!;}L5vh?w z>PXVASKAUFpPYX>(K7sPKG=Dnt#$FovnyM#{j5H?cq7sBihbey)n8WH{n^gqZ!LGf zT>7(h*FRhCtlloo&3&_Qr}X*N?GH?%hC#{PecJCTCv1JaVr0j$=lnn>{ywmbI(uB zc9yFr7IGKIuea-a_rCMf&CVJ5ljYVkXL192X=?Pq!;d}FTH>2a;4)vV~wj>g(t1XESM|YDM@h|-gUVF>$ diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/eventmachine-le/GET/request b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/eventmachine-le/GET/request deleted file mode 100644 index 710341177d..0000000000 --- a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/eventmachine-le/GET/request +++ /dev/null @@ -1,7 +0,0 @@ -> GET /info/eventmachine-le -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 7edfb7e0938d0c35 -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/eventmachine-le/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/eventmachine-le/GET/response deleted file mode 100644 index 399333eed786c73ff9a46c95a7d34eb0f2f950b9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1551 zcmZuwYitx%7+qSBW>G*OK!}u~f=zX2cV_lI%c_-bA4(~1Dwki*65m3aSC|WFn51`)NLWRU%leypbopbK_ z&dn|?oMNHPG{I05k@uRBS7ZcbM53q)SpvZdWKks`${vCb0!@d=8$kimWvn0r8VEyD zQIV*~I!hF!=lb&UbFy+K<64ETld7g5$j7QIL3@a>;)h;NQuq+AKg#kSgskYY7zp%g z&>$AiF{8F_Cv;AJ=UgM$%szQfjS}?GYEsZiVWt&^;onB7ZqSwC;gGIs#`op zh=9NnDKtj~+&mMY0!|LP0H7HM?Xc3oZFN&_j^CP1kR|L^n-TCl#7WVBEI=GyE{dRT^aF%RGBpu<;v&-3hn~1uhGDIaxF_Wzz;VX! zr5tFos0WSM5e#X!#b{zXjORTBp-KWtEQeU44z+UVCpjG29!K%Zp&2_xX6C2ka{P=X zvU3U_{*XZtVNtQ`#T?P_sFQX$g!5LYe&EP{buqhFSa4R(}-Co4z0zJ#QMhW!<6CUl(;|Kc`mSIk~-A zU-0qJgq3>h=*|tt)`f_wdUlraiP?_jqiRq5y6IYbU3A6bk+%BusfTwRpEza3X%A6i z$aCp?t~UI2`nKndzBfDU>!yue5?XqB*ZPkAGftiEH|(ux^1;O4FGFAc!8QFhRt@_3 z?*5Vy>5IN}?>;&G`kLZon|gffn)$H#M0rR36|XXwpC8!vOV`);?bA@RH~F(mP4h{O+}Tn{Q7Tvca(xx}Pud6khCKKk3kWI}dC6cfbay8j N_?zKF=MoJD GET /info/eventmachine -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 7edfb7e0938d0c35 -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/eventmachine/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/eventmachine/GET/response deleted file mode 100644 index 7a3004989ff97c1eeac13410b2d70086bd7f323c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5985 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 N{Kj3;y+%R7_&?`n^7jA$ diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/execjs/GET/request b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/execjs/GET/request deleted file mode 100644 index cf63673d17..0000000000 --- a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/execjs/GET/request +++ /dev/null @@ -1,7 +0,0 @@ -> GET /info/execjs -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 7edfb7e0938d0c35 -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/execjs/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/execjs/GET/response deleted file mode 100644 index 405f37ced1a43135e2325aefd1e66108b83c8cdb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3129 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 W=T#IG=I50ZMm|oxQc^>2gf~ diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/extlib/GET/request b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/extlib/GET/request deleted file mode 100644 index 9ddd0401c7..0000000000 --- a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/extlib/GET/request +++ /dev/null @@ -1,7 +0,0 @@ -> GET /info/extlib -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 53c83f3e5793993c -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/extlib/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/extlib/GET/response deleted file mode 100644 index 4c8f271d5e7ea08557fc0c9b2c76a40184a03e7c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1732 zcmZuwc~I0=99~Z}Qn4!HS)*2w4%yvo!XDvh*8vn1ki!F^;@j*?h-8zHWRa!XT0GDy zDy^fA^{O&D!+0MQkJ`h6jCE?Yo_K@xKtQKDYO9n!P^r%Jk4)zMj_>!q@AtiNX=xKp zq>;oeW;32N9%E%mhmua{J_Rzk4)b-BA_74Q$JuP4YEX~#>KtLm@(E4_9!SWFF36I` z;Hl1pn52}rv2lqgm#=ArqRKjCTeA#KhT|UD4I^Em%;uo{n^XRSkYr5~IIf+823fBv z=srS`MS=AZDpX`uCuB+VF}NFYz$@y6rm}dj21PD79M@P?P~HsT*}AT1jLFmn1&uuL z@IH+tI(Idp%`$jdS>LZAqmk(E8+xZvUculQ}$b_`wxc|Zs1%idPRw&vGd zUX9RnpbPBF8l;DWw0f&dqX@4?%z~OuSd72}3SgD1#RC~mRg2|z^# zAZ@srVkkR9+VQaoX&4LGY}mFdRTdfC1M&&L!$_++6j!`1w37BsL5W3}65_xY2nt%T z3Uj@!%mp;WMY-%G2VI1NqAdi?*=YiB97nh*%4M-YGfmT=wZ$vxf(Mz-Y&4r~l#NC) zFF@lx3KGgCqD)*&WQ?1Kp=`D)dtfAqDqMigffAY$o0S3tQNzP%BWbr9Ni+I~F*HrJ zlN6!E>)8x$BWVn^o8|i4B)4Ieq!{v@h zTa3ZS#ihMI5ZQu`SXt1yRT34wE|PXol#QgUq|t75SSfSp@?@H!8ZRR&jX*&ZJ66P zq=a7aBBr!j>=ka^TTLtv;H&0_n{Q;;-cJi$GO1wBoMwaVaPjIF_n#(xcI5jxFB&fd zRTK|;@#oX$7nVLZU3(bYQk7A)@j=V%f2xmHRRvc1c2~KQ(vq)P3Vn5%Ic2>YzFb_Q zl`N>--~FeMH33n7mpo`3A9d+g*Xx(g^bSho%R)z8?{q4&!}iqFq}ruB*4!SDK6&MV zh*IJFCdbx@i_iSZA9Suy*<2Ko*#FY1RRJf*-B}uDm|3m|mlfWtHY&;>+?aYcFre_S zK7}XhJpE54hpg?n=gw4X{N(fgPqZt3dvh-bp1D5aYW{)sl<(NQ8O>rxOxfukq{WjUAnpXu|Yr&@!OeY*qZXVS6MO2J;cSl?J1ar)=S5v6jVKS8-hGST!cG}aI#wPnJ#p?}NbNvJ zqcU@2grTvcotgSgk)`V&@#ztL(uWN%YVu5Bq(zm>mTdu8$ZgHO&K{4IXZEj@bjpyueoLD6M5H#vjf8QpZCrsFiMJh|WbyxQDD ze*0n$&B)45s&6RI@@onn-kdbz+k5won`$2S4EsH*-`$Y%Md$X>35i4XOO``5waKUV zcDeO+>`}a?soc6LDQjQu%JhEvvRN73k4`K2u=9{azlu9UJj)ZhaaVWszfS+!!}Sza zI-^(EuT4vfF4Xe3ZF#)mk#*Y5{KBTq9mt#}D&zRQDK{2Z?2IZb;Max^j=y_&;X`Jm tqbah!sO*;!;#bNiKXji^R@}3>rgVN?QH#M~XldzWV6fx}YZrq7`xib{r GET /info/facets -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 7edfb7e0938d0c35 -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/facets/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/facets/GET/response deleted file mode 100644 index 582f7da938ca2dd370e11ecf08521f169ad43f4b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4021 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 GET /info/facter -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 7edfb7e0938d0c35 -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/facter/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/facter/GET/response deleted file mode 100644 index 7d264fc868dc4ea0c97b6bae15c04f15bbec3ec2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6041 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 diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/faker/GET/request b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/faker/GET/request deleted file mode 100644 index 1a792ab890..0000000000 --- a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/faker/GET/request +++ /dev/null @@ -1,7 +0,0 @@ -> GET /info/faker -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/install options/jobs,spec_run,trampoline_disable,plugins ab677b2f2db78951 -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/faker/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/faker/GET/response deleted file mode 100644 index 0e72d409401490d398ea6f734c38bc01d87fcc43..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2507 zcmZuwdss|)ACHhGxAfYO%TYF>GxwS1V$w)cQz#Whq;qD@Ohba1_Q^8o;*vM1Y%aTnZtp3y-sjoB&hz`;KA-RB^F3aHfqpawl>sp6 zbimh#BGYOJL_>gtL5Bzc0*NAMIu(R!gn%p@!f=ET=?MkMqeOuU3{oSYR!5*(4K4rz z#49~~{iUALRb(y-$3Y#YB@o$ARsb-BfLbd@M6gOLiy-sgqWnEVqs29-LNUStM`U^o zB@CcWt3qW40U$>dkX}WAI3@!Y;D}1GKnUP64Ap%b0>TMGhYM)5;dX?og!D=(f|Hem zL4|zNJ5s11cgCqotyZZ*ARUTRWm>fmK-J2BD*peeBQum3v=t&CY^Zl6__g+%oDdj7 z`=`NQSl|Ript8>tNSQRGgu~S%Td_br4n`t40WztO8rr7SK#{|gX_y{1C=oRd%Jpg; zP9vd)EgDkmYqv5SCN#s<6oi130>ECua$)c}Ts{-xaky*_htA+Jc!-M}M&x`pOQEo* zs2~!Hv=3FFh@3Q9uW<(G96*A=jkzs!^tx5o>p(qei zA|fu`8PMrr(#8>Y5si$TsUbNix1l=nC@^G;erPR}1c6*wGCIUnfQUlI0@-{y7lb+F zlMg{$n2#vCXDxJ>dv6*B{50UU{9jPL$A~RACk%wG~ILpE@tr`(A z$O;&eMIagyMY72sLRC1xVN)4AE|ozizZ?OZ%^D%8LNrPuoIGGQi%WrIGK4%e4ALkO z^5S6wf#4K5M35*F40Q&WJV30&zKFsXFj)d7e^`{QC`67Rf3mF*ra|#=3MmO0pu2E~ zfQBp{{!1bdL_2Ntn#o|Y8KA^pOs0op0>Dce`1JvXqXfxn zXu%;(Fw!Xoo6jQcWi#khE|br4;XAJlpgXVipi@X9P!MTzz9os)#>586~yam0a1KxEPqC*ir2X6uDpz@~`f2LnrEmj-MJCm!4bOM&7AAj9~-{BdDZUKOvJW{ggr&1l%at?swOR$V)`^!(nQ#XU0+@uBzrS)2JM)b44Kt!t87 z{)B7t3L*k?>P;8C30}jf@)%wE!b{Z`0xSKcaiK{sWAl}7pNUvmrKV3D(>Xo+HX;K20mch8@CE}E3lev{=*S-`Py5LBC|2!1}nqXU+z>Jqi(vl z2P|=zL?s;aEAuFW`)r~*|NxMbeWauon^1dtn}x)gVAAy85PTtQWBVd`P{yGT%VjOc=RIFGz|<+ z7+=T?tMN4%J}zrvJMO(bCESp^9mSJV87D&|epUOTny<9py!y;@S8knk9<4h*Gkgp*a%;pH_GhZepy->3~#^pu^zFa8xN5gMcJ)P+ojkSf<0++a-1N%Y8(Ay6l}+6o<3{%?cu#up zs;Mn5%9fI&?!mLT{+VoWT6tucx!ZYhw3Nu-ZvfV)$Eb3fee z_H>tB!t1KVGaajOk2$;An--jVm)I{}&{5EnU1W|sPm7qiw*g5qcOL)j>5-SMN`p8C zh_QYQxOyCJJpSMEflQnEuTtZebrzy=hqrIHUhgtRN;$NyX-3(hSV@K6b@y2!q+r89 Xw}qLR+2EkLS@QN`)&(mwGs^z}Q~xtS diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/faraday/GET/request b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/faraday/GET/request deleted file mode 100644 index b3a3457e45..0000000000 --- a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/faraday/GET/request +++ /dev/null @@ -1,7 +0,0 @@ -> GET /info/faraday -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 53c83f3e5793993c -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/faraday/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/faraday/GET/response deleted file mode 100644 index 1d13db98b6058a3f180874a20b9cb08283bafeb3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4141 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 PzB|jOvIU`hd?Nn=Ho{st diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/fastthread/GET/request b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/fastthread/GET/request deleted file mode 100644 index c90c129e08..0000000000 --- a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/fastthread/GET/request +++ /dev/null @@ -1,7 +0,0 @@ -> GET /info/fastthread -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 7edfb7e0938d0c35 -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/fastthread/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/fastthread/GET/response deleted file mode 100644 index 86539a15b7e042371dacabd4a6274a3878f89b81..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1679 zcmZuwdvHuw99|;DQjZvdR$Y{2V(-3Rxp|miHzFdHgiu3z_TF>vUb%bk=H9!TY}7lY zLNQWJ;+3e!jHx6Q$%qh*M=@j6s{}iVP-zi{h7m!fCqc?g|JvE}`9txcFSfG=HDvKL}osc$TKSG)R#2 zh^*|x-2%swK3s%uL6mWU=X?Z4K^k~C8J9#73y~m4heTi!DYEYOk1(e!yCp)S>4bu6 z26z}Xl+dQ^FXsgv~f_e&&fOJ?$i;gDET1rbf%nm>sD4H6rD7avh4sAF9nGSixVoyr~EGJAlcA)ffQ(4&B8xn+VlnP_o`e&6Jz+3+dg5gP zsxx{oULf+Ug*V!SDRLe8I)FXbNDlUI2GZg{cWUs3FhIW_iieBJ1l$=B`0_clAX zmA2g0-Z&Xt+f5szs*EVA>UmVL{(eyOtPnEGaK?Wxb?~OCVS9w~=fI zynX9Qzg@xDlV!O#_Wn!-UM}1>{mk?!Pq)RMt?QfkF~6$B?k~wJ+_bOlRlhsIjicej zhj#`fRmP27xVSKRaCPw9lE|4W8PGJj)c@hkY_pq9-)%mL?r;{W90RWOif3-(`DhRr4F} z96Pc7^`Nz*Gzt16mgfh`3v<3toerFzdMt8;rueJ8oii@p&pVr15_)86 z-J*sbFu%rgvLt%IxIUuy`KA7S8vRVei)T&EX+`agsU^b5LgPn8`M#%Bk!Kc#J%htD r{;Id8lpLr%AC=lT=h-D+>RQjsRZF@l6z%N+iq~NU$ItgrD3t#Kp(&xG diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/faye-websocket/GET/request b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/faye-websocket/GET/request deleted file mode 100644 index c8f927027b..0000000000 --- a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/faye-websocket/GET/request +++ /dev/null @@ -1,7 +0,0 @@ -> GET /info/faye-websocket -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 7edfb7e0938d0c35 -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/faye-websocket/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/faye-websocket/GET/response deleted file mode 100644 index f6f8f0fefb49312f19c317d3324816884dbad8a9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2955 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 M$^^jKDI^m4zhw>acK`qY diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/fcgi/GET/request b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/fcgi/GET/request deleted file mode 100644 index 7a32eae5b5..0000000000 --- a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/fcgi/GET/request +++ /dev/null @@ -1,7 +0,0 @@ -> GET /info/fcgi -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 7edfb7e0938d0c35 -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/fcgi/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/fcgi/GET/response deleted file mode 100644 index 9930be60e00bea3421e6529ca18bf96b8cfb2aa6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1395 zcmZuwYitx%7~O1@#}L7o2vIA&;)9BNXJ>Y1cW0-zqzT)HWlOVtfP&Gxvv+2vot>G^ z+}U<9N*W#p#I!_Fqs2<#huTE_A=+3BK9a_0nrJm?#eyc-1gs?n0yQydy}P9q5`RtR ze&2V_x#xVhuBD|Z$g?~MaU9szz$lhUut^}v+gJt!caxxPAlB^wFIuYNNtgo$aq_u9>g|=f6tQ4v;;447ZO5@6uVJRK7elyE|5T@mt zx~eW|aIxY!I>|%ZGIS*m9c)_;ftG3HWst@y@(co9M*$mMY^WP6fU7vVee)5>5MsM> zFj$1btcE;|#V+k6c>~`xyVR)C`@5`WS(<^7t-GvZWh;Q5)&8&fR@5a7%|SUtkh3sb zKr9X~YPmt-5=3-mp@;fmQm<}la|P(RunW5chFFwEyDbxS74-xiFO}DD)`e*=YrDY; z1{0*oV1uN@#E2S8rvyG7l~QUn77lZ22*(6Lw4`I6)R9IUEADi55mdN(L9Rax6mzS=0@YhASgn0N7rNMzWL?HWi9#QVrT}-KGIM zxYH{r*C`1vrXvxNLr}zshhjJugE1u>hS8Lo;yGSYB_UQA@l2v;>C$m5$Au$8h@N?f z(r0aIRLY>0`gmnLt>J)@ajYz^z!?Gv}OCk+y zY9u2AAsS_nqF}ly4l*@Nmp7Fs*k#g)P?8!)r=Ccl+FtY|CWk_@5Gi_+(-FN9eJ?rW zn7W%`s3S56i9)!*QwXuR@EsW25E*(7Q;jZmaySiBbZZwZrB8Qeiap>#fMH*t17s63CEb(GU3bZwIfwnluP$3k!df`Ix8$kqWXwXI; zHaBl&iu4pCNw=n!ZVhWW8pD*mw8FRb;KUAJNlRZtdntG4mf5N}``ht(I2HM$>_A`Z zH|&eOkDouhf35%S-rd*c=H{05Ui-dm{>q7~;{#{T>=|hpGwwHDpU4?sU#xG^ljnYB zjy*8dzVhL<(aa|kkFH8r_FVV(zx7D-h1Emz7j`u%twV3DYuHlSHFN#dQ%8R<|1uVc z=5|c4`umG@Cm-D3R5JVu=TF|zHoX2)=`Zh>ET8lZt=ay3)m;Il*-<+5c&2x!7^n$GgWjB~G6{e|T` GET /info/ffi-win32-extensions -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 7edfb7e0938d0c35 -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/ffi-win32-extensions/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/ffi-win32-extensions/GET/response deleted file mode 100644 index 23e55049cec7062989f9510b357ae63e56c9b86a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1248 zcmZuwZD<@t7(OkjajS^tPtqz5MUC2~`b*IOHx3HLc{1+FGp6&d%;F*{{yb zrn#UH+CqO+6hA7c{h%!fT8jk*e~48qfmPjl+8FP?iGqRLLBuqvTZ4)k-tme|kwlaf#PGW}B zOonM99Mr5$)VEKLkBx7G+Kdo5LCwU~X;1mrD7Wu=YNKhVTtAC-kl$mf!r5+Sh1Cj?S z6VNF;5nHu)rO}7;3pGg7AYvp7g-X+S6oql{f6X_du3!Y5OcP1?(%vp&Z}T#j>m!6D zGNemAphp5)-Owh=I2U*y6A~LLiOFo5kbONqC7!#TfW-oPd7O#TsKO)(9JJ9URAWpx z2{TM$y1r@KhUQahQQao4JF-!U2*80Ap&v5OK@(|GM23YX2!{aZ7Sc?|(BVO26D@@j z+Gahkcp5ntU96r&t108c$D>FcPR@s=7U*>KeQ&j%k)xNJcCPWZOYTSyu?943ff05-;-BpCc<R*b3 zNAQ!opSsW-Bp07M{?$DLn`Vza@zC7K#n0#aetG1l_~8vlPMmw^(1U}wZ}Nlh-+lk= ixz-mCtQ+`s{Ut9sJ^#log~H GET /info/ffi -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 7edfb7e0938d0c35 -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/ffi/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/ffi/GET/response deleted file mode 100644 index a27bf5159b23b67459c7a7e9568d3a801da054d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10318 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 diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/flexmock/GET/request b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/flexmock/GET/request deleted file mode 100644 index 8a65648101..0000000000 --- a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/flexmock/GET/request +++ /dev/null @@ -1,7 +0,0 @@ -> GET /info/flexmock -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 7edfb7e0938d0c35 -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/flexmock/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/flexmock/GET/response deleted file mode 100644 index 8a5149eddf560d271c38d6975c54dbc7ceccb781..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4116 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

      K2-y^xM%QVVQl5E|WU*cSwhK?J z+SX=8C%K!LpNYslLz8B9C9~h^Ch;1=)^~!Z0_`&?2Nb>cFQ@m(Iv>}4ebDKE@y3M9 zYO*@gDsCArD(%F)@~H zoIE}z9Ztxvv-=}Hd>@E%7O|>@c_zlSyOA~Gvzrid=S3YOBm88}Zccntc<+7Gg(izS z`Ea|7f4BsgT#9wpy)VP*F^g_nL!PP5GjD1Bd{OynR(yy+Tj9OQo}-1Y;vZ^dSO+V* zG8IQ}?#bBLQKNXw{*Jn`a$|pm)a=UBo~R7Z1Ia$m_*Yt989zQc z_NPD)D7)@QaGKFVKRW*W-s>5=imi%sHF<9KD%Brg8#WfsOBn17@{k+|Lm1o>W*~wM z;rcg954gK;TDJC^-mLA`SoxIivU=4(Mtll%m#X-1OI;q^qw%2t$=D#WKS?!H^1J=& z#p%SU0I@A5GTnxVrLW9k-;Vz4_$eRD7mCPy-uUM%3Qc)5KI8po=Q%s0Hv{}gLd(L1 zT~>=*rFJ*^*go4*HdSBe7XDzOW7Ob$k`#SUK{50DTSs-a)`*@?99Au+Vc16I4WfE? zfyM4fNbI;^Il9mdbvG}9+Sv3})x?UW5gz%6*oby^eRMx1$sPE9JJ=?BZF7!zf`BI#qtwNsL%D?$sY$bbimhomOb}2 u)0Uq<&^G(2i{R3@KhrYB+Hz4=1!c0~~p*uMd6h-!BL diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/functional-ruby/GET/request b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/functional-ruby/GET/request deleted file mode 100644 index 58829cb577..0000000000 --- a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/functional-ruby/GET/request +++ /dev/null @@ -1,7 +0,0 @@ -> GET /info/functional-ruby -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 7edfb7e0938d0c35 -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/functional-ruby/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/functional-ruby/GET/response deleted file mode 100644 index fc5767db13cdf5ed2a320c8ff5a897d8315e30ce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1721 zcmZuw2}~4M7~Z0IY`sZ6YnW&w)$Z)h-pj1eP~8P8D+&lGqQ0GZyNvA43^TL9Qt+sP zQmc4ZYw(B-HV}d>K^yU?V67)dt;PeeD2l9#Vnu5)r4Ll9Ns~!l=KcTszVChi_afrr z=BU(4HKrj5EP9rl;#di?5-xdpNMaJqlvKP6FsvD)Qh*>rDa0c=aFaX}cL=}@agLW5 zjulBPHq2&;j)@G9oQ-OkqKNYXCqb&GN@8j==H_S^Vs~*=DyqND@*f1ti7exA^l1Nc}|dUj&*rSjD`;2aY?u+P*{)%U5+3#CQ<^!zrBT}ND?oSDpfBO zR62pjse~fxl)NtZ*4e&B2fDwgbaI^21p&{9N{VxvF~;ruzvg#Q`!JjWNCy%SUY+eh z>^=NO%WDcz0un>L>Op?6$g6kSL@n+S@eC+RxJC)wAd6!`Mz0=~;IVt1&@JM$$IXi> zvm8pmNn(>A1++#75lln9hO#^KT1cCW8k#VfXbk~@agy8x5F8o><6t07Vm6LdU>YN4 z0|E+w+K3T4l2D@$3%A9|DL|#b-dPEpi^SX@69-NhVjvV4@3Eti^i2w~6vAYY24@z- zqX7#r&C{ctK_rxeFc1I`xGq?4!gUU<8V4q|0jEtG2SGdZIzngYIpSd@#*IQpC<($y zX!K~$0}#ENM@HFQs1j)jvCvMapi%_R4MWtZ!w#ra$RZZ&;uyfVL`<(!s!ax^nn0_b z)akT+B3+PmN+~2}B(!osQ4l3X0IUg+Tp#hsQo4QApu8ow!?1M)?fTVSo3D*~`r=4ju`ha0XwC|wcU8gi)<@fx zXLomWmIpaoMm;EPmrb0X(9#fbtZ+>IWpA7E(&#fwhLwqj6#j}2_a5(;_kMA}YWQW^Y^)eJx$bb$mIs!!>6ZNBs`;n?4C0T;0;e6SOI&}W z?Al+_tZZvd$^G%Mf7j=z_WLDsft~wCXO9^FaBxe)@Feezp^ffM>J>X=`0RI(y?XJs5H;+uEYeVCA&|y;!b)DK?w&;Xu4fC+;{NcdX zvYWp9&ubTl-nx-hz32JS_H%SXNAA2CGpJSiO$i6@pYf@u)ovSWW`w1;#EtbqmE|Sd zqW2yvnwoWFQ`+`K+io#^${(J6;+m+us+yu0d}Xz@J$C3w%dDiBz{f+IS_{`cuUh2Y zYxTeQt+_xYyA-jjdqH*ihE)Y8V;jz%Ru4=fZ8=$wUz{(aeqNTe>er0ShIK)Pdt1J# zc(!3?h^FxOOSe-)eEw3zMqks47VTL}eq}&J%ks>uHG8&v7xbW}uJB2$bRnSne)BIo z4^Rs#Q`@3u8ZzkcsOdv4oPBg6GwbS;<{wTaOz+gSj_beaZr#ou$%)qnADCOveyOyh m#5uWcOVsWzzoH4$*tX@5yJa$2cXvP8vW3T=jq;bt GET /info/gem_plugin -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 7edfb7e0938d0c35 -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/gem_plugin/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/gem_plugin/GET/response deleted file mode 100644 index 132f215d37286575a400db3a12c3765114da9f86..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1293 zcmZuwU1%It6keN(ag0!~jrd}&K~llJv-7vRv$I(+kWI42HJXIhB2n+m-kF{3{5khd zx?3W(7R97R>w_X<>yti&B1KHKR%r5IjTQqMvDS*UpwNfbNNa6NEAj58i7EIrbMHCl zJKy=vcl(BipGb(j2qZxO1O1%gdlY*V(prEuKyj5O0teY%78qp|5=?UuHKEE?p&23< zLqDLl?-30QbrtgigN5G0<1AJs1O}l`u~Cm|K+FQyFX5c-_(p}r*LL|2!t;q|o8~G9 zf{iG&X$=OxV;eOX;=m6n^gXAhff6=R+G zP-O9#uuNKW@S57yM3c==c+2-K2cy6yyy3f9V7u1;CEtp=ieZIl3{ey=*VYjm#VcHH zwjdNy+gQ$FdU#B$ThfROBLcT$LZQSX7wzypw7tP65k`8=!Y+ZO$PGv$%VCNv4YZd8 z9hX!Yn_~S(G6d5U4U8o$B~3-rm3GcS434eBHf>zeK+*T&KuUum3Yh`KG!SG>RyA1! zy~Sb9Kt>rib`|=L23%By$ilgl5C=h|vz4rF3VQ~_^cV+ghaIp5hxqxZ&fI2AWD%KS z8keAIrbMWSx&bqyDnhKQN+!uDW^k%r5_!~indt;x5Rz)D?y(55_HMw0(j68lcs>&&#vin5m@N|FkD2D@0eai@X4!tlxgmTk&NN$gx#BxH|E zR5G%h7Ug7`Pp6f%sK&Pp3Gpp?fnz)vaM$uY`I~!)_pm)XH8?c%7}sdeFb0`vdYNf> zKeRZmZBKJ7J@MmHu_n4N^V+6ITDmV~zBo41cIv|W7vA`lKYY6NyI0qDA3tk%?228S z+Ir&BweekB$8Q`=j4YnnIsU@#*^#-amdbs5tM7KaUg*g5jedOly+=QKd++pHsnN`z z?W0FOy?nKG@t?o1Ei^rIrR`$#frn3`Q(sQZ_HVqtE_b5&s`A&id%O+8{uw&|=J~1A z@iV_YefhofKlg3A^ZpH}bNX{^?SJv5Lg%(8D;sl*GxJAYaqV}eTkjY@w6u`jGuJbD z<--=`lW$*s;J|0|-*h@k-@zYXG5yorgI|;9W`5sY+&L1z``p60NBhkW1}5`o-P7D` p^^f%@C+4ny-_`xgcs@7j0l#=2N+X{jmZ)((Aj__kP#`xiGA*T(<= diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/gemcutter/GET/request b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/gemcutter/GET/request deleted file mode 100644 index ffa16fc0dd..0000000000 --- a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/gemcutter/GET/request +++ /dev/null @@ -1,7 +0,0 @@ -> GET /info/gemcutter -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 7edfb7e0938d0c35 -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/gemcutter/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/gemcutter/GET/response deleted file mode 100644 index 22e016a074985e103475b016430d04cc43da28e4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2357 zcmZuwc~}#78jf0zMm(rWMG!`%+J#J#$(>-7C2;U@2om{v`3L%V`}h&H1PlWWs2)e86IB5KxdU3g3=v8+da0VIf6VeHgiep?RC4(T z4HzOdqAJ`38uS{K)C8i4L672~UZ*h$02v~OjT#)pP${qqLp1VL?f@o5Rfdm`040ta zFaeD=358G17$|70i(H-5gb+sfaNkihl{WvM8cqRDMw&`YL3C{iV=*CN7+4hbw( zBRYab92E$wG#J2UQ6V0ON-$C(wt&TAeh{fabP8NagptYQl3}S7A)NaV(w z$PHDGD#&E#eX~evb6Xf`T1H6Zw^>}9q*tzCq>Pt5^Mb-Sx2&Zd=eLS%gPdHA{lX_F zHg-<6h}L1E&VF;>Ko3{{_^rph!Mc+1HMP%2$NDW-DwF(Z-4Xw}mexjZy>M_(*j0y~ zB5_DO=<4A1sQr@JN^#}XF4DwLZ%=P3_q&)=y)Ue|vXyB(8z6V9j6S@A>bYegGqCr_ z;WIto=XWkDN92Xe3NDt|I(2TdzuSHwL%983z7Oa8(9L^SO}BZc{OoFiD^td5o~13B zos63^>iij%&y5yc=(;DsWN5YpIvxgbtEI{q(S{v%yB1q#pP3t?c45ujmqw| zAg*eMe>|id^QS!strd>{sW_8Y)75;QxsHTvhg<@ZzF{ zhLRUU4|nG+X`?la@U7QMbyxF(HnkTV+V2=SGrnOwkzWSV@4fC@!!m zU>$19THfOGOYn+a0d{tm{hY&GmR|RB+1?a)<>0;(pS{_<^)v3`zuT|$3!nLmPh;@v z9Lu97wQS!Ptg_0^*re`HtWFWj-ef=y{;N0W=zU(f-yd;sYG#IqFZwsouqOWD^PK34 zXO1y;*_W6LZ>I-p@%vlLMrW*`HF$CxsEb>nY^FLPD>|lnxFK8QwzK8N%9WX2OV8Jc zZr@d3vDDNL=KPH$4>WYRv{cWzv#z=EQT?Y;#{!mdrgVi=ypE!_EpCpCj<7&Fde4l3 zfpmZ8f#h)4u%j+^7i6R7#JROUZQA3My>6<6md0qh)Vm`HWwo_zZT%IlhVQ<*e!r>> zy4c#`)qOA1{l~{$hC1?$(U?%|Kv=-T~-`HDP)KJ@DU%I6w$RqPqYunsmZ)DrDE#W7^oi4wC_^5vU=D9sg1OlivI z(Arz>y8y+Iqe)Zo+sgbpkG0$H^oqiLzX&YcR$B3?^f=~7O>NyF9FC!r2ESflih5I! zyS_N#z~;(?xr19g4k<5fm~XD{Ntm}KXG#RQe^(ckmvS=YCqtmihW+)GGZ1EqwIlM^ z&#P~k?~_Zs0APwE*VlfXeN*Zkd#i2pX3twOv%Nh#c3gZmlKRvTno;7>JAJs$zooh1 z5?>5@Eu_q;5DDlvl>o>fn|2PQF~0SSn0>HZU0xMu`*TEBf7JEIq`ac}g|SDcZH!3V z(=?W$+-rdmnr%GpvMT?}mx+d_J8qPem0vqva!Os0cV%vLZpH{jFf!%Lk?zlj>y^9aq%PQlx+NqlIO{GPKP#MW8&GPVy8q?bc~Ad!(vV$7u1a5E z6H%fq>up#<&7K*Vo<822mRi(Uw$!|SZU#HbyzQX)38yjo&Tfmfj GET /info/gherkin -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 7edfb7e0938d0c35 -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/gherkin/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/gherkin/GET/response deleted file mode 100644 index ad5a09d634f1be3482506da4718451b4792374c7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24605 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 GET /info/gherkin3 -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 7edfb7e0938d0c35 -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/gherkin3/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/gherkin3/GET/response deleted file mode 100644 index 8b0bb49fa292ab1a3cb3414a9910f879c6bee396..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1386 zcmZuwTWl0n7+%vDbQJM{#H1wlq`?s4&hA|IGIfo`Y|B<^wQUe@!82#h&JLX$bIxwN z)zU;r(fFV?tt3XEcq8<|6ciCLwS#Uan7*rhxz`d9-LchRVCL(8oLC?Yo;;tG|P1n!ux?oF)C#>Al3oLGjK|`J=DSSi&_4Ia6RH$*=%J7 zf>A!OXp#3l+d@S?z`hqy-gE7u1`M2qd7JViKwuTYc6L=AASkf>#UYTR)F)arT86?A z6XwkbCajVcZM>+rQkZ4?lZfegrj4O*kqGjfI$$~Gor?dDTEQ>_Sb!7;rQS+#p>|QO z4wTsL1bll6LLs%#{0K}km&sYKu52aqdBS&MLU}0y9oX%;u(LdJG|1~k6FY=A@{UiU zjH-ODl3EMhW=^MWxthZini{B0LLn|mvLUE)LJ@TdW0XLO8W$6~A*n{9ma`$_VyCpS z7B)1{?73ke#X&O+n1RGN5EM;}Ymx{Wo7*`AQ4W`H9eB0|9N5J}6Q^QA82EXeowRak z>>`HgvKh>7%V!1&@aBAJEsK$4Wu%KJF7a4ZR9;b_!Y2)^^F~a>NQeuFeM>EQms$=p ztq>6eRZwIW%R@%*_)JCJW|>Snl{QQqM!CRqa7ttqIz%1VWh@OFTcKqWpehkD5sQcd z`>LA4U>3}3W7niP4akDRL4+`KS^!-WGxO_3iV0^x%19ali)oSo_5Ok;NllV8Iab!B zU_tgA*n2C$z_mz@V~VhVEUP7+(uKz>fF{SzBPRrWh)n?4cmPfzx6HDlM_ z-TkTcz@JBy%tu47cTKIC`faaF$nr~RtLeRUF^G5SsFbd~q*@79TH7ta6v zfx4plA!BC0(zCyF+q##&2;IBw!3)5_%Pu>-?zgkBuJ*f15$@!{vU%sP*4 zId&?Tb+r1n2-MVq;y`@*`d%kNt z_sWB-mmYdkxp<8P8tab=diG p_GI7PSHGHGxo;?a@YTXEnW-hWmW4v0xw)zk>>ljAepe{O{R`0<1UUcz diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/git/GET/request b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/git/GET/request deleted file mode 100644 index 063347830a..0000000000 --- a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/git/GET/request +++ /dev/null @@ -1,7 +0,0 @@ -> GET /info/git -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 7edfb7e0938d0c35 -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/git/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/git/GET/response deleted file mode 100644 index dc48fa6cd67e58e44b98f7868d35bb136605b7ad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1869 zcmZuwYg80v7+x-xjwa^yaI~1b)G2m`y$!oNh={=|3aEfm;lcfO_M2g3cV?ZLU04p0 zl~8D4r@Y@NMN3prQ_>JR2x_8;rlv?LQOE5jR$7o6_U)Qv=k#ai?0b8j_j%rLMn=Y* zC@rbQbs7ymdltrsf&vAFP`oZk;|k1IqFfHZ3o$s810)$Lv2KMWOjtg_O27#T(WUUB zAk%nyd`jZ%w4~`tsVJ8(%Y;i370CFrG_H-oouVDa+8iR2i}H`6{5wJrWr1heehxBZ z+!C*N376>L88407Aq(6Ng^(o%e@=!D_PH2bW+dMAXb8_y6qig#MFrX+$pJS|ikt%i7cY~H=#0U6C-;BF|DD=DgOh*I; z_#YOs0u-KkKmo}lAPEE2{afh?w@lJaDoC+0C@q*QIgx{<)Bk0>~5z^jzUlY zi~MRm?B;T8iV&#ApaM7=A8$7^&}1{QdM&gAmNf#(P8oI4l%Ca5CWaYLE}!4PXG?aMr+i#%WXq8 z_PYxO2F(-@2d;p3p`(!CVz+-S9)Z{xK-nmxiO?WEgh6945+y%(d7z!J zp{su&De_XQ)0qfMT0BYzVl+M@DdXWEB8OKHEB}6eNhI_lwFa|ZZ`A53BdIY)M;mnN z`RN+<{6r0gh@ipo4;D)N#|X6r8SU^A>FLQ>03OXqLnk#IofIib9EL?KAE-($z4VeQ zBx7Yt`2ypRr9D%M!-kEWIH@muM)$P26N5wBC;l>iNmzuZ?Rx8NA+)gOrCnX0iq{%C z^LiUT?`w&Rynm<1cP(xtdE=9jjUI()ThJM~tMJzWZ%#^myKqFF#ku876K<&add#({ zMJnj?@DnbdICSA=+Iv?IWk+;Qo_p)S618^BFpF`>@c2Kl13{;62JO0%H8lns3g=C) zQCBs5^yFlpxAo+gnwX|BQ?kH9_J>Im#o~%3k?zu~CjH>@?8?F49Ok}PZd|wQD_cyS z46Zf}9g@92xA@%H8DZ9?zEQ5S)Vg_tD$D9FmXPA=4c4tcZaiC7@WurbxuV6>b?dQe zUz(-tE3>{QEoj^tVP|*u*7b%uX=YVD)+Wpf5pNal4LFRCu8E9tBDEK3)CX~#_Shr?38Z%R`_EsGBx>?~?$qWPbwZ}LMb zo*sViO8Z;ZQ`wduwykP7$+$=V5&!d_tLud1*1CC`OeI!EPTFvNe};1RnSqYu7e8FLbxytS+IL4Z)6VntulI#6su{Fl%j3s0QuNjX zl`Z4;tquMyp@fT=JKVVJcuB66X>RVj8rJEnPTut9vsIkDX29In?=-XBWsMgaIucHQ z{cd8qb9=SjI-w$TUj606QxeCH-h6x2sr0JYLF-N(x!1bedUU+Ah1vZyEOeuzqSAN`E#+LF;cK&8U|1~`E2=>Px# diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/globalid/GET/request b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/globalid/GET/request deleted file mode 100644 index 15865c850a..0000000000 --- a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/globalid/GET/request +++ /dev/null @@ -1,7 +0,0 @@ -> GET /info/globalid -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 7edfb7e0938d0c35 -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/globalid/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/globalid/GET/response deleted file mode 100644 index a2b61ff1f1ce9424ae534a1d75e7b8c8c3cdc079..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1714 zcmZuwX;9Q=7~TQT6>U}2sTUE)D&uBJHrZtff*^-b4-lxw=%`<^-)1A(Bqmwdg-UHb z>ZrA&g0xnV9tx#OwGPz^=-8>%f?AKUj`e7@mV)R&6-Gr``t7P{XZkCX_j;c9dEPHI zJ3AwiG?SQxAh7fqMoyM=DCxNFQy_!s(5pu(A`qk)jB^21gLF+z*tt4xg3;#8Rf+YN!BF6>FnX4 zLC&KJx(`=mQQ&;I3Kdz^aaj_54Ca7N;1P9PQ#ov+21Vz@7);|-L3ufZxpZC8n8?V$ zC}`$^hc`nFRq8$wzSP@O=tTQ#W?q(g5duZf%$)3w!2~z|f5rcu+B1V!K`zjN>hJ9d zKCgW#7lZlH{%`Oz7Mc!pfqO~;NhTpV1JylSQMgCL^Pr~V7Bg^zd|3i{0m_l8hxPH$ zt>F%jThSsBRKPC3TF<+A7pqHwY9rJE&tTyMM?qkx*k}Scq8v2K(ss&5a3p1Q01Ab} zjUqr;$V$N}KnF72BbhMLh9xK}Iv_F%BdrW&Wh^u{eO9)S1Dp#6yjEqA!Q8-$10KfO z2ot7wSY&CB(@^5jObKz|^92PRhzgf`{A&pa#6dyI!A9G0Ktlqj37Z|a1E&?YL)K;m zFxqM%DSwMc(gimVjh6t-3n5X6;UQFIX2nBLlfsxWjBl^Q3VUQ94H}_ zlqH!!5H-w7n@PLPOcLm8WoVk}At^$M*If)|qbx?iaS&aa3M3w)<7a(3)Qk?GBajqT zFku$^3r&b<#$sV8TR@Xs0ifrA-diqEB|&o;ks=I6(H4sz$M109!Q?=w;6M~|A>yb( zH5WQ?7G3>QNs*VNg|^`-nF%Nzh%s1dTK4lF+$HFUm0uOVBq}nBq@yV+3ON~Nwpj^l zl-)Epi!jYiCX9#(8l3QSq2y;qm{O3@q7To?nrRHcqZyg#q^6^jGRrD&G=^>HXPENA zgZYNwjYSJLjY$q!`|E<_;qja5OYTn?a`(g^U-zE2Zqkp~xC7oPQ^q+z-+H;K>Yrb_ zPlQb^>;kcE2jY?npLG1x*?Ir*gRmt>S9Cruf2C{X$%_zTjr;P-9)(tpyuD&kzPn_`&egAunBDHC_l`ED zj#+f8;;2BgHL+- zCSUOG*0xYFG%I5HXQL*~US45)cl(8)%mpE?oEcy4&})|C3qDF4*tM^`eN5?*3a@zI z6}Q>5J~+LpsTR`5Tm@{O(B?}w*4q0tHGk~A)EaZ{&(c!koRzUf#c>h022$w@vzH|% zjlFRFYHH`&j=DF?#*=So4Og-AdERc;J$ct;ade}eq_VL z%9flkke|M|&^Te$c;0j^Z%9P^_mk^wB}uK}HFeu}{P5t~;H;7Jb}bzcRo#5G{Q@_2 z4Le$|qazwkL1cW|(Gl0vXI3;WTHH{3c;kS?bKYql^1JuC24$Bf99S$$sN#xuKKW{wb8A#a;j!{ZOPcB~KDok_k6t!$eSiAIho^GCITMy~XVQj(@}-ye g3>|i**TJz*e(NslHW&=u-NA;|;Qdh@y$uHAzk1T41poj5 diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/google-api-client/GET/request b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/google-api-client/GET/request deleted file mode 100644 index 7d231d773a..0000000000 --- a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/google-api-client/GET/request +++ /dev/null @@ -1,7 +0,0 @@ -> GET /info/google-api-client -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 53c83f3e5793993c -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/google-api-client/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/google-api-client/GET/response deleted file mode 100644 index 72cf89f8bdf63b9d25569903c69e486806360702..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4702 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 GET /info/googleauth -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 53c83f3e5793993c -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/googleauth/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/googleauth/GET/response deleted file mode 100644 index 4f2f9172aeeea33a3071733535eb861c72d53dce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1605 zcmZuwYiv_x7%q%0SW!s^0nLOX{uqXy_FQ^9r&KJm?ha!c6AhPrJ^gxm+_`ZsT{~Eq z2q6IjA`?V3;#^RIo1{P_fJjh?vQ3RZ7?j~=1chZ0L?k5W{90I@3BOLxdwZVudET$2 zwzkSa+DVKe2y8*Ql~ZH`$_8#ERLEimj2jMB1cL0txG2zcX!uPdf_trTJfZ;!;)-er zimbC(O`x)9L3L?y>3o!n>pHG#iUGNFmc>XPCMjX)4~YubfbyeJ{u?1Hx-3K@Sq?hn zOieHnxT=T(m%ufsDw=^SvY248FpL0GG;m$xutFV*kwPD)bDE%z4q;KlP<7Vf$c%z^ z9+ZsC4h;USIwlISB*X_Kb@FE1NpxZe`@?nC+KdkuwQ?oO84a9%}v~+JaI8r+* z=fl!y4;%b|g>C>t;Oubp2e>HAc&#ZSi%B4k10MR_gbh>8 z5VADuG?Y0sQ$`&4CP769qQMnrdMyEgcp&HXa3MGDiMSZt>2w1ec)}bGfyc$Uz0eKA z?sSVO8-j$6mar3qlObFvW+sYu0;h%%)`{-Q7sZCq4SBHA4(Wdw}yd%K!TcpH1T2q zbwm?}r6|@(WHgBh06hov-eN$L1wCp-ilBg(aiww64rd-r1B5CLL?H$dM;&T07{){B z>hDX6yd)`_#)H)Xl+MIhtfaJd-eFL)>Yl&`Pk&cWzV%PTUp$3p!z`Fy%qfvsrBo_m-SdI zHa3-9cScxl8%o{XeCOkR=Xy?_A55K3cBGPbR~<|ZIU4WeUMM&<@apQL#}s_<##Qy! z-KODzpW|lYANgSGqRRz$j&$AJyGI&WxvJpiwYct8o=r{Nbz#u1nN6(q&)ep5l-H`R*fg9-T(z_Z|#9d)7TQ*@!pyu4!_TkNvjz&6(x(f9>h6 z>Nfo^O0QjGZp=BfnwwrT+@dYt&yC5K^m^BIEV-?-XH50PNbXvbzHXVaacW!V^KD}n zUJ7(|?YbS?uzA<*D?iL#IO+9`EqM(=M?UDQns&Sy>yhbijSgQy`}~qy6~Qhuayc-# z^M&6ZpN&iN`bsy{caCEwY$J>EI&X~I9R7aO(?_?TwqJA2`{-(N`*#(`+VB0?_vPG+ ztIJ=i*tff7durAz;#=?ZEPhfOu+9I*E1rGt<%nV(_r>H{pyA?Lqp*4Bl{qD!ZF=H^ z#EI@pIq|$n%Gb%U;bq-rduPqvac1_C{55UWfNy_l@YlTLA0G1WUkWW2%kXfHWodc& KsTH{vi}hd12W9yH diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/gxapi_rails/GET/request b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/gxapi_rails/GET/request deleted file mode 100644 index ce82a937fc..0000000000 --- a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/gxapi_rails/GET/request +++ /dev/null @@ -1,7 +0,0 @@ -> GET /info/gxapi_rails -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 53c83f3e5793993c -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/gxapi_rails/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/gxapi_rails/GET/response deleted file mode 100644 index b7002586f87724750b859ddc82d1562bd7b626f0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1462 zcmZuwe{2&~94~AlIj2q&K`_FDs1VY--d(Rh?#g1SSw{n9W*wtImic=3dcEy>cig>h z>tHSz6O3+|jEOQQ2|?ix5HcJwLHS_>aX~{e;+Pn9CXy(NQzF?!Lh!X?btc?Dm-oIu zKA-RB^L=Y-YhUtk3rhv?{uu#9AGPwrmq4IUkh(7XlemK@~~el$%I=Hp+i34AU{R zRI13qL2}mCaE`W2U6XSXP*4hHbxb?93|2TuPpt?6N47O<_7zBDY&nw0Qz%D_3bQJM z9FmE1I+|5mOiYoP9Y!@xRY%a$97Z-XA)sZ{`z8OsYq5uF!)Az~ov$rk&g9ODg+Lzd zevR+3a4^K0JWYYfWDp4p*~O{6bk?C;kb`NSff?9l8nC56*<)vuITd9bTFGWC$3vhB z7Uk8NsaDfTY!tF7grO>dg+KraQnVFkH~j za4h-zBth^NN$SW@aasaik*A<6BeH2WG*md^$rB)NtQp#d=AFUR}A`t0e4-Tb=OsLfdEB_klx|x zfhzAA;f@fa^&B0KucHbKNS7M2QdMN77}HiMYU!KvT}=0A!c{Uj9BteZE}u7cs(OD( zqWkFefwCL*jkx!-#0xKia(nXT?vKCXO9#jIr%xaKXX^Hy_~zkPLnGrqf7)Oix_o1M zd+yHQ+Dq5R+qQH+czg8p)7|FbKW^dC@wPvwp5M^GT$t+q_B+p&Gsj-Ju3kCz&i9`z zTovuCnp}Urz4P|U^GaZA~WP49utA1&*89sJaFYv9X05AQnHw_vC| z`PQ?+wv9~(xY9>%?qGSJ7?vOUDpO8>hUG>=eha$XAitlciEWmN3Nax z?ZPi1z5atGe?8hW_xPeOen>2BDqGy+?tA>3y?t8mx!B4?-=*hv9?Y$2pB%Wd??ie- zdUV_S;;&;Z^0p%bI=60LXkk{hefZtR;j;eK%V4j8E GET /info/hashie -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 7edfb7e0938d0c35 -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/hashie/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/hashie/GET/response deleted file mode 100644 index f7d9d45e724bce0cfb5ec1e301732b9b03a9b820..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2837 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 GET /info/highline -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 7edfb7e0938d0c35 -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/highline/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/highline/GET/response deleted file mode 100644 index b7927c348e17afb9fd03b1dd505cc8ed4b87cc2c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3415 zcmZuwc{r4N8|DZ#ryP=)Qq8DH%$UV6W*SRbD`a;Ny))ifn9VF?Psc};B(zzgk`@z_ z3aOBa63Qt{wmL#7i7>YKUd}mv=ew@+*L%Isa^LrJKhMwJ-F=@C7L7&VFc^gM9vF?s z6@gq4N)*lqNeB^mP-Mhs11v5XL1O{}At<7VMRXJqb`V7u02~m-vuNQc0m$bGL?|AY9Zo_7f^>g;1p^oDKe?_eUWenqP=!@OTV12=G}#G>yk0BUl{9zZL&K>JJQt00;#{ zfMBurNAU03f8@xBMYewf{!4{W1c+F)KP5nxaUnaGs((y{M~Q`~Fin50dj<>Krx3eG=iv>*0t!?-`xx*Rm5GYhJhl0K|<&R(y1mGf-wz8!~iBH zL;?)}=*A}0KvMvNC*bfj9T*#cxS&4G}m~gd-q;4hU!kc(6{lyR`3*aR{_LmE@SFg%g2rN?FM(ui zjQ=5$4RRSGCJBMV7P!<5a2k60t0s<~e$b> z|LG~TOe_v>g0gkBg3?Pd62jiW{qG+XlO=*wVKGo((G&snKC#ATc)TeVPcTK}uvj9N zVCd~NHu+g{ibKZM~59hDt)RA`=n0fTKix?FBU zQoFaDLdI#qzP5#~1>xkv_kNzmyl3R3_`AtyPF-=TSr&MswD#ebdwoHvSFa7s z#T5(2uB0+$yC=MAradvO`fUlPvdBZv_cvv@JdWzoSDPK+Ffw+h^qK7m;GFVt8pSu{ z6d#`V{Hh(I-*M;Jfb4PIsgURQCQ2KaZ5OY8yj%Bbrh+WVCI22;Ja^ZnBs#t9a4xdt z^rrRF&Y{~wJ-Xld1=kq%ol-X^c*IdkV`C2?!xM@M=96LQc5-SUy9_W1&t5VXM5co0Tnub;_ zzll>80PjhE(vsEPcjXIq_~UN!L*(<|+O$d1+vp*?qn%%`hC6#r6*!c>*{I)oXZTg; zXZvEDCW_e~Dw9UlJU=m8ZEx=Lg4Lh$bLRIhg6Ovy-*d-Y&-7AtKGi=vds}gHACmC# zY9?b~LQynb{_f7}tY0#y$u~UI>&w=Xbv0jsH7lJnGBw}a$|}WSd|s|}op>Ff*f5)3 zoC_CwPX_Nfnx|0Ls(q(hO$jyosxv4vdp+9DsK?HKM80Llt7h_eLxG>Jg7)eABwYN) z6)EeV4(@LDIUu`NXkO)-WDrC{1(Oz6aa-(@tDip(GyCY>Qmrtb%u9MV$XMm@(%EnRWkIi$7p;WslNQZu_Vp0YUQmP@x*A1UUyea&6(dHcgw<; zNnd@d4=IgK+;zpvYL;Jf)-1B<@YwS>S&hnjKg~vMa_!3PnVu@7uH6d6W5Q>9 zY8sT;a&Cpz2^!a6-LAowbGU|>;}|YyF2$E zPQ*X`Tzq(B*RRT)Iv%nX{hGfzLoLN&%ZKC%sXHU6@KSe6s$8m$h+l8@|Y09VZz3z9f)VfMnObmxy zKH7{N>wowl-C8fvskDBh=$m!dgE}Y7*G0q+!^nuO#jdu|s%c3Jo5q@KwH*8uUA&2i zXHMJTjiyZznJ(|Lzx`}7GNVX1nGLQx!*tx~)LGERNj{wNCa7Ls?ijh`KONZlFOs!i znSHk=JVrMpg*IJ8epropsn&idYUwF_*4p=+)zFoO9+iXSn%HE>YYW7V3^$yt!m(>{*%2$7FX2d(Hx9d-%e-Lqpd%+MN=GqLwKOk=f4+Wr8aV0XYk zGn}NJZNz9V)1y|^o4R!p^_cnURcV;ceA&Z2$b9Nui;IIfIJtJI{(+kx!xBqv!cVEu zljO#TzplqPabT~#TeHRIM!-&MZEdeEEyYhmLniqY%oIwg63(fsA|qST`Os^$@)=ezuc4N*$9;*APBQWQ5erRz-Z`o3^} zUL`#xen-*9)Bz<`t$y^1h+IqE!<4lOY4@Cqij&gWE%HeYwj~K2vE=Uoa&mGD3kq_C NlsvB{H90xhe*x4Y3_$<@ diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/hike/GET/request b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/hike/GET/request deleted file mode 100644 index 7e5e33be96..0000000000 --- a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/hike/GET/request +++ /dev/null @@ -1,7 +0,0 @@ -> GET /info/hike -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 7edfb7e0938d0c35 -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/hike/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/hike/GET/response deleted file mode 100644 index 0253d19444207eaac0fae53f08cb5e6d168730ec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2160 zcmZuwX;c&E8V;f?Db|I;MMWLCt=naiOhQO9+{mJA1w;YS;)0XOmt?NVB+N_#K@r#D zDaBSSh*exUg<^%OMZMmFvS<|nQ4bfYP?f64B4DeKqp0@-EA^h!UvuW&p67j@_X~@Q zTOz~+7$O#lkmv|LX{0$ob0}vu0UY5#3MVw_35xbZNFBkjfK!?|4JzlSpc;lS0MuyW zC?n0{NNiwKaCA&~X!v57OJP~m#27h14rg%$^Fs_qHBhSbMsgj@zl-wc2-?Wfltwek zfd!EABg!vei#jvvC33}t#Zgy=ZV#NtBXNIMW{3A0uJ zSXjwf_28Y}(LxQ}nH6Y_My(zYCW;l1MuQ(h8MJ>@{Qpx&XJ{G1LU05#+&db4Tl-GV z4;e=LtHFP;U^#-L$Tt+AOf-~mqLl>s>lnfam$sR~0y z8nHs61~Olu5)ZeSX^t|$Llp@`B3}#>!I+tV@CFl9QKg5O@L*-IS_`~M9b+^AB?c>0 z1i22-5G5orhM@E;BJ~kqa$f-^f?p|IMlwoL4`?l?g9j{ILK;v!C_4p_#`nO zg+wC5BvP3`fyw2Vk9T~m$U8n*#D_%S;J`Nv1^?lMcL;P^Z$)EcBl#ona7GNgsZe-R z0wbg4^Jiu{@%De#vVv!?Ul!3&Aa!ZIHc!rzFhieh9h-c@H8gC;_#NXWXB1XwZf0q& zKVSJW)NN1quF}Nw8xI?Qo%XW-+N-ibWBRLSFQTX9h=t2f_O(_s2d3H>>UM$0?6$Ad z3aVZ{e)s zLKYn9w=kg&Ub^Zo4bjLsVV0>9Nmb@|qV2H#Gvb4}~ZFICU#aN*TD9x5nu`QrGR zgb&X>{`z@Rl4={nxbwOk*9J!~Tcb{P2)uL8ai#z5`;TUP zH0@}$Q*-L-{;_%AIS-tag9*G_j)=0MSW&#)EL>5wepTZ4*ISRJePeLGa-%Fr{rmy? zO>Xk4{ENa1$>e`_?{fDPnT{&i&ifO$OD7@vJEi%jD)*Fipqc{9w~3G zU3Dh+mzuB*K?i%>$Qk*^va3!V4qQIp&5-Dx9C5X?L~1AZ=cPTp5b_W^Qa0(#g6FTMivb#IeU3+X}HWaS<^<-OG)MUs1;)e!{W;y<2a>@o5cAF(^ zW_ex2mr;HS?Y6wezj5_HZCe{zNgvumhb6t=9)a%Dbe_NN9o^OH|x z?mYkQ?$jgur*?N3q9fWC%$QjGK~PXLc;r@{aIfkzeos7uq=P?xvA16`?`(_TfL;Bf zn=YlFuAWdlM%k$7a=D}(-=gac`DAX%{r)n~@7l-NDyju>uI|0AtM{0j=emNzkhY7y zPwleTAMDLK6@L}q&r9H^aEE zOMbq}&sejmFHIh~Z`RZ7CF_o*jrqLayRj-S#Q|A=`|$MeSq^WD;>cimf2TZKo@o z@A^wa55-@)?3q=a5GJneo}1utCGYs`Y3>qT({9)3ki?$Kg-cRmo=&$VS6UqQE5@I$ zyn9h$Sk$w*ca5v%@9dU(r>v%bPHYr)rv`0adiJqjf8TH5S>Tmt?F*JWjjPFMKav}( zin_0SqN$l5r%Al*UbG`1zh&>K+;qoRtLs$R9pTctfBAg5<=YRvyRCf GET /info/hiredis -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 7edfb7e0938d0c35 -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/hiredis/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/hiredis/GET/response deleted file mode 100644 index 685a4960713294a5dc4e5a6c12379f9a5432cb15..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2410 zcmZuwX;c$w77aM#5(ESt6tzi7tLTv;D+vi=ix?IKB8x2AXjdwgq$F!q1qm43QBXm~ z4G>pQ>0uE>a6{B)5L9e!WgA9C1QkVa8c`Z(Wj?TFoOAkDDsQ>>zWd(i8ydQT$#!8w z92N_bET^Md4TWham@?`x5kz6J6jP@{aE&{JDiMOjC=UZAhu!G0u$(~D7_8M%xK=}o zpb*ahu_V~f$1f1%Vo4I#5n2jEhqEGx?GCB6GR#A&(xTBI|2511AT(N1gUjWk8b}N^ z5IALoby^jU8esy{X$cC}YE(uMB*Wy0K}EqNfkI9srjk3kLnKPzy01f!lA?5^h{+s* z!dw)HLE(atppr7Gu&;VY3*}&b(nX=wDpVMv!$}uZt9FNQwc^i;{~vV}LqQ-h2!#;C zy`#Y|wO{4jp<%W^1O7t=Ng))DewF|%(*Qe1sz;~d!UhsvkC7D2aY58boK}OZACb%? z3{s;4QeCW0hc3`O8FR@jksY5 zPcGo_5WX8<;7C^?fD5b=m*bdB1O;d{&Jafc1t0`CAhrNvaYa0yi02CV1ccI21XW@q zyC$?M5u`?9VMKv>@LA4~&L9OV9o;mhK>?-)Xi&uAI&dHarZ)_ag#!{G#|>f0`7rpv zU>=L-3QGl;5N62*JfR#x*$AII++xsBxEdTS%Z0__3HbsLGa!IotphGfRUqRh_7KYy zm@}#*v}(+Q4JxDv8jWcHi}%`K1Xq!eE6;`P#&=<}z^^M9hC3=!g=rL&5*#y^BcLNF zih)xj5RC!@*Dp0v7)h5Q6kzctaA1lX5jiCJ_Y1OR(}9!UJhCY-&&rd38b zB*dRSLJu&4!A<#qn{v?-3Ob#!YdozWxhaA+CM#@t%J1{)`o?fryO;N+qU#xrt?%i8hPhnZ$b9h?E|x3&Hbg13O{Acc33NZyr_6x zfz6eE(Vm}icA$M}Q3uCy)j8|d)28~H{!4GHt%wR@AkKY}_l9myH#aZ2f#-8x3g6{+ zt(#Ae<38a%$Xbv-#j(gJvmd#<^HKyK2RfJ~=>TK|R< z)rl$M?5;J-lR9gH!i%hm63lzIAIaV6Y5p+0aNprw8LaYT`sT%XA8bXum#0fE?hsCy zbG1q+xc-5b9u>bT+H~cDRlWXf+Zkn5*32i~BE~y&=bR*lH)9goYtbUC^Wh| zV)q2Ea^4cY_r?upE6yD_DZ9h(tDAlLz8;+vnk9%v;-^&8k*M?(?e5*|P|5F*}yf+w#%OF!quAu2lb|O_x&dcG)_Vd8SQE zs5&mRHSs%$Rr3<@=&(0NX32L$1HsnEA2e^0v>u7bd*fU6YDc4I-qvZETjEix=*vC@ zWX8Jd6NKTV^@A6fj6Oz7hXe0)%M zds&e`s_!^5w_yJ2D-18kUud?l_|@wsjF-GFLItI zEFVX!C_Ma*`jGfBEyeEe%h%;$J0<#m)c!r)|5WrXH|~7-L6JI2quN_8QUAZOuek<#y zy@jLKfRj|E%7MGn`?t)L_2)kJY~=S`eAN6e#gi2bu37xV&Cm&b%lH7iX=)BNIr#YW zT-%^btHkEyH4qn!liR7j?hb(k$dy!UKX#r zdrB^T!+&|Tw%R$%(kvt?-;VqzX04nzWB$#Jf3=^N+u1Q`cHBYJ-e`qmUfPt_PR4a+ z{xQ33&zY`e(hUCW&Zk9BPtU2?TpelM*1njY)h2rRz*=R|)^KqO^BDY%=FSpRhxuH+ zgGGq@gloR5x1lBcK#N@gHQd64g(sP^Lp|k;zx5NZL^-u0jRjG GET /info/hitimes -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 7edfb7e0938d0c35 -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/hitimes/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/hitimes/GET/response deleted file mode 100644 index b0f4d67dc2cf5800a0393e2e997caebb6174a320..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3197 zcmZuwc|25Y8>YR9)LSVnIwd4#%x-3EDa#JoXu~g0qPp4AY5QPd8*bp60Btv8f20@5TT#XTcC>**9K8Fvp z8Gw^mWCRdR04Gq227q7!;7JS;ok5@hc22Gs2!wd>&s|By0tO%i1F#?$HmBl^0EwK1 zuH^ToU=f63ick$)1z&7ba)&dPoa?T=$RZu>4g&1D3$=N*xQ)fu(_}i#FL7JusH$kV1bY? zEJ9gqy|;mUfefIKaReF_N5G?B3WH20{T3;JMO=i(0Eh$=8U}$Y)6melRy{te4 zmSNZ+g0k33`KT#0z)JGBDRc&r$RJUFn&QU?(LAFM#t)Q=_%a>_wFJc^lgK}aer)k) z;(cLQf&~S9zaLkV!BRh%jb)*+{pBh8b_hf=0c*R>3N8OUV*pHh*S~+TJU)V|qN4vl zJdvW$i$JE6NG1dl#RNyEqr)afZZ3EuHyb<#6@mg={ko9NUz;$pMK>)7#Jad_!u+I1 zF}9(xu|s2n6HB=m%*vy)R5+1OJyfO^rU;`?mCO&HoLFcP>VI1lOy&cXj`2>6YdZ9p zH#F6-Q|3*kIy$*U)GOtmj6uI?*V??cdr>qrG`#OYiUi{)8Uy!J#UYA;kbPgOZsbpX zZ%mG~e3D-|@##-{?Jh#d@XMR8z7C9^`{w&SFn=KATTlNJz1-5&WMQLcA~L%1OX9=l zwMGwSH)?ujIJIw8*yruQ!5;0!?TdT1hHSrM5;E?5r+whnnF;;xnc?kO#~o6t6v7Os zn23;buVuU~c3k$I$0w;@H3)uS=3_9d7{wi}qsfdM?j7&huFG`f=T#=veJu9(>wd+g z-rwz(yY{&E?hX4yc|-l@im9##w+Q0~bj`k+nR`RBKHUaf~l%8ra@TU_TmZz`yg zd^ zou8YmyR*rmD*nSm-)Dy1C$szJ@80g$F1sU=>Coe594c2WE)2nOsrL@_}YvYeBK@d;EtwD%6U1HlCY4wGSRU zE#EY9q^z5anXuUzWxuoJ>tkh_*SMW)(ql#PX24VV3H!DGAI#NnfJ(qBGvb{WUdjFE@B45}Jwe6`*6 zS8JtLHulRY;h7IR5~(kj1h#Jo-6Ph)orptHH8G+uBFBeQ=e=PK_IQ=FpLRj35b$4Cr7SJJZ8!aS>fnj# zy8>LJtzT|Dx%^O@kZiE1p7}nz#-sTPGb^8g8xgQQCzz%WDi=9het8f~!OQQJrpa0M zIhqD;6>M%pW|pEpw042n>!}A5v3c#6f}R8&@(!|Tk59OWT~X7uDt=bL(TF!~(UO3$ zhz9d>(i__GA8xC~4W)*r=mmM+8t^gIAI>P>q{z$zr3=kzSsx!e)MxXiN968_G&G&J zv~$L>tGpwM)EnjH0p8aWwl9S;l3Re*4O4y0FLIim&?II>dp;dGlXhRalD~*|cA_lR z|H(vVKF@ThX6qG;LF$mVtu3!P9nbCX4u#MMHRO> zZz6&-qnx`oRZUK;^J=@8YY#;z4$RtaAkavS3|8+9JN!{&`u^^auTABpihgzDd|Ih> z!H&-DgWKmEziL(498yV9i;1oz75_1iXG*-cM^KX5rOc|g%H&e2uEwokj|^T`A7h3a zURX@{3~apZZAq<9T=v=}wjSyZO8MM^pWHX&83WvSL%H!mhe&TlMSzHmXmXDFWawtAjJ%hLjX-F*gI+y!eN zY8mpIONJf0N>-T}ltQr{IqPfkm+rejcJVW}D~|FU?(3U-!CcpWbyC;S_vtam-keed zp4S(EZxM0n;AdoBM3nKC?;e%X`KmST^%ZaS>ea;St{P05az>4lHgTXydCGdJ$KnEb zVR7jC*;X%OhiNC)z_VJ`MlT;}adkGxcyAk&UrZj8^k$hJO>j!Pg~_!jD{WRkCO0^r z2V8ZrtM#m!#mR1P=HiZbJ!3cH4((VzvGR1N=Gh?a)#IA!MUA&x*Ez&hVg^Y? z4Ta2sg@+*7w+>T6pp;}!Qyc-&hC0oe9%`xtAkZQ$e zUQfU2pqi*(&QZ6Rr+re9+bY#c7iqlnTDl?BOfxd?OnEOoWDYUrL4=-xK6KFJ(L!F) v>vho`ig2BV?rXhIPOo1Qxjk{#W^7m6ib+)!mC4DeDz+cxy4Mz}s9^pJ{xhjz diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/hoe/GET/request b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/hoe/GET/request deleted file mode 100644 index 7011756d37..0000000000 --- a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/hoe/GET/request +++ /dev/null @@ -1,7 +0,0 @@ -> GET /info/hoe -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 7edfb7e0938d0c35 -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/hoe/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/hoe/GET/response deleted file mode 100644 index 87dc29f57624d2d80a06ae3fd148068b988e8ae2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6301 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 O7WbY3sRJV;qx~OJo{WqD diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/hooks/GET/request b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/hooks/GET/request deleted file mode 100644 index 1bb98dc0f6..0000000000 --- a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/hooks/GET/request +++ /dev/null @@ -1,7 +0,0 @@ -> GET /info/hooks -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 53c83f3e5793993c -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/hooks/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/hooks/GET/response deleted file mode 100644 index c1e9d100fb241f4615b3d93e68c5ac72d8ed6db1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1871 zcmZuweNDcrs0Yz>yV9Q8H`NBL^%M{{esMvq5Q2V{~IC6n#2c# zqZ~BIhE-mV;EF8pYy?-KBC9$sOG1Rf0x$@|f{tq{i=}E%2&SfC8mscktsyL=>x#x$ zt?^ON!htYnff}mRBLcjoceF5w_SY<&EOP<`3a?pMSxm!tk^80M|DQTKgHu5T(19B3 z9Sz>By(O21#n66f@XstX9q2rJg94IFLUP8dN4KK!u!dJcO~)w<5J9ypfyy{#s~Yx4 zI4Ej(AS^1H6+y-Aim7$8n+y4MDPC=YI^Y;AB|tlzl%KY{0byrpr`-{x1FV~1X^LX~ zBnwka0zg>EN}fxdRM3_VIxfD)&N7|iK%n*hr~bZIJ(IEaqlAJL&^3IH8} zWUD;V#D!%lH#KoH6vfzXXi~ug^c>K8s{pFRYatU-1O=R=JBAZ;IR0SDAXIQ5@D;Jm zG^kd<0PaUue?wB_B}v(wc=m!!l#a(3Y>wA=^9K*{I$~u*|1n8a^g2nKo2H#4?I0}# zZ6j@@c~JpjUX(?c5D_#u^TtA1KO14rMn($}yr5vNDGrZjEI=paK__LARnBBesvB>p zd;Zj7gHdnDm8N+nJU5(CYr&%Z7k7^Bs!TpDJUD*Uls%0L>vylEi+jK7Y%ZEGH7RM~ zfu5co>*ZDXTOJ#^-nwF6&A*3+hqu1{)XL>ktyjnXbmZKlBR>udebwh;i+x0NV#(*8 z%}YM2=)UWU@96INA3R$xzV2zbt+l@;hj}Zd^rEq;tG~b7n!Emp+Ys(@2q)dimJO4? zJXb&ucg??476k*x6I|1x6Qp_V;;fdrjXR3Q_-r#zboxCb%FcD~?fI(weM27%>$y?bXiso0JwL|vadFns;?i^M-1><58N;H) zUBub#$He!A&Od!}bo=h)wO@?;OLXfK?gu+v!vj}pPfq{zOoCnw=$>sBDiD2bY9YL` zrC6}Ou|qK?Ww~b<4~!2U!QSw8s*CH7hnC;*N_AgdsA=At8~chHziF$>UTExTed)!6 zLb&ADlh%~4PxPrjY}!z|-~Zu-Yb~u4KNRslET7VHDtuvF#tVo0sMYP6_doH%z4O-9 zx|W@4n&?aJZLF@luT}i$=||rwY;Vh}FeZ7%dBu{{Mk&#r-O=~;jst@;)6cJ|DKEUT z;hyIwzuC6r?Co2*Gy6SB(@tDU{q(wdY1^*6lvn!}J99P_wEZx>+}_e=%CYTuYriyk zZ}i%=`v?Cs*ztD$vRZ|dQ9ATczj`hd6N$4Lgm$cWL<^w2TS-mwOQ>Ayip=Nte4 diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/http-cookie/GET/request b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/http-cookie/GET/request deleted file mode 100644 index 6e82161a45..0000000000 --- a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/http-cookie/GET/request +++ /dev/null @@ -1,7 +0,0 @@ -> GET /info/http-cookie -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 7edfb7e0938d0c35 -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/http-cookie/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/http-cookie/GET/response deleted file mode 100644 index 45199a2c235f03e4de551712d73eda11a6facdab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1703 zcmYjPc~}!?8c&N)(I6G2kG4|E5X9BOgqhqKiIrA}Y2{d8VLfO&nS2Q&$s|lBgisEx zQ7czPthTTo4|NMtkF8Lp3$z3(&{9F5l)7~}goY@#iV7MP=|IoF=9~AO`JLZ}#KgET zl#fCJ1c72-;}S-S0Tcr>HWR=g24pf}COuA4Yak*Or_F#-SQsrV<7UEI8aDvgXkths zWyYX{i0H`Jc$HEW!|pQ8X4pg<89>Z#F$i4)8H^gBQ0t9E8oU21%byUG(M*wAEf+Aj z4ug0isZ^rTYJplK0CEHuYY>SB1tNky$_Rm0%;V~DGXt~0q?QC442q)3P)LYC3BbhK zK_w81Vu%1kg^)5jkxSr2Dwt!Yjd~0+;F&P40}2Te3YjcwJxToG9Z&>|NwFGqS)_@T zOM`R^V5vx!1R!D*RTCN*5#d5uq?O{ZS|Sj_h(s=w$)z%xL?D>`#X>QpfsGL1BZx>O znw?p2mfm2(8B(ohH>yZQq(%oqiB#HX01A}-LX8t?fSR@PMm$dH&5&5cM`aQ|im*>H zCK3t%5UB^0j!DHJxg6!<1OZG8OyiUeuvMsS3@~#wIKz_6Wg?J45hi*z6DfqqF@XRR zO6M}kAaS-Fw*3s8rbu%tmraBnAaZ1uhx)y~GyqI6t|v19tI-VT44{G4HVpbTQuZRC z0)Y&UijQE|b2ALupi2Dx1x_UyR@H0*vyss3T|q^1p-_qn#ZuOmL?%Z=lM;~7q)3Fz z3SogGel-;NTM?mAY|(lfoRF}QJ4erA#9P!hB`}!zMq0<^1{BQah@*Z^=6KkXUOT;_ z&HGB%YA2`6bH6)K?v-+3gFv3X6?k$?~ z?cWx=ws<5n?(h|dqAT#F!qruZ+I!vRJ%`R6E`O_g&6ipBI+SqIV4G>lK!?|!kcYM7 zLDrb?qYwY7CZtQsHxcavHCsnK4iAp{YH8<-O`Mp8S6P0e*_` zc-JTK&Bw}Z{|a~Bt3R4olsEI~=h@Sbrj@yV#z&sF?v%AN>H9S8{AHz|YPoLcx_GbNJj zdp)Vr%*Hj&9Wz%BrewK|?o)rOo?cv68Z@tSuZJVi_vXB%KfP6~|E#~{I$fb%;DkFY zJ+|tgL%WV{cYl`L+<&WvH`Zy9O8gtEJYC9gs=9ICWLPD-H7S8;%KCoc+4*}<#kO}{ z+bwcD^LESP;EREqAn90$>Vo@7O3t&L8F?41HP4FutWBdI#cpwqWrj5N{(Y6JyFZRE zZ?lLtUmHyxyH*wLcPbql_gRkGx0mN;-JZ!muR9XF&Z6@n;_O0y?-W<`Sk<>rx~ocq zCANsHI__OgbKBa|gAK1d`r`3ZBs}DLx>okJ@8R7~((6kqDi;Nn*@sv5e0Oqj>CLSl zwP+_@)^~JHUSQ%1ue$=SmwhBS0vOZQs$4604a=?+Jgt3y??jn;i}Y%}rqKG1@gGeA zK6Nj3Or@PH@hV&P&GF`;8->YTmm(S*Rp& GET /info/http_parser.rb -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 7edfb7e0938d0c35 -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/http_parser.rb/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/http_parser.rb/GET/response deleted file mode 100644 index 4338ac9263c6ab799bea5f3140b145c3e4f5451a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1985 zcmZuwZB!Fi8m5AkCe(gwQIsJ)RcV+o$s{BhJ`~$TutX@Zf*_@n$xSj%GBeIhfcVwA zNOeV7s;C962p&Jy-PWogSV0d5Kd{wSSwRp%S*nOD9PNte3bGfh)Sk1y=FENH`#jJ4 zyw8nEPEH6_DwK!{!;tt7B^1kufDuvA!vO*jL5>*8IZ2ucM<_eV3qXu?i&j)8$w93= z=>jOri8RXy1dI#<=tkF z4Y&l<;&yRDXt)H3q>Vsi7FiXw4Gz!TB&2t7&?vJLR$>j228#`ZP8k?9z7$FnAqfJKd7A+p(+*pAF+gouS==cHq}+hj*_t zq}<#7cly68qlX+l?e$v^l%B{w{&`@2eQs@QPY1naeRR;-8FOvtK3dTewYlS~v&qdJ zVaJwD3n*PV{IB|pC}+NIjk4aT+jWxvzl4hV%cJ6K z!;hQtC2rY~W1;0ii^Fn=&W=y&=KQDV%J!@+U!7SVy<%IJah3lf+d@#dA#z4T{w&PD zl|8kl)Fk}U`pwZsz0aSADy~L;d!1cUGqZ9|X8oD@C37Q>73tn;_USu_FK;GxX0{z| z4{lhCFL2!%_8%UnD=$5DuGSFD8(`O?1|Be?Fu{XITQYWHtC zP_W@fnNhAyceL!;Ti_S7v)Ax=PT<#{)>J$yP?oe#dbx3Y?`dn4R~t@XU-U~-U%oBP zs4`BrWB%2Jtw)j<*Ii4SvRGWFKw+NJ=(y{2fw<~U?xd5gZ&vC*zXdScV$|CqMz z!Rl+7g5L>&+4{zZVtw`92QNf?uPUzG^-FNXPq)WkzEtwVs{RLc;zKygwD~)e;vEe^ zadMgO>I*Tsa`Dd9&1YIaWR(|r6LCrYL{#OL4rl+kYS#DO; zrykjPib)OIZ62tKNShNM5Yd&Hy|((zEmvbInoc%=~-Fck{igfza8!)UT^5|ZrWbpW1X%lG)tS(9aR-+ z-sbaNvxlCzhKKZl(`OG2e%bdpGDDi-zxRCA%6|3gL*5}FldHP8Aj=-#+r{&1XT6(J z8nf%>@>g??&QSLc=dHx{ZN4|@gQ+*}=aJRuj-i`piYHb!SU2{KJ3leK@ts$jFBL8l z=$fS7DIGDrH~kwArLw^vzt}A=*EIjCOGjK0lP10vzx7sl*>`)URdn`yUK}iAKd|4` z37+B^e%?*v#dQW|UxKIge05IS_wT*exhO98x(3L&s6nZh*YL2nm%eX$+Oi2=UXuR- DoP0Hy diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/httpadapter/GET/request b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/httpadapter/GET/request deleted file mode 100644 index 5eea9a9db6..0000000000 --- a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/httpadapter/GET/request +++ /dev/null @@ -1,7 +0,0 @@ -> GET /info/httpadapter -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 53c83f3e5793993c -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/httpadapter/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/httpadapter/GET/response deleted file mode 100644 index c05136faae72924ff6722f9bac3ccef64b35d604..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1301 zcmZuwTWB0r7)}kgI@Al)OQ@j7loFIZyK~#w-Pta5ACh#bNhR4AVD9=T_jMKspE{DXW z*blhvdrU|D`JT>geTD8qFXV<8!$IhCYBaJslCsG4O`0n?zA*^-l~ewM@O}?=6o0qs; z9l}m2zgi)zxQI}yeas!sg3X~H|NA0qd zQK^)ss!Wnvx|B4Gl%ggjNs-g0TF!{=f8$Gih@Cm3T^Hx^c@|!WC#6=&48Zh&gH^W!Sa3+6h#Jgo7$Rm; zYLb!?re#IJD#=KgNJ2mC$!-PJ)UOF$SpzQ@S4SBeug(QjJS#EiQ@hP3o$uER%GoXYq=T)0 zno*RLq-at+of4C>65G))#&&dy0uTY<{NjZ=uP!3i1&elSxWE4ap*bEf`oJ~a;F`D} zT7q!T@C_~Xz283E()#Sk5!aN~UO)HFr#D?#Qz+ba?o9o_bVu9aSH3$dAD?*ir`4Kq zV(Qd~-(O07aQW=$_}{~yZ5X?j{o`G~UHSFW+{F9$Ke_LZ&$RhnGlxbm zyepi4X5Yc}*KHWjZawWjw!7&5p8I9GC s4vAgc&JPg0ZuQ&IpD!7!?mn|__P&K%`24DtmW74Z7Q2=2x&r^gzhv{-asU7T diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/httpclient/GET/request b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/httpclient/GET/request deleted file mode 100644 index d5ea482a2b..0000000000 --- a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/httpclient/GET/request +++ /dev/null @@ -1,7 +0,0 @@ -> GET /info/httpclient -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 53c83f3e5793993c -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/httpclient/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/httpclient/GET/response deleted file mode 100644 index 2e007d73dc6e6ed1e46394f001358fef354f01cb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3290 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 GET /info/hurley -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 53c83f3e5793993c -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/hurley/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/hurley/GET/response deleted file mode 100644 index 5c6cc834962a8a8e8746f6c60031d39a684a2829..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1160 zcmZuwONbmr7#Bk z+KPR3#~tG&`M|~G}hCa#YnRq-Kh)0MGw(2k&5Ylqca>DJ2;c1WVos|uY`)x zXlZS*zA;=GJ_ETOrEo1P&FCx}BfE#nDrNnosOUE24^R0ILR3odEL(6;j5d<%DXy!6 z(XKnGj9ne(wx%-h9C2?g*uc=5)UX^bnxc zJ!Q(pjl$=d(%3OcNiI}^oS*aQ$R?TQtW-E{%35`L2Gb;u(JAV50~$nO5IB(=bXgK4 z5zWFh4ZJj8qqR!3k<&$MM1leAF0#DXc4Oa1D{GquC3MW@yOLEA zqmt}klCyqbwNc$9u#&~5n4o|ufJ1(P*RWv8UT9{_ISlbqE6O4}!j8{u?Acj}L*MhT zWw{B^@`%%AvzA6^UV`Z?)3UtCb0F3b7+=;PR8l}@IOq@3oVDp#Rwe7(P>~S2%>+zY zKDR-5p^)#Hb{Lqp1#dt0Ja<8|U?SIJFe5+{N*Ops5|J}7Z!*s gZol;9k(+~`-ge))akABF-MMqLHL|9+uE4kPFLpPN3jhEB diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/i18n/GET/request b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/i18n/GET/request deleted file mode 100644 index 842ee53630..0000000000 --- a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/i18n/GET/request +++ /dev/null @@ -1,7 +0,0 @@ -> GET /info/i18n -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 7edfb7e0938d0c35 -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/i18n/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/i18n/GET/response deleted file mode 100644 index 8ac7457dcbf957449006a9277c7ae8aebf9b1b39..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2462 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 Dzv+HT diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/ice_nine/GET/request b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/ice_nine/GET/request deleted file mode 100644 index 50190447e8..0000000000 --- a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/ice_nine/GET/request +++ /dev/null @@ -1,7 +0,0 @@ -> GET /info/ice_nine -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 53c83f3e5793993c -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/ice_nine/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/ice_nine/GET/response deleted file mode 100644 index 05d0bac18d1f6766d0f881f352607ee5e8092bbf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1644 zcmZuweM}Q)94f+{>jb#%RH5xSPKHLI=s8dn51!GWArq0X{9D7@(V~KxV?)`l{&+mDD zzv*swVJ2xLF%v;xb7txpNz|aI;aX6JG^W8yEmP(JCuU=eA1Er+90ART+x3;WPXPkN zC0XMnQKhkBXF=|qB3Hg^Hi}iMDlRLM2AOb_#>i|;ki5|0;U%UF#RsGO*Fuz3k@NYY z98|~z6iy4`vcz*tkjA{w2Lil?s|tfQ6J(*F;@*HDtC~3I#3;gva6#2tz=hDa&le&1QzeEndotdrXW4HxpSF4?{3sua^p! z1VoJ!(4rDXf}kw6@LK>NctJ)gdUzCZV5yltB@p0d!;KKoL3BuSbf|nAvJ3!#H7wBS%sOp^O8bD~E`q3YBt*hDKZe zR8r(6X`)CxugHnQkvAHf?s5a-SJt$U{c+LAc%r3q{IZs?eoT5_XkSgWD?%+;)%T=Pez#Pg6NnF^k`-m*!>My4(2T+=-j6jdcj^EpI2Z z&m?Eg?kc^WGd*cS?A7EpebS?0Qdi$U8`#b2de@iE#PKi3{gBp>bGGLvs$p?*@au%a z(wtB8=WZ{owQjH;*mA7NWlGYv$JJLir(-9H~+c5(Oe zGwGvFH&1SV=So*gQguV>OS);7uD8{V+0ndm#Qxzwu3Ei_IUPHuhIL*|l9svZ&fMnN z@{#N{c9zN3{r)4}t+>xN&KMm^965Z(y&>F!$F1Ltp8D0acN12uC=1+Kx+v|eqo+;x zB(CRzST*S^Q`c9MccF3P&YL;56O&5t`kK&!--3o;Lt6ng<@-|U)GsA#e52oZur2OQ zHaSfVJ)FENH1W{U?xhu-?T5Zt6*#x2VeNzFq?C+%`BRkzpNtwmBCU49sg3PDsrDzs zcGll?{Z7=j+-S-@H6^t#{}T1yHg#NMo%zp^)l(C%xEJpDu3q?S3*U9g+xav6U^jJq z)5FYH`+GenFWy-<=6FYZJvDA@#omMR3(#GX)3z>V&z_dVYaQzkc80n;Qgk|9e}Alw NTRimS_#rx-{$ExvcI^NF diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/journey/GET/request b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/journey/GET/request deleted file mode 100644 index 29643f99ac..0000000000 --- a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/journey/GET/request +++ /dev/null @@ -1,7 +0,0 @@ -> GET /info/journey -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 7edfb7e0938d0c35 -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/journey/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/journey/GET/response deleted file mode 100644 index 7299af7beec30b8058176daae987f6bd054e8fef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1462 zcmZuwZEO@p7_K&;-P+hxpiOA#1c(Lg?(N6j?cE+V9MG0ZOG~ek%7teFVk9+4qcKrZD-ysoN}anxg~T75-JSQH z=Y8gRo>|=5+UyfJ0f;;gnwBuCZ4qPDJfAQo+`X=G53?Nz6ISG43a+&+*pcJobG>**M=8uEyp)4|5e5;c zD_~|Qtf6o?$jgBcl!TDV3lIrmz*bwPeC6WT_O>q8#+KhC>Z@(Hbwy z+@M1wS&KtCAhD9DX{ovYfw!>AnM%IB&>*{A_a4rqzy>pOz%q?x|V^H z3{^w{B0WiVPS(U+;M);$SZEq)L^)#Qrcr{8)6|YjO0SL}N<3TJ5~bzbngSNrx8D3= zlLn!zvI=A+ap~<6{9#Fw1t}nNvR@DaeAV(8eQJ1y5~0A+@dMS|FruoK8f|9SSge7` zji(qbG&OZJHJt703{$c7?z}5ozi-RSf3iDb^$7QLt=s$QT_?FkEhTeHj}`7MDE{E^ z(9HGsR>ZenXd0S7b<(pH`lj~>hYNo19oYTZ_^=_jh&oMDo_Z^-1N@$5tojkBTE735)KZo2{dtZ~t^xot^>ei(*A}ZBOG@@a%;@oa!A44D=pZdANCcWODJItKU4QEO_;N;l^`) z2fjOgR<_?UX3u|g=kaA%lbz3V!{w;qy~F7T2Z#1;818L5w_@QFl^&T@Hfvk|_H&W@ zihd4VJoCq{l7T>D@WQ@+@yjwaxo69=dAlc_*m&1(%`YF>|K|2py?T0teQGp6FK=ut NKQI0Wvqqrb%)dK48C(DW diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/jruby-pageant/GET/request b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/jruby-pageant/GET/request deleted file mode 100644 index 132cbc3ba8..0000000000 --- a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/jruby-pageant/GET/request +++ /dev/null @@ -1,7 +0,0 @@ -> GET /info/jruby-pageant -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 7edfb7e0938d0c35 -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/jruby-pageant/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/jruby-pageant/GET/response deleted file mode 100644 index c618b7dbfcc0033f3503685e478177e64847f4b9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1478 zcmZuwYitx%7+ow-7y-rDNT7x*L{Zq;o!8E8XDvy=ZRwk|1p$lY?(Ch}VP|K?nY&Au zSHTiZu@cZ96cJHgRuhdO!5{?1L@CHi(n^R+Yx~8i$AaWjGn!@4QQNd8`y{~!$0F*HRP)ZidF zVQV-=Tc)nbDcVMsX=BY>!cdjK zq=*6o3S?y77ZwAu4~7e10LcO?`Vh-=1>s4Q4hbAtg{EjIB7sWNa0AW{Dxpmdfb|20 zmwc?m@}Q)$j*_7qMcG~1rY?avY^0%z3Pr{ZtVEcsWN=f+kO`(iG^k58i!9hiFC{X{ zHA2D)5DJk9Ll+=1LJP7e)8T*^pnXC_;AAck5Lr3Xk}$9qCr8J47)J2%42dNmp^sa{ zsIX2lrJ=%5L`7~nYMXIX$dZaMlw-&sEX55qP}3dY6Fh7{^so&1`XoW%2Sw`0P;pcO zg2+%%mJzuW8yYGi#~V&zo+^Lw`~&3s!klZ-rL)I^zTtyFI?Mv`+9ZLpRt}BTfbPj9Ddm)ZVSg|)GISqk9vB? zzU^ZxhArz{+qdSz0cBCnj&tSz?D%}hn3K=6@Rur1JqCWlzF>&;b9-AJ{2+a~WFzPdZF@4fP2WA+?OHsrT^_AiZ|%00V4z1nH5ICdrd z=@tO-kqMW^t+T4ePM%iXn@~dU?rxpe8Cx|$Yi}9HnwdZ;nS+!Ka}L1$j>{o_==vYb{iwhF18mB>6ml6>3qrY z^XVzGKkOVLJ;DtQ{>3buYD@~v{AF2V$Fqk&`mJt;|CPh3nscMKtPd@2-n*b1ahrCA za?__e`t=*lj4)s{J@ZTY9^&tE;btGjRg!Fh9Dm^uDh i>&cyy&n{qgwH|%2;no8#*X`RmuB!ZtVo8q6Mg0pm7cEi% diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/json/GET/request b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/json/GET/request deleted file mode 100644 index 01bcd27491..0000000000 --- a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/json/GET/request +++ /dev/null @@ -1,7 +0,0 @@ -> GET /info/json -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 7edfb7e0938d0c35 -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/json/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/json/GET/response deleted file mode 100644 index f84659623eaa632820876c83431a5d326678514f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5774 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 GET /info/json_pure -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 7edfb7e0938d0c35 -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/json_pure/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/json_pure/GET/response deleted file mode 100644 index 25354cd51a23081871fd54193b710763cb5066e2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3741 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 diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/jwt/GET/request b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/jwt/GET/request deleted file mode 100644 index edfa057cec..0000000000 --- a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/jwt/GET/request +++ /dev/null @@ -1,7 +0,0 @@ -> GET /info/jwt -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 53c83f3e5793993c -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/jwt/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/jwt/GET/response deleted file mode 100644 index 9a7ece4e40154a742de8fefeeaef455f0d026886..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1835 zcmYjPd0Z2B9?im1HBeY<xZIJgXia8t_#HIPLBwU6Vg%~J`GFV&&lMSJa6=Wr>!$E>rE|sGa9uTU=r~sV< z2v9LG4#XioJQkD3U;}}nkz@o$;?a3!ty;+gRB$o~%TPX>Mg=r_u~LrwH9LwS1Sdv# zkfq2qgk3F~s7DDYIU&MkOJN_b6airgM*=cAYy{*=m=ci9p|QjWB4*I&oVUN|FfI!#6`ezr4C>* zy&xa97epgg7LUnf{AE&!Vlq6Qh!&#L$uNST8XVNZm<%Pl5F2q+N0z`ip(4=AiBNn1 zKaKWXC^RmQPUkUc^Pw2zFhN1oZ-BL!To+F!BH;lHHe+50`?Egn^g4_wVF<@8o~3Lz+~0KK_j)XlQnfmukXJT<{z1`EF$vTldI}=wYwSA?+yzeyg0dj%)umnTJ%C# zmwL(+9+&xg{FPm2>F~C(A%02qgU|gHrf&ody4-!n^_8b5j|-f^IbyPs#BCCID}%oIZD-wglKMDfMzzY0s=A99LL z#S=~@@wVNik)4@tiWY9lC&yE(CiY4e6mE*vHDj{2@)Z`7I=g!K*I3H64=j7STYFuC zKTP!=vrml`-YwHr_X)Kmzv!BQW3kO7a!z(k!$8eaOY6xC?_X53P`dX%>u`O%VOQ~u ziBal_9XXpHg=+_+T8;<57qy9#hl7;13(3bQJkdWlue|@nZD}hnvG^D$Ih6wd2o6yFy;5>ilfmmixAx zxVfQELP=p-EKixDMyWg!^IP^=;43w4-K7t&j3*|u@vy_U6G(@b^dE5iRUSIgBeRVj z-8u%E&68mc7ULD!N9NIba~fekH@`> zc1~S7Ez8?v<*Hn>@DO`#abBV5ntC+L`pS^+!CZmolAP=16-iTr3I5Y!|5J_)RlSD& zf;=`fvva%WJ!geG@Sly>>ioBMbqmf-j_jV+H%d|)pKK3{O|;juk#@6tQBFbP`v>-< zFLN(^cBIKBW9>)-^>%q{RkxSbh;LNAq$PUFQFGNIP-(U)NqF5#zHw7^^WKF0ld{m? zpcB%A^?PFU9+#6WrdrgaAMXf%bS~@>B5hch{qnr4Lt99}&kJ0#_zRt!GZ+=;_6Yyh z6%_@JHSm$EAWibZ1qqCHT+mx zXjQdE=69s~>ZmVv&saKS%3QPN@ GET /info/language -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 53c83f3e5793993c -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/language/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/language/GET/response deleted file mode 100644 index 488704bcbb5b9d93a43ff6cfc0a8e4c19e42c168..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1120 zcmZuw&x;&I6mAJY=>!isXf9$A0y#L<(?6$w3?nRI_6Ko|?rsvjC^gludy4Ju>Qq%v zc7l?P1k$x`@Z_#SDSl#Z}mOL zBfjgBt5<9;8v~7@X5K=t#TQSiL37;~h!Hhan(8NBVg<>^O*%~1mosr$O?eW!} zt&OcWv38&}ZIv{@7uAe-LsH8eMw3eNeXO5k`46Izx)DXO(x8ENN|-rqWhMBWDrluL zR5sN-BRLeTs|?kOlS>+^;?j_4u0(tCh)j)Xb=L1Mp};9wS301v)66S4F}rFk@c!B< zr7SC8t=w!el7xAZvnUB@Itc&9N>;#tR#zHZT|NrjcI@o1cv(Bo4jYZ!UhF=2ck8f002e}{=mlPGk& zWZ-x%exoc5gO$h%n$k=$jIM7p&H`9vWeinL5 zPiBH40=}0SQ;pD58y&%e*h?2YizO}tzYow-R*4y)Mh$8PIh|l?k1WNfRsP;d)LRVjY1H3?dU?|r;F&V z+i{j=lS99=c;dB`T5s>zMF}Qe}4A;%Xisf{`I4GKm6jg`;W#SKltV0 iZ`VHf_wDm{|N8RN(?33MS&tu|vcCHEhPh^0mi+`Pig&#L diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/launchy/GET/request b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/launchy/GET/request deleted file mode 100644 index 9f7a86609b..0000000000 --- a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/launchy/GET/request +++ /dev/null @@ -1,7 +0,0 @@ -> GET /info/launchy -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 7edfb7e0938d0c35 -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/launchy/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/launchy/GET/response deleted file mode 100644 index a5154840cab0c2dbc24d3a064ae0ea52d8b489ff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2826 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 diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/libwebsocket/GET/request b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/libwebsocket/GET/request deleted file mode 100644 index aed4bcfd2e..0000000000 --- a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/libwebsocket/GET/request +++ /dev/null @@ -1,7 +0,0 @@ -> GET /info/libwebsocket -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 7edfb7e0938d0c35 -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/libwebsocket/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/libwebsocket/GET/response deleted file mode 100644 index a4474a4b3f4a98bf262bdd346b0a59ec3119fcfb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1626 zcmZuweM}Q)9PWZnJsmN+Wm}x%ASOiDD|h{%?ICJ)P*4jF3K&20_U^sw$@T8MyJ8Ed z__ZkbF=Dpqj9+9UL*1NlDw)wi7Bk$YY%17DRHiQAKpER46AkQb6~+?(XfFMIJ2vQo(_<^cHJw2#%gaZo^oC*Sv zkQH5!C5^`OU7n2Gyli)N4$6fzjZjoshfFj}<5U_RkXe}S6J@3tFs-TAnMHU4nOsG(iRh^I}F-+qupt&BVxoG+YSqFDm~3)ZrPt3QB+u)M)Q; zaHw`fE)9>Oy=d@r7Mc!pfq6y&NhTpVW7Wf3S%{!Utbv+Nm`xx6N@WSGiBV2bgT62i z0~)~w1B#Y{pkj7K)f(#N{XSiaRbx;GJdGzoz}NxBF+M9`ofZl@AaGdhsf?3LwcDYM zO~OQgu#lAkCqS0QJ+frP&34=aRCGX;9Vacc)kc#x-0ksV3}E~)=Cvw|G#&sU0`M?B zl{Df?(1$D?b{a|ynkgX;e5s(I15x4XV00}3fjCJkYomN-!pxYRgq495;pD6~!cN** zAGA3k$+6Lvpri`{bhM<2ByCnI6~%%8!3PwiqEAGb?2PmbmWM{hugU?KPN51PV2YuH zP%>BM0YTJoo7F@)QcV^z%US9nhGQyqT~04b*N!1&=E+c zDj-c9xJwz*#7UdYv?VpBNr?c^b3pH{1gMgr`7xvj3XtX)PSoMpgDHkkA%G~9K*Ujl zY6)ZsAG-Qyk|HlDv&BJV=DAQh7Nha3Z12z?!Y}BERdm0oBr1BHl+|gm*eQ$6Zn8N^ zn}swM=A&N*i6J6ruyjoV#UDH~0X2Qkg(@t$}jNfo<$Kbs`s#lKjO%fM=_Y--jG_%0g z+}td;k6!W5{p00Dj|U!I?U4_^_OP|^y5~rf>ESuyWe5Ud1O3Uv#xari|Sr-oMz{`R4B0^FOcjuARPOw{pz#;z%iO=Tai z(ry_#y4&{N(HD12?&!*HIx=_a$!ktg*gZ%BR?-L9IFU=Wu6wJH!=e;>g?j)|7 zHp?`z?bOM_4_l~-asIoBX zw6fKKnnn8(3~T$B_4d2ZAKx`tor_b;-0^$Q&c9K6E_vhVyW?}>KVA3H@?Fcf?XQWa zSN}4zXMIx3xJP9b`#OG%^v>A7&9nV(3$e-4(7pRWsK1>v@7-6sK+|7#brv-Y9CUqK zzN={K625YwQeRv7**5J`l{fuD!Ih*L2QCvk3ie#TS#e|PnYEts=DD*y6CBB*or%@A zr#5;|6h^+zd3|x=&ARs=2!B5vQ*`9C(oH?CKQ^ZK>CD`%liIm&a!y>D^B8l`eHZrp o_AW!Ku+R69v9_KjuD!MNa_L`ogTXL37-x{LoX$6nG8nLb0SJwLvH$=8 diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/libxml-ruby/GET/request b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/libxml-ruby/GET/request deleted file mode 100644 index f8bcc1d564..0000000000 --- a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/libxml-ruby/GET/request +++ /dev/null @@ -1,7 +0,0 @@ -> GET /info/libxml-ruby -> accept-encoding: gzip -> accept: */* -> user-agent: bundler/1.15.0.pre.2 rubygems/2.6.11 ruby/2.4.1 (x86_64-apple-darwin16.5.0) command/lock options/spec_run,plugins,trampoline_disable 7edfb7e0938d0c35 -> connection: keep-alive -> keep-alive: 30 -> host: index.rubygems.org diff --git a/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/libxml-ruby/GET/response b/spec/bundler/support/artifice/vcr_cassettes/realworld/index.rubygems.org/info/libxml-ruby/GET/response deleted file mode 100644 index 3b2131eef9c90d981e51aa1fba80a7504b315b76..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5227 zcmZu!c{r49`&MLMLPaP;ByWaUFlG=cqOwKyFlIB%)+`JnJ5jQeEGd*NYnJRPgb*cb zvNe)jg@|wJ{l542eaG?p>pAZGy6*Ej@AEpZ=Xf4tYikQNuqqe;0f7MKm-ta+5*

    2. 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

    }f)SXgCoJ5Nu}RI$f$Suamg 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%0ARdhRRO-RwwZ$e%CKx8Pbog^mvN` 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 z zE+}6Sh9EsXM&|87pX8?uoe@W>2nsE^Kz_f7uJ1r)UJ-;u@EeKl7`fb0+Un#LL>XFb zNfY4Ao2u;02UrB+6nP-eKry?qFDy>bK~y?;JSN3Ed1?j6{)OT7gUIIy-HGBbILt=C zqN{dXhI-V>P|VhFdr-4xaZV#QKGh_Jy~DPIzvzoVQRaW};B%GZ+cPziojj0z&28&< zEo+~|mF`EG=!3ti;>)pK6#3Ai9JNl%fXM!JOOL<^8y*!P$b=1a#CatI@qzUVWbHhA z%dH4~T2QL*t+ndCbZhriv-0`sfh_8QEM!?Z=!fYp;bkGtWg+>}$jZE_=W9dmcF}V+ zGmk@7e!2LftQbFy#de-U#T@B0e&>Vp-|v*4QoU*n3~dStjSPC(SK@Rgn|)bXmRqeU z{^vK7wUKUO-i$KzYhXy^*3Cv)_0yF)+PU=7Cx0T7*45~wLTKrnLI)_pZEgF*H0brc7wBeue)q%EEcloBe>O@Xx`)I}}v5NWZ z968?YaEmS{E*4*&e5S1e3X^eV-dh{w^f9at(!vRGlW7yb2d#5lQMsGRfCy7B25~8h>s<%y6;|ft3l0Y zQT7;*gxk3-hAH}04SnH1E+F+sN{K$<0u_FPLJaFbX0^GyI0PGN+%I!j zK8Z*pv)>Ri{nFKaqB=92qsdaqpiQ|Vwse{Q@+eI1Q&|Sz)e-f=$1*)W=Zm9X@vxT% zr~9jq7yE()2eJlYdV{9kj;vt-fZY=wKN-RHnrfe2SIf(A-V zgXD`A%JA+_85I0;@*2e9ymivB!)j`8dydG>z&@6yj;i1+jf4kyWtHr*lP~pCSL9%A zf}hJSY_>j|mByh@T3&7J$tzDtS>)c5w5wt?ZHkww!B73$@`{b$KYQ8PZg(l=#985r ze`t;0Wo_wWkRx|0{27RYlXPj1muUp8&GRc*Y0>noJKYCX>D?Jqq4|-Mb5%BE-}0^i zPU&I4PI~LSs(1Ou+mCydpP-Ta|DnAn73uEPo9r~dqSu!b^&OQ(GF*wIAzGO?8kr6n z&`*rlQ9UE&$~Ox=nOf&8=TWTFNuHmEe11py_ASk)q5E5~7X9Mt8w{&St%-ZSkQw{$ z);Y8W)YoOCym563x(R>MXKHaIwnvnMbWA3eij)`Cxc6*XY=*bBgJP9_HuXjk z)ugv?6k0Kzn}c|3pSzXEZKx9t1{iGk)nC(m)pbw8xY%{>*5rI@XEwL{G_m5BO`lQN zzm3co$&S1M2N4kYEv?M(#46c_g&Vm(?vn}DvQtM>6BQGAiwzm0>(lf+G(-WipWQ1; zvXmIKap^~!1z{)oVsQ(rJ)~1IpuBswsG$o)xe#|`t9w)8jqc&3+ z(jz>X?Z0v;4CK@JlqqPYl3fQH2Oc9XEBRh*jW)&oNJqG+b#@Z)kc=Z`quL#?s`O`0 z0q(1ZrTWV!P$P86u`u&?TbqU(Gzn1UAV4OM2xC$)oR?iqpOTTo&V0M>`i0AH^C<3x z%}JsPaGHWU1BCX)1Qj%}ADHXKk0hd$U)u`p)h*yc7uFL%4A7xtSqL&XniH7Y_aLUh zIBrSfRvAZ0FHasrY++8XPnhrRGHHt2zBE2Oe%Wvs-B+C;UH4z$W|Gt@Ij%(cvAj88 zB9z{)N}r15Q6lwoe8fxA0$9|{$<)uX`Yw+1KxwJ?iAn@2rijQUBO=G4FucwWEb-j z=71Y|$X}Zia!}5TSNH6X503#H;RaCn4Y}}-Wo)S;A8k}K`|1#Ou4=yo$lGLg|1QU5 z^EYbQzZh%&&=qVxYiEg%2!J#V{|SF>oW9P1j)B;3~kc{dg%3U2JXW zL{o){Rz&5!sPwF49I4!x(1_D{dNcplIA*WK#LauN*$?C>0{Mr*s>SC^t-LLm04nTYXH4;E?bs%S` z+lgRO(FZ=6Hx9CoHSW_P|Aqp7)A3GrTa?&_I~c33W%%%=)m^K?j4RW{+AjZO0zjVMz0{j@PJX^g=K5|Gh+$X7**y*`27jU!Q_atzEmVPS(J|pNk=n z7ʅ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