version: ~> 1.0 # Specifies that Travis should create builds for master and release branches and also tags. branches: only: - master - /^\d+\.\d+(\.\d+)?(-\S*)?$/ - /^release\// language: php os: - linux dist: xenial # Test main supported versions of PHP against latest WP. php: - "7.0" - "7.1" - "7.2" - "7.3" - "7.4" - "8.0" env: - WP_VERSION=latest WP_MULTISITE=0 # Additional tests against stable PHP (min version is 7.0) # and code coverage report. jobs: fast_finish: true include: - name: "Core E2E Tests" env: WP_VERSION=latest WP_MULTISITE=0 RUN_E2E=1 install: - nvm install - npm install - composer install --no-dev script: - travis_retry npm run build:assets - travis_retry npm run docker:up - travis_retry npm run test:e2e after_script: - npm run docker:down - name: "WP Nightly" php: "7.4" env: WP_VERSION=nightly WP_MULTISITE=0 - name: "WP Latest - 1" php: "7.2" env: WP_VERSION=5.5 WP_MULTISITE=0 - name: "WP Latest - 2" php: "7.2" env: WP_VERSION=5.4 WP_MULTISITE=0 - name: "Code Standards" php: "7.4" env: WP_VERSION=latest WP_MULTISITE=0 RUN_PHPCS=1 - name: "Code Coverage" php: "7.4" env: WP_VERSION=latest WP_MULTISITE=0 RUN_CODE_COVERAGE=1 allow_failures: - php: "7.4" env: WP_VERSION=latest WP_MULTISITE=0 RUN_CODE_COVERAGE=1 # Git clone depth # By default Travis CI clones repositories to a depth of 50 commits. Using a depth of 1 makes this step a bit faster. git: depth: 1 # Since Xenial services are not started by default, we need to instruct it below to start. services: - mysql - docker cache: directories: - $HOME/.composer/cache # Composer 2.0.7 introduced a change that broke the jetpack autoloader in PHP 7.0 - 7.3. before_install: - composer self-update 2.0.6 install: - export PATH="$HOME/.composer/vendor/bin:$PATH" - | # Remove Xdebug for a huge performance increase: if [ -f ~/.phpenv/versions/$(phpenv version-name)/etc/conf.d/xdebug.ini ]; then phpenv config-rm xdebug.ini else echo "xdebug.ini does not exist" fi - composer install - | if [ "$(php -r "echo version_compare(PHP_VERSION,'8.0','>=');")" ]; then curl -L https://github.com/woocommerce/phpunit/archive/add-compatibility-with-php8-to-phpunit-7.zip -o /tmp/phpunit-7.5-fork.zip unzip -d /tmp/phpunit-7.5-fork /tmp/phpunit-7.5-fork.zip composer bin phpunit config --unset platform composer bin phpunit config repositories.0 '{"type": "path", "url": "/tmp/phpunit-7.5-fork/phpunit-add-compatibility-with-php8-to-phpunit-7", "options": {"symlink": false}}' composer bin phpunit require --dev -W phpunit/phpunit:@dev --ignore-platform-reqs fi - | # Install WP Test suite: if [[ ! -z "$WP_VERSION" ]]; then bash tests/bin/install.sh woocommerce_test root '' localhost $WP_VERSION fi script: - bash tests/bin/phpunit.sh - bash tests/bin/phpcs.sh after_script: - bash tests/bin/travis.sh after