mirror of
https://gh.wpcy.net/https://github.com/WordPress/WordPress-Coding-Standards.git
synced 2026-04-30 03:31:42 +08:00
Parallel-Lint, as the name implies, runs PHP lint in parallel, making it faster than native linting. It also provides more helpful output with a syntax highlighter code snippet showing the context of syntax errors. And lastly, it allows for easily running PHP linting over the files in a local dev environment. As we're now doing a full `composer install` on every build anyway, we may as well use this tool.
175 lines
7.1 KiB
YAML
175 lines
7.1 KiB
YAML
dist: trusty
|
|
|
|
cache:
|
|
apt: true
|
|
directories:
|
|
# Cache directory for older Composer versions.
|
|
- $HOME/.composer/cache/files
|
|
# Cache directory for more recent Composer versions.
|
|
- $HOME/.cache/composer/files
|
|
|
|
language: php
|
|
|
|
php:
|
|
- 5.4
|
|
- 5.5
|
|
- 5.6
|
|
- 7.0
|
|
- 7.1
|
|
- 7.2
|
|
- 7.3
|
|
- 7.4
|
|
- "nightly"
|
|
|
|
env:
|
|
# PHPCS `master`.
|
|
- PHPCS_BRANCH="dev-master" LINT=1
|
|
# Lowest supported release in the 3.x series with which WPCS is compatible.
|
|
- PHPCS_BRANCH="3.5.0"
|
|
|
|
# Define the stages used.
|
|
# For non-PRs, only the sniff, ruleset and quicktest stages are run.
|
|
# For pull requests and merges, the full script is run (skipping quicktest).
|
|
# Note: for pull requests, "develop" should be the base branch name.
|
|
# See: https://docs.travis-ci.com/user/conditions-v1
|
|
stages:
|
|
- name: sniff
|
|
- name: rulesets
|
|
- name: quicktest
|
|
if: type = push AND branch NOT IN (master, develop)
|
|
- name: test
|
|
if: branch IN (master, develop)
|
|
|
|
jobs:
|
|
fast_finish: true
|
|
include:
|
|
#### SNIFF STAGE ####
|
|
- stage: sniff
|
|
php: 7.4
|
|
env: PHPCS_BRANCH="dev-master"
|
|
addons:
|
|
apt:
|
|
packages:
|
|
- libxml2-utils
|
|
script:
|
|
# WordPress Coding Standards.
|
|
# @link https://github.com/WordPress/WordPress-Coding-Standards
|
|
# @link http://pear.php.net/package/PHP_CodeSniffer/
|
|
- $(pwd)/vendor/bin/phpcs --runtime-set ignore_warnings_on_exit 1
|
|
|
|
# Validate the xml files.
|
|
# @link http://xmlsoft.org/xmllint.html
|
|
# For the build to properly error when validating against a scheme, these each have to be in their own condition.
|
|
- xmllint --noout --schema ./vendor/squizlabs/php_codesniffer/phpcs.xsd ./*/ruleset.xml
|
|
- xmllint --noout --schema ./vendor/squizlabs/php_codesniffer/phpcs.xsd ./phpcs.xml.dist.sample
|
|
|
|
# Check the code-style consistency of the xml files.
|
|
- diff -B --tabsize=4 ./WordPress/ruleset.xml <(xmllint --format "./WordPress/ruleset.xml")
|
|
- diff -B --tabsize=4 ./WordPress-Core/ruleset.xml <(xmllint --format "./WordPress-Core/ruleset.xml")
|
|
- diff -B --tabsize=4 ./WordPress-Docs/ruleset.xml <(xmllint --format "./WordPress-Docs/ruleset.xml")
|
|
- diff -B --tabsize=4 ./WordPress-Extra/ruleset.xml <(xmllint --format "./WordPress-Extra/ruleset.xml")
|
|
- diff -B --tabsize=4 ./phpcs.xml.dist.sample <(xmllint --format "./phpcs.xml.dist.sample")
|
|
|
|
# Validate the composer.json file.
|
|
# @link https://getcomposer.org/doc/03-cli.md#validate
|
|
- composer validate --no-check-all --strict
|
|
|
|
# Check that the sniffs available are feature complete.
|
|
# For now, just check that all sniffs have unit tests.
|
|
# At a later stage the documentation check can be activated.
|
|
- composer check-complete
|
|
|
|
#### RULESET STAGE ####
|
|
# Make sure the rulesets don't throw unexpected errors or warnings.
|
|
# This check needs to be run against a high PHP version to prevent triggering the syntax error check.
|
|
# It also needs to be run against all PHPCS versions WPCS is tested against.
|
|
- stage: rulesets
|
|
php: 7.4
|
|
env: PHPCS_BRANCH="dev-master"
|
|
script:
|
|
- $(pwd)/vendor/bin/phpcs -ps ./Tests/RulesetCheck/class-ruleset-test.inc --standard=WordPress-Core
|
|
- $(pwd)/vendor/bin/phpcs -ps ./Tests/RulesetCheck/class-ruleset-test.inc --standard=WordPress-Docs
|
|
- $(pwd)/vendor/bin/phpcs -ps ./Tests/RulesetCheck/class-ruleset-test.inc --standard=WordPress-Extra
|
|
- $(pwd)/vendor/bin/phpcs -ps ./Tests/RulesetCheck/class-ruleset-test.inc --standard=WordPress
|
|
|
|
# Test for fixer conflicts by running the auto-fixers of the complete WPCS over the test case files.
|
|
# This is not an exhaustive test, but should give an early indication for typical fixer conflicts.
|
|
# For the first run, the exit code will be 1 (= all fixable errors fixed).
|
|
# `travis_retry` should then kick in to run the fixer again which should now return 0 (= no fixable errors found).
|
|
# All error codes for the PHPCBF: https://github.com/squizlabs/PHP_CodeSniffer/issues/1270#issuecomment-272768413
|
|
- travis_retry $(pwd)/vendor/bin/phpcbf -pq ./WordPress/Tests/ --standard=WordPress --extensions=inc --exclude=Generic.PHP.Syntax --report=summary
|
|
|
|
- stage: rulesets
|
|
php: 7.4
|
|
env: PHPCS_BRANCH="3.5.0"
|
|
script:
|
|
- $(pwd)/vendor/bin/phpcs -ps ./Tests/RulesetCheck/class-ruleset-test.inc --standard=WordPress-Core
|
|
- $(pwd)/vendor/bin/phpcs -ps ./Tests/RulesetCheck/class-ruleset-test.inc --standard=WordPress-Docs
|
|
- $(pwd)/vendor/bin/phpcs -ps ./Tests/RulesetCheck/class-ruleset-test.inc --standard=WordPress-Extra
|
|
- $(pwd)/vendor/bin/phpcs -ps ./Tests/RulesetCheck/class-ruleset-test.inc --standard=WordPress
|
|
|
|
#### QUICK TEST STAGE ####
|
|
# This is a much quicker test which only runs the unit tests and linting against the low/high
|
|
# supported PHP/PHPCS combinations.
|
|
- stage: quicktest
|
|
php: 7.4
|
|
env: PHPCS_BRANCH="dev-master" LINT=1
|
|
- php: 7.3
|
|
env: PHPCS_BRANCH="3.5.0"
|
|
- php: 5.4
|
|
env: PHPCS_BRANCH="dev-master" LINT=1
|
|
- php: 5.4
|
|
env: PHPCS_BRANCH="3.5.0"
|
|
|
|
#### TEST STAGE ####
|
|
# Add extra build to test against PHPCS 4.
|
|
- stage: test
|
|
php: 7.4
|
|
env: PHPCS_BRANCH="4.0.x-dev as 3.9.99"
|
|
|
|
allow_failures:
|
|
# Allow failures for unstable builds.
|
|
- php: "nightly"
|
|
- env: PHPCS_BRANCH="4.0.x-dev as 3.9.99"
|
|
|
|
before_install:
|
|
# Speed up build time by disabling Xdebug.
|
|
# https://johnblackbourn.com/reducing-travis-ci-build-times-for-wordpress-projects/
|
|
# https://twitter.com/kelunik/status/954242454676475904
|
|
- phpenv config-rm xdebug.ini || echo 'No xdebug config.'
|
|
|
|
# On stable PHPCS versions, allow for PHP deprecation notices.
|
|
# Unit tests don't need to fail on those for stable releases where those issues won't get fixed anymore.
|
|
- |
|
|
if [[ "${TRAVIS_BUILD_STAGE_NAME^}" != "Sniff" && $PHPCS_BRANCH != "dev-master" ]]; then
|
|
echo 'error_reporting = E_ALL & ~E_DEPRECATED' >> ~/.phpenv/versions/$(phpenv version-name)/etc/conf.d/travis.ini
|
|
fi
|
|
|
|
- export XMLLINT_INDENT=" "
|
|
|
|
install:
|
|
- |
|
|
if [[ ${PHPCS_BRANCH:0:2} == "4." ]]; then
|
|
# Set Composer up to download only PHPCS from source for PHPCS 4.x.
|
|
# The source is needed to get the base testcase from PHPCS.
|
|
composer config preferred-install.squizlabs/php_codesniffer source
|
|
else
|
|
composer config preferred-install.squizlabs/php_codesniffer auto
|
|
fi
|
|
- composer require squizlabs/php_codesniffer:"${PHPCS_BRANCH}" --no-update --no-suggest --no-scripts
|
|
- |
|
|
if [[ $TRAVIS_PHP_VERSION == "nightly" ]]; then
|
|
# PHPUnit 7.x does not allow for installation on PHP 8, so ignore platform
|
|
# requirements to get PHPUnit 7.x to install on nightly.
|
|
composer install --ignore-platform-reqs --no-suggest
|
|
else
|
|
# Do a normal dev install in all other cases.
|
|
composer install --no-suggest
|
|
fi
|
|
|
|
script:
|
|
# Lint the PHP files against parse errors.
|
|
- if [[ "$LINT" == "1" ]]; then composer lint; fi
|
|
|
|
# Run the unit tests.
|
|
- composer run-tests
|