woocommerce/woocommerce

View on GitHub
.travis.yml

Summary

Maintainability
Test Coverage
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:
      - npm run build:assets
      - npm run docker:up
      - 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