diff --git a/.env b/.env index f6c05b695b..955eecd127 100644 --- a/.env +++ b/.env @@ -3,6 +3,10 @@ # # All of these options can be overridden by setting them as environment variables before starting # the environment. You will need to restart your environment when changing any of these. +# +# Below, the following substitutions can be made: +# - '{version}': any major.minor PHP version from 5.2 onwards. +# - '{phpunit_version}': any major PHPUnit version starting with 4. ## # The site will be available at http://localhost:LOCAL_PORT @@ -11,10 +15,30 @@ LOCAL_PORT=8889 # Where to run WordPress from. Valid options are 'src' and 'build'. LOCAL_DIR=src -# The PHP version to use. Valid options are 'latest', and '{version}-fpm', where '{version}' is any -# x.y PHP version from 5.2 onwards. +# The PHP version to use. Valid options are 'latest', and '{version}-fpm'. LOCAL_PHP=latest +## +# The PHPUnit version to use when running tests. +# +# Support for new PHPUnit versions is not backported to past versions, so some old WordPress branches require an older +# version to run tests. +# +# Valid versions are: +# - 'latest' for the highest version of PHPUnit supported on the highest version of PHP supported. +# - '{version}-fpm' for the highest version of PHPUnit supported on the specified version of PHP. +# - '{phpunit_version}-php-{version}-fpm' for a specific version of PHPUnit on the specified version of PHP. This format +# is only available for PHP versions 5.6 and higher. +# +# For the full list of available options, see https://hub.docker.com/r/wordpressdevelop/phpunit/tags. +# +# For full documentation on PHPUnit compatibility and WordPress versions, see +# https://make.wordpress.org/core/handbook/references/phpunit-compatibility-and-wordpress-versions/. +# +# This defaults to the value assigned to the value of LOCAL_PHP. +## +LOCAL_PHPUNIT=${LOCAL_PHP} + # Whether or not to enable XDebug. LOCAL_PHP_XDEBUG=false diff --git a/.travis.yml b/.travis.yml index 3197e049de..818b8ca504 100644 --- a/.travis.yml +++ b/.travis.yml @@ -29,7 +29,7 @@ env: jobs: include: - - env: WP_TRAVISCI=test:e2e PUPPETEER_SKIP_CHROMIUM_DOWNLOAD= + - env: WP_TRAVISCI=test:e2e LOCAL_PHPUNIT=latest PUPPETEER_SKIP_CHROMIUM_DOWNLOAD= name: E2E Tests - env: WP_TRAVISCI=lint:php COMPOSER_INSTALL=true NPM_INSTALL=false WP_INSTALL=false name: PHP Linting @@ -37,7 +37,7 @@ jobs: name: "PHP Compatibility Check" - env: WP_TRAVISCI=travis:js WP_INSTALL=false PUPPETEER_SKIP_CHROMIUM_DOWNLOAD= name: JS Tests - - env: LOCAL_PHP=8.0-fpm COMPOSER_INSTALL=true WP_TRAVISCI=test:php + - env: LOCAL_PHP=8.0-fpm LOCAL_PHPUNIT=8.0-fpm COMPOSER_INSTALL=true WP_TRAVISCI=test:php name: "PHPUnit Tests: PHP 8.0" script: # The PHPUnit 7.x phar is not compatible with PHP 8 and won't be updated, @@ -53,19 +53,19 @@ jobs: # Once Xdebug 3.0 is released and included in the Docker image, this should be uncommented again. # - LOCAL_PHP_XDEBUG=true docker-compose run --rm phpunit phpunit -v --group xdebug --exclude-group __fakegroup__ - - env: LOCAL_PHP=7.4-fpm WP_TRAVISCI=test:php + - env: LOCAL_PHP=7.4-fpm LOCAL_PHPUNIT=7.4-fpm WP_TRAVISCI=test:php name: "PHPUnit Tests: PHP 7.4" - - env: LOCAL_PHP=7.3-fpm WP_TRAVISCI=test:php + - env: LOCAL_PHP=7.3-fpm LOCAL_PHPUNIT=7.3-fpm WP_TRAVISCI=test:php name: "PHPUnit Tests: PHP 7.3" - - env: LOCAL_PHP=7.3-fpm LOCAL_PHP_MEMCACHED=true WP_TRAVISCI=test:php + - env: LOCAL_PHP=7.3-fpm LOCAL_PHPUNIT=7.3-fpm LOCAL_PHP_MEMCACHED=true WP_TRAVISCI=test:php name: "PHPUnit Tests: PHP 7.3 with Memcached" - - env: LOCAL_PHP=7.2-fpm WP_TRAVISCI=test:php + - env: LOCAL_PHP=7.2-fpm LOCAL_PHPUNIT=7.2-fpm WP_TRAVISCI=test:php name: "PHPUnit Tests: PHP 7.2" - - env: LOCAL_PHP=7.1-fpm WP_TRAVISCI=test:php + - env: LOCAL_PHP=7.1-fpm LOCAL_PHPUNIT=7.1-fpm WP_TRAVISCI=test:php name: "PHPUnit Tests: PHP 7.1" - - env: LOCAL_PHP=7.0-fpm WP_TEST_REPORTER=true WP_TRAVISCI=test:php + - env: LOCAL_PHP=7.0-fpm LOCAL_PHPUNIT=7.0-fpm WP_TEST_REPORTER=true WP_TRAVISCI=test:php name: "PHPUnit Tests: PHP 7.0" - - env: LOCAL_PHP=5.6-fpm WP_TRAVISCI=test:php + - env: LOCAL_PHP=5.6-fpm LOCAL_PHPUNIT=5.6-fpm WP_TRAVISCI=test:php name: "PHPUnit Tests: PHP 5.6" allow_failures: fast_finish: true diff --git a/docker-compose.yml b/docker-compose.yml index eddc4a5670..56c994337f 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -96,7 +96,7 @@ services: # The PHPUnit container. ## phpunit: - image: wordpressdevelop/phpunit:${LOCAL_PHP-latest} + image: wordpressdevelop/phpunit:${LOCAL_PHPUNIT-latest} networks: - wpdevnet diff --git a/package-lock.json b/package-lock.json index 00ac47685a..f6d60fd964 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9135,9 +9135,9 @@ } }, "dotenv": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.1.0.tgz", - "integrity": "sha512-GUE3gqcDCaMltj2++g6bRQ5rBJWtkWTmqmD0fo1RnnMuUqHNCt2oTPeDnS9n6fKYvlhn7AeBkb38lymBtWBQdA==", + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.2.0.tgz", + "integrity": "sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw==", "dev": true }, "dotenv-expand": { @@ -25201,6 +25201,12 @@ "tar-stream": "^2.0.0" }, "dependencies": { + "base64-js": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", + "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==", + "dev": true + }, "bl": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/bl/-/bl-4.0.3.tgz", @@ -25213,13 +25219,13 @@ } }, "buffer": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.6.0.tgz", - "integrity": "sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw==", + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.0.tgz", + "integrity": "sha512-cd+5r1VLBwUqTrmnzW+D7ABkJUM6mr7uv1dv+6jRw4Rcl7tFIFHDqHPL98LhpGFn3dbAt3gtLxtrWp4m1kFrqg==", "dev": true, "requires": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4" + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" } }, "readable-stream": { diff --git a/package.json b/package.json index 41eb962fbb..651d71b9e5 100644 --- a/package.json +++ b/package.json @@ -35,7 +35,7 @@ "check-node-version": "4.0.1", "copy-webpack-plugin": "^5.1.1", "cssnano": "4.1.10", - "dotenv": "8.1.0", + "dotenv": "8.2.0", "dotenv-expand": "5.1.0", "grunt": "~1.1.0", "grunt-banner": "^0.6.0", diff --git a/tools/local-env/scripts/docker.js b/tools/local-env/scripts/docker.js index 99eabbf620..60cb305b7f 100644 --- a/tools/local-env/scripts/docker.js +++ b/tools/local-env/scripts/docker.js @@ -1,6 +1,8 @@ -const dotenv = require( 'dotenv' ); +const dotenv = require( 'dotenv' ); +const dotenvExpand = require( 'dotenv-expand' ); const { execSync } = require( 'child_process' ); -dotenv.config(); + +dotenvExpand( dotenv.config() ); // Execute any docker-compose command passed to this script. execSync( 'docker-compose ' + process.argv.slice( 2 ).join( ' ' ), { stdio: 'inherit' } ); diff --git a/tools/local-env/scripts/install.js b/tools/local-env/scripts/install.js index a0a7914ca6..32371ee190 100644 --- a/tools/local-env/scripts/install.js +++ b/tools/local-env/scripts/install.js @@ -1,9 +1,10 @@ -const dotenv = require( 'dotenv' ); +const dotenv = require( 'dotenv' ); +const dotenvExpand = require( 'dotenv-expand' ); const wait_on = require( 'wait-on' ); const { execSync } = require( 'child_process' ); const { renameSync, readFileSync, writeFileSync } = require( 'fs' ); -dotenv.config(); +dotenvExpand( dotenv.config() ); // Create wp-config.php. wp_cli( 'config create --dbname=wordpress_develop --dbuser=root --dbpass=password --dbhost=mysql --path=/var/www/src --force' ); diff --git a/tools/local-env/scripts/start.js b/tools/local-env/scripts/start.js index ed065b021c..cf18435450 100644 --- a/tools/local-env/scripts/start.js +++ b/tools/local-env/scripts/start.js @@ -1,7 +1,8 @@ -const dotenv = require( 'dotenv' ); +const dotenv = require( 'dotenv' ); +const dotenvExpand = require( 'dotenv-expand' ); const { execSync } = require( 'child_process' ); -dotenv.config(); +dotenvExpand( dotenv.config() ); // Start the local-env containers. execSync( 'docker-compose up -d wordpress-develop', { stdio: 'inherit' } );