Merge pull request #29378 from woocommerce/fix/code-sniff
Remove Travis and fix CI in GitHub Actions
This commit is contained in:
commit
886cd15016
|
@ -0,0 +1,74 @@
|
|||
name: Run CI
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- trunk
|
||||
- 'release/**'
|
||||
jobs:
|
||||
test:
|
||||
name: PHP ${{ matrix.php }} WP ${{ matrix.wp }}
|
||||
timeout-minutes: 15
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
php: [ '7.0', '7.1', '7.2', '7.3', '7.4', '8.0' ]
|
||||
wp: [ 'latest' ]
|
||||
include:
|
||||
- wp: nightly
|
||||
php: '7.4'
|
||||
- wp: '5.5'
|
||||
php: 7.2
|
||||
- wp: '5.4'
|
||||
php: 7.2
|
||||
services:
|
||||
database:
|
||||
image: mysql:5.6
|
||||
env:
|
||||
MYSQL_ROOT_PASSWORD: root
|
||||
ports:
|
||||
- 3306:3306
|
||||
options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=5
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v2
|
||||
|
||||
- name: Setup PHP
|
||||
uses: shivammathur/setup-php@v2
|
||||
with:
|
||||
php-version: ${{ matrix.php }}
|
||||
tools: composer
|
||||
extensions: mysql
|
||||
coverage: none
|
||||
|
||||
- name: Tool versions
|
||||
run: |
|
||||
php --version
|
||||
composer --version
|
||||
|
||||
- name: Get cached composer directories
|
||||
uses: actions/cache@v2
|
||||
with:
|
||||
path: |
|
||||
./packages
|
||||
./vendor
|
||||
key: ${{ runner.os }}-${{ hashFiles('./composer.lock') }}
|
||||
|
||||
- name: Setup and install composer
|
||||
run: composer install
|
||||
|
||||
- name: Add PHP8 Compatibility.
|
||||
run: |
|
||||
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
|
||||
|
||||
- name: Init DB and WP
|
||||
run: ./tests/bin/install.sh woo_test root root 127.0.0.1 ${{ matrix.wp }}
|
||||
|
||||
- name: Run tests
|
||||
run: ./vendor/bin/phpunit -c ./phpunit.xml
|
|
@ -17,6 +17,8 @@ jobs:
|
|||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
fetch-depth: 100
|
||||
|
||||
- name: Setup PHP
|
||||
uses: shivammathur/setup-php@v2
|
||||
|
@ -49,3 +51,7 @@ jobs:
|
|||
run: |
|
||||
RUN_CODE_COVERAGE=1 bash ./tests/bin/phpunit.sh
|
||||
exit 0
|
||||
|
||||
- name: Send code coverage to Codecov.
|
||||
run: |
|
||||
bash <(curl -s https://codecov.io/bash)
|
||||
|
|
|
@ -6,25 +6,17 @@ jobs:
|
|||
name: Code sniff (PHP 7.4, WP Latest)
|
||||
timeout-minutes: 15
|
||||
runs-on: ubuntu-latest
|
||||
services:
|
||||
database:
|
||||
image: mysql:5.6
|
||||
env:
|
||||
MYSQL_ROOT_PASSWORD: root
|
||||
ports:
|
||||
- 3306:3306
|
||||
options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=5
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
fetch-depth: 100
|
||||
|
||||
- name: Setup PHP
|
||||
uses: shivammathur/setup-php@v2
|
||||
with:
|
||||
php-version: 7.4
|
||||
tools: composer
|
||||
extensions: mysql
|
||||
coverage: none
|
||||
tools: composer, cs2pr
|
||||
|
||||
- name: Tool versions
|
||||
run: |
|
||||
|
@ -42,8 +34,9 @@ jobs:
|
|||
- name: Setup and install composer
|
||||
run: composer install
|
||||
|
||||
- name: Init DB and WP
|
||||
run: ./tests/bin/install.sh woo_test root root 127.0.0.1 latest
|
||||
|
||||
- name: Run code sniff
|
||||
run: RUN_PHPCS=1 bash ./tests/bin/phpcs.sh
|
||||
continue-on-error: true
|
||||
run: ./tests/bin/phpcs.sh "${{ github.event.pull_request.base.sha }}" "${{ github.event.after }}"
|
||||
|
||||
- name: Show PHPCS results in PR
|
||||
run: cs2pr ./phpcs-report.xml
|
||||
|
|
110
.travis.yml
110
.travis.yml
|
@ -1,110 +0,0 @@
|
|||
version: ~> 1.0
|
||||
|
||||
# Specifies that Travis should create builds for trunk and release branches and also tags.
|
||||
branches:
|
||||
only:
|
||||
- trunk
|
||||
- /^\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
|
|
@ -5,7 +5,7 @@
|
|||
<a href="https://packagist.org/packages/woocommerce/woocommerce"><img src="https://poser.pugx.org/woocommerce/woocommerce/v/stable" alt="Latest Stable Version"></a>
|
||||
<img src="https://img.shields.io/wordpress/plugin/dt/woocommerce.svg" alt="WordPress.org downloads">
|
||||
<img src="https://img.shields.io/wordpress/plugin/r/woocommerce.svg" alt="WordPress.org rating">
|
||||
<a href="https://travis-ci.com/woocommerce/woocommerce"><img src="https://travis-ci.com/woocommerce/woocommerce.svg?branch=trunk" alt="Build Status"></a>
|
||||
<a href="https://github.com/woocommerce/woocommerce/actions/workflows/ci.yml"><img src="https://github.com/woocommerce/woocommerce/actions/workflows/ci.yml/badge.svg?branch=trunk" alt="Build Status"></a>
|
||||
<a href="https://codecov.io/gh/woocommerce/woocommerce"><img src="https://codecov.io/gh/woocommerce/woocommerce/branch/trunk/graph/badge.svg" alt="codecov"></a>
|
||||
</p>
|
||||
|
||||
|
|
|
@ -2,17 +2,13 @@
|
|||
/**
|
||||
* WooCommerce Integration Settings
|
||||
*
|
||||
* @author WooThemes
|
||||
* @category Admin
|
||||
* @package WooCommerce\Admin
|
||||
* @version 2.1.0
|
||||
* @package WooCommerce\Admin
|
||||
* @version 2.1.0
|
||||
*/
|
||||
|
||||
use Automattic\Jetpack\Constants;
|
||||
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit; // Exit if accessed directly
|
||||
}
|
||||
defined( 'ABSPATH' ) || exit;
|
||||
|
||||
if ( ! class_exists( 'WC_Settings_Integrations', false ) ) :
|
||||
|
||||
|
@ -50,7 +46,7 @@ if ( ! class_exists( 'WC_Settings_Integrations', false ) ) :
|
|||
$current_section = current( $integrations )->id;
|
||||
}
|
||||
|
||||
if ( sizeof( $integrations ) > 1 ) {
|
||||
if ( count( $integrations ) > 1 ) {
|
||||
foreach ( $integrations as $integration ) {
|
||||
$title = empty( $integration->method_title ) ? ucfirst( $integration->id ) : $integration->method_title;
|
||||
$sections[ strtolower( $integration->id ) ] = esc_html( $title );
|
||||
|
|
|
@ -2,7 +2,6 @@
|
|||
|
||||
This document discusses unit tests. See [the e2e README](https://github.com/woocommerce/woocommerce/tree/trunk/tests/e2e) to learn how to setup testing environment for running e2e tests and run them.
|
||||
|
||||
|
||||
## Table of contents
|
||||
|
||||
- [WooCommerce Tests](#woocommerce-tests)
|
||||
|
@ -51,7 +50,6 @@ Example:
|
|||
|
||||
**Important**: The `<db-name>` database will be created if it doesn't exist and all data will be removed during testing.
|
||||
|
||||
|
||||
## Running Tests
|
||||
|
||||
Change to the plugin root directory and type:
|
||||
|
@ -78,9 +76,9 @@ WooCommerce currently supports PHP versions from 7.0 up to 8.0, and this poses a
|
|||
To workaround this, the testing strategy used by WooCommerce is as follows:
|
||||
|
||||
* We normally use PHPUnit 6.5.14
|
||||
* For PHP 8 we use [a custom fork of PHPUnit 7.5.20 with support for PHP 8](https://github.com/woocommerce/phpunit/pull/1). The Travis build is configured to use this fork instead of the old version 6 when running in PHP 8.
|
||||
* For PHP 8 we use [a custom fork of PHPUnit 7.5.20 with support for PHP 8](https://github.com/woocommerce/phpunit/pull/1). WooCommerce's GitHub Actions CI workflow is configured to use this fork instead of the old version 6 when running in PHP 8.
|
||||
|
||||
If you want to run the tests locally under PHP 8 you'll need to temporarily modify `composer.json` to use the custom PHPUnit fork in the same way that the Travis setup script does. These are the commands that you'll need (run them after a regular `composer install`):
|
||||
If you want to run the tests locally under PHP 8 you'll need to temporarily modify `composer.json` to use the custom PHPUnit fork in the same way that the GitHub Actions CI workflow file does. These are the commands that you'll need (run them after a regular `composer install`):
|
||||
|
||||
```shell
|
||||
curl -L https://github.com/woocommerce/phpunit/archive/add-compatibility-with-php8-to-phpunit-7.zip -o /tmp/phpunit-7.5-fork.zip
|
||||
|
@ -92,7 +90,6 @@ composer bin phpunit require --dev -W phpunit/phpunit:@dev --ignore-platform-req
|
|||
|
||||
Just remember that you can't include the modified `composer.json` in any commit!
|
||||
|
||||
|
||||
## Writing Tests
|
||||
|
||||
There are three different unit test directories:
|
||||
|
@ -122,12 +119,10 @@ General guidelines for all the unit tests:
|
|||
* Filters persist between test cases so be sure to remove them in your test method or in the `tearDown()` method.
|
||||
* Use data providers where possible. Be sure that their name is like `data_provider_function_to_test` (i.e. the data provider for `test_is_postcode` would be `data_provider_test_is_postcode`). Read more about data providers [here](https://phpunit.de/manual/current/en/writing-tests-for-phpunit.html#writing-tests-for-phpunit.data-providers).
|
||||
|
||||
|
||||
## Automated Tests
|
||||
|
||||
Tests are automatically run with [Travis-CI](https://travis-ci.org/woocommerce/woocommerce) for each commit and pull request.
|
||||
|
||||
Tests are automatically run with [GitHub Actions](https://github.com/woocommerce/woocommerce/actions/workflows/ci.yml) for each commit and pull request.
|
||||
|
||||
## Code Coverage
|
||||
|
||||
Code coverage is available on [Codecov](https://codecov.io/gh/woocommerce/woocommerce/) which receives updated data after each Travis build.
|
||||
Code coverage is available on [Codecov](https://codecov.io/gh/woocommerce/woocommerce/) which receives updated data after each build.
|
||||
|
|
|
@ -1,11 +1,14 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
if [[ ${RUN_PHPCS} == 1 ]]; then
|
||||
CHANGED_FILES=`git diff --name-only --diff-filter=ACMR $TRAVIS_COMMIT_RANGE | grep \\\\.php | awk '{print}' ORS=' '`
|
||||
IGNORE="tests/cli/,includes/libraries/,includes/api/legacy/"
|
||||
COMMIT_RANGE="${1}...${2}"
|
||||
CHANGED_FILES=`git diff --name-only --diff-filter=ACMR $COMMIT_RANGE | grep \\\\.php | awk '{print}' ORS=' '`
|
||||
IGNORE="tests/cli/,includes/libraries/,includes/api/legacy/"
|
||||
|
||||
if [ "$CHANGED_FILES" != "" ]; then
|
||||
echo "Running Code Sniffer."
|
||||
vendor/bin/phpcs --ignore=$IGNORE --encoding=utf-8 -s -n -p $CHANGED_FILES
|
||||
fi
|
||||
if [ "$CHANGED_FILES" != "" ]; then
|
||||
echo "Changed files: $CHANGED_FILES"
|
||||
echo "Running Code Sniffer."
|
||||
|
||||
./vendor/bin/phpcs --ignore=$IGNORE --encoding=utf-8 -s -n -p --report-full --report-checkstyle=./phpcs-report.xml ${CHANGED_FILES}
|
||||
else
|
||||
echo "No changes found. Skipping PHPCS run."
|
||||
fi
|
||||
|
|
|
@ -1,13 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
# usage: travis.sh before|after
|
||||
|
||||
if [ $1 == 'after' ]; then
|
||||
|
||||
if [[ ${RUN_CODE_COVERAGE} == 1 ]]; then
|
||||
bash <(curl -s https://codecov.io/bash)
|
||||
wget https://scrutinizer-ci.com/ocular.phar
|
||||
chmod +x ocular.phar
|
||||
php ocular.phar code-coverage:upload --format=php-clover coverage.clover
|
||||
fi
|
||||
|
||||
fi
|
Loading…
Reference in New Issue