os: linux dist: xenial language: generic services: - docker addons: apt: packages: - docker-ce cache: apt: true directories: - $HOME/.npm - vendor env: global: - LOCAL_DIR: build - COMPOSER_INSTALL: false - NPM_INSTALL: true - WP_INSTALL: true - PHP_FPM_UID: "`id -u`" - PHP_FPM_GID: "`id -g`" - PUPPETEER_SKIP_CHROMIUM_DOWNLOAD: true jobs: include: - 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 - env: WP_TRAVISCI=test:compat COMPOSER_INSTALL=true NPM_INSTALL=false WP_INSTALL=false 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 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, # as PHPUnit 7 is no longer supported, so run the Composer-installed PHPUnit instead. - npm run test:php-composer -- --verbose -c phpunit.xml.dist - npm run test:php-composer -- --verbose -c phpunit.xml.dist --group ajax - npm run test:php-composer -- --verbose -c tests/phpunit/multisite.xml - npm run test:php-composer -- --verbose -c tests/phpunit/multisite.xml --group ms-files - npm run test:php-composer -- --verbose -c phpunit.xml.dist --group external-http - npm run test:php-composer -- --verbose -c phpunit.xml.dist --group restapi-jsclient # __fakegroup__ is excluded to force PHPUnit to ignore the settings in phpunit.xml.dist. # Xdebug supports PHP 8 only from version 3.0, which is not released yet. # 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 LOCAL_PHPUNIT=7.4-fpm WP_TRAVISCI=test:php name: "PHPUnit Tests: PHP 7.4" - 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_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 LOCAL_PHPUNIT=7.2-fpm WP_TRAVISCI=test:php name: "PHPUnit Tests: PHP 7.2" - 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 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 LOCAL_PHPUNIT=5.6-fpm WP_TRAVISCI=test:php name: "PHPUnit Tests: PHP 5.6" allow_failures: fast_finish: true before_install: - | if [[ "$WP_TRAVISCI" == "test:php" ]]; then travis_retry svn checkout -r 2387243 https://plugins.svn.wordpress.org/wordpress-importer/trunk/ tests/phpunit/data/plugins/wordpress-importer fi - | sudo rm /usr/local/bin/docker-compose curl -L https://github.com/docker/compose/releases/download/1.24.0/docker-compose-`uname -s`-`uname -m` > docker-compose chmod +x docker-compose sudo mv docker-compose /usr/local/bin before_script: - | if [[ "$COMPOSER_INSTALL" == "true" && ${LOCAL_PHP:0:3} != "8.0" ]]; then docker-compose run --rm php composer --version docker-compose run --rm php composer install elif [[ "$COMPOSER_INSTALL" == "true" && ${LOCAL_PHP:0:3} == "8.0" ]]; then docker-compose run --rm php composer --version docker-compose run --rm php composer install --ignore-platform-reqs fi - npm --version - node --version - nvm install --latest-npm - | if [[ "$NPM_INSTALL" == "true" ]]; then npm ci fi - | if [[ "$WP_TRAVISCI" == "test:e2e" ]] || [[ "$WP_TRAVISCI" == "test:php" ]]; then npm run env:start npm run build docker-compose run --rm mysql mysql --version docker-compose run --rm php php --version docker-compose run --rm php php -m fi - | if [[ ${LOCAL_PHP:0:3} == "8.0" ]]; then docker-compose run --rm phpunit php ./vendor/bin/phpunit --version elif [[ "$WP_TRAVISCI" == "test:e2e" ]] || [[ "$WP_TRAVISCI" == "test:php" ]]; then docker-compose run --rm phpunit phpunit --version fi - | if [[ "$LOCAL_PHP_MEMCACHED" == "true" ]]; then cp tests/phpunit/includes/object-cache.php build/wp-content/object-cache.php # The memcached server needs to start after `npm run env:start`, which sets up the Docker network. docker run --name memcached --net $(basename "$PWD")_wpdevnet -d memcached fi - | if [[ "$WP_INSTALL" == "true" ]]; then # Run the install process after memcached has started. npm run env:install fi - npm --version - node --version - curl --version - git --version - svn --version - php --version - php -i - locale -a script: - | if [[ "$WP_TRAVISCI" == "test:e2e" ]]; then npm run test:e2e elif [[ "$WP_TRAVISCI" == "test:php" ]]; then npm run test:php -- --verbose -c phpunit.xml.dist && npm run test:php -- --verbose -c phpunit.xml.dist --group ajax && npm run test:php -- --verbose -c tests/phpunit/multisite.xml && npm run test:php -- --verbose -c tests/phpunit/multisite.xml --group ms-files && npm run test:php -- --verbose -c phpunit.xml.dist --group external-http && npm run test:php -- --verbose -c phpunit.xml.dist --group restapi-jsclient && # __fakegroup__ is excluded to force PHPUnit to ignore the settings in phpunit.xml.dist. LOCAL_PHP_XDEBUG=true npm run test:php -- -v --group xdebug --exclude-group __fakegroup__ elif [[ "$WP_TRAVISCI" == "lint:php" ]]; then docker-compose run --rm php composer lint:errors && docker-compose run --rm php composer lint tests elif [[ "$WP_TRAVISCI" == "test:compat" ]]; then docker-compose run --rm php composer compat else npm run grunt $WP_TRAVISCI fi after_script: - | if [[ "$WP_TEST_REPORTER" == "true" ]]; then git clone https://github.com/WordPress/phpunit-test-runner.git test-runner docker-compose run --rm -e WPT_REPORT_API_KEY -e WPT_PREPARE_DIR=/var/www -e WPT_TEST_DIR=/var/www php php test-runner/report.php fi notifications: slack: rooms: secure: PO3x/bhYXNFqAMtzDzpOAnHcg2KzG2gGbBDft1HlqN4O8hRJqrRs7hqsEe9wKZUs6qf9Jv0ZleJ5AmcSd0DbDAFsfqeWtnWpsj8NqOIWgLX0C2idvfNRzCX1mUd6E1hlAjjTGnKn4MV3m1dRurwcDqacSBVtbXKQ+yPSgM3eXYkDz8EFbTsMcda8pFskcXr98E7/YomU0QtgOcjXndxGZ53zUQ1rfaDwUJzGY3bn5nLoweVZsSIeEFSiNcip7Kt22zVlU0SAb6QlBf3F0h9IWoRD59BQ7pkl53FWzpXoHzUYOFmn0jB5y1vHMlHvTDVEmDuumpCEqnxVvLh33AwGtqYRWH36PEfTn/u1YTFr7FS7KbwrKw9Nn+jUZe3KFrVzgQNUt0El33mO0FbSoNEWJhxRarp0D1z3/HVsbon3Fwzt/3jBHGf9nI+tHH4u7KQ70+M7pzBsV7F7Lc60YnuKrcy/hkwObGB0Za9tMHPUw3c7b4ep6nSa4ts9S++IijLWDaNAq7K/j7fAfI1JrkPIw4T6PcGpNAADkmlCrvToKE4axExaJke/lkUb+3Pwdj0h7ePzPSrHT8aASlKFM1PuI1KRMn/J4wRLtGeLlfYXvVlaQYmJobJtYgoiNWJWMIybLGVBSVPohdGO3qIJbl8WNPN1cW2ZZTcEBprLe8y7MSo= on_failure: always on_success: change on_pull_requests: false