Feature: Requests integration with both v1 and v2 # This test downgrades to WordPress 5.8, but the SQLite plugin requires 6.0+ @require-mysql Scenario: Composer stack with Requests v1 Given an empty directory And a composer.json file: """ { "name": "wp-cli/composer-test", "type": "project", "require": { "wp-cli/wp-cli": "2.7.0", "wp-cli/core-command": "^2", "wp-cli/eval-command": "^2" } } """ # Note: Composer outputs messages to stderr. And I run `composer install --no-interaction 2>&1` When I run `vendor/bin/wp cli version` Then STDOUT should contain: """ WP-CLI 2.7.0 """ Given a WP installation And I run `vendor/bin/wp core update --version=5.8 --force` And I run `rm -r wp-content/themes/*` When I run `vendor/bin/wp core version` Then STDOUT should contain: """ 5.8 """ When I run `vendor/bin/wp eval 'var_dump( \WP_CLI\Utils\http_request( "GET", "https://example.com/" ) );'` Then STDOUT should contain: """ object(Requests_Response) """ And STDOUT should contain: """ HTTP/1.1 200 OK """ And STDERR should be empty # This test downgrades to WordPress 5.8, but the SQLite plugin requires 6.0+ @require-mysql Scenario: Current version with WordPress-bundled Requests v1 Given a WP installation And I run `wp core update --version=5.8 --force` And I run `rm -r wp-content/themes/*` When I run `wp core version` Then STDOUT should contain: """ 5.8 """ When I run `wp eval 'var_dump( \WP_CLI\Utils\http_request( "GET", "https://example.com/" ) );'` Then STDOUT should contain: """ object(Requests_Response) """ And STDOUT should contain: """ HTTP/1.1 200 OK """ And STDERR should be empty When I run `wp plugin install duplicate-post` Then STDOUT should contain: """ Success: Installed 1 of 1 plugins. """ Scenario: Current version with WordPress-bundled Requests v2 Given a WP installation And I run `wp core update --version=6.2 --force` When I run `wp core version` Then STDOUT should contain: """ 6.2 """ When I run `wp eval 'var_dump( \WP_CLI\Utils\http_request( "GET", "https://example.com/" ) );'` Then STDOUT should contain: """ object(WpOrg\Requests\Response) """ And STDOUT should contain: """ HTTP/1.1 200 OK """ And STDERR should be empty When I run `wp plugin install duplicate-post` Then STDOUT should contain: """ Success: Installed 1 of 1 plugins. """ # This test downgrades to WordPress 5.8, but the SQLite plugin requires 6.0+ @require-mysql Scenario: Current version with WordPress-bundled Request v1 and an alias Given a WP installation in 'foo' And I run `wp --path=foo core download --version=5.8 --force` And a wp-cli.yml file: """ @foo: path: foo """ When I try `WP_CLI_RUNTIME_ALIAS='{"@foo":{"path":"foo"}}' wp @foo option get home --debug` Then STDERR should contain: """ Setting RequestsLibrary::$version to v1 """ And STDERR should contain: """ Setting RequestsLibrary::$source to wp-core """