-
Notifications
You must be signed in to change notification settings - Fork 4.3k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
1. Remove the Unit Tests workflow and the unit-test.yml file.
2. Move the PHPUnit CI job from unit-test.yml to phpunit-tests.yml. 3. Move the JavaScript Tests from unit-test.yml to javascript-tests.yml. 4. Rename the Static Analysis (Linting, License, Type checks...) workflow to Coding Standards and move it to coding-standards.yml. 5. Move the PHP coding standards job from unit-tests.yml to coding-standards.yml. 6. Rename the All job to JavaScript coding standards and move it to coding-standards.yml. 7. Rename the JavaScript job to Jest Tests. 8. Change the composer versions of squizlabs/php_codesniffer, phpcompatibility/phpcompatibility-wp, and wp-coding-standards/wpcs to use the same package versions as in Core.
- Loading branch information
1 parent
96b9006
commit 91f0606
Showing
9 changed files
with
436 additions
and
298 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,107 @@ | ||
name: Coding Standards | ||
|
||
on: | ||
pull_request: | ||
push: | ||
branches: | ||
- trunk | ||
- 'release/**' | ||
- 'wp/**' | ||
# Allow manually triggering the workflow. | ||
workflow_dispatch: | ||
|
||
# Cancels all previous workflow runs for pull requests that have not completed. | ||
concurrency: | ||
# The concurrency group contains the workflow name and the branch name for pull requests | ||
# or the commit hash for any other events. | ||
group: ${{ github.workflow }}-${{ github.event_name == 'pull_request' && github.head_ref || github.sha }} | ||
cancel-in-progress: true | ||
|
||
jobs: | ||
# Runs PHP coding standards checks. | ||
# | ||
# Violations are reported inline with annotations. | ||
phpcs: | ||
name: PHP coding standards | ||
runs-on: ubuntu-latest | ||
timeout-minutes: 20 | ||
if: ${{ github.repository == 'WordPress/gutenberg' || github.event_name == 'pull_request' }} | ||
|
||
steps: | ||
- name: Checkout repository | ||
uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 | ||
|
||
- name: Set up PHP | ||
uses: shivammathur/setup-php@d30ad8b1843ace22e6698ab99bbafaa747b6bd0d # v2.24.0 | ||
with: | ||
php-version: '7.4' | ||
coverage: none | ||
tools: cs2pr | ||
|
||
# This date is used to ensure that the PHPCS cache is cleared at least once every week. | ||
# http://man7.org/linux/man-pages/man1/date.1.html | ||
- name: "Get last Monday's date" | ||
id: get-date | ||
run: echo "date=$(/bin/date -u --date='last Mon' "+%F")" >> $GITHUB_OUTPUT | ||
|
||
- name: Cache PHPCS scan cache | ||
uses: actions/cache@6998d139ddd3e68c71e9e398d8e40b71a2f39812 # v3.2.5 | ||
with: | ||
path: .cache/phpcs.json | ||
key: ${{ runner.os }}-date-${{ steps.get-date.outputs.date }}-phpcs-cache-${{ hashFiles('**/composer.json', 'phpcs.xml.dist') }} | ||
|
||
# Since Composer dependencies are installed using `composer update` and no lock file is in version control, | ||
# passing a custom cache suffix ensures that the cache is flushed at least once per week. | ||
- name: Install Composer dependencies | ||
uses: ramsey/composer-install@83af392bf5f031813d25e6fe4cd626cdba9a2df6 # v2.2.0 | ||
with: | ||
custom-cache-suffix: ${{ steps.get-date.outputs.date }} | ||
|
||
- name: Make Composer packages available globally | ||
run: echo "${PWD}/vendor/bin" >> $GITHUB_PATH | ||
|
||
- name: Run PHPCS on all Gutenberg files | ||
id: phpcs-gutenberg | ||
run: phpcs --report-full --report-checkstyle=./.cache/phpcs-report.xml | ||
|
||
- name: Show PHPCS results in PR | ||
if: ${{ always() && steps.phpcs-gutenberg.outcome == 'failure' }} | ||
run: cs2pr ./.cache/phpcs-report.xml | ||
|
||
- name: Ensure version-controlled files are not modified during the tests | ||
run: git diff --exit-code | ||
|
||
check: | ||
name: JavaScript coding standards | ||
runs-on: ubuntu-latest | ||
if: ${{ github.repository == 'WordPress/gutenberg' || github.event_name == 'pull_request' }} | ||
|
||
steps: | ||
- uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # v3.5.0 | ||
|
||
- name: Use desired version of Node.js | ||
uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3.6.0 | ||
with: | ||
node-version-file: '.nvmrc' | ||
cache: npm | ||
|
||
- name: Npm install | ||
# A "full" install is executed, since `npm ci` does not always exit | ||
# with an error status code if the lock file is inaccurate. This also | ||
# helps to catch dependencies not being installed with exact version. | ||
# | ||
# See: https://github.com/WordPress/gutenberg/issues/16157 | ||
# See: https://github.com/WordPress/gutenberg/pull/39865 | ||
run: npm install | ||
|
||
- name: Lint JavaScript and Styles | ||
run: npm run lint | ||
|
||
- name: Type checking | ||
run: npm run build:package-types | ||
|
||
- name: Check local changes | ||
run: npm run other:check-local-changes | ||
|
||
- name: License compatibility | ||
run: npm run other:check-licenses |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,71 @@ | ||
name: JavaScript Tests | ||
|
||
# Since Unit Tests are required to pass for each PR, | ||
# we cannot disable them for documentation-only changes. | ||
on: | ||
pull_request: | ||
push: | ||
branches: | ||
- trunk | ||
- 'release/**' | ||
- 'wp/**' | ||
# Allow manually triggering the workflow. | ||
workflow_dispatch: | ||
|
||
# Cancels all previous workflow runs for pull requests that have not completed. | ||
concurrency: | ||
# The concurrency group contains the workflow name and the branch name for pull requests | ||
# or the commit hash for any other events. | ||
group: ${{ github.workflow }}-${{ github.event_name == 'pull_request' && github.head_ref || github.sha }} | ||
cancel-in-progress: true | ||
|
||
jobs: | ||
unit-js: | ||
name: Jest Tests | ||
runs-on: ubuntu-latest | ||
if: ${{ github.repository == 'WordPress/gutenberg' || github.event_name == 'pull_request' }} | ||
|
||
strategy: | ||
fail-fast: false | ||
matrix: | ||
node: ['14'] | ||
|
||
steps: | ||
- uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # v3.5.0 | ||
|
||
- name: Setup Node.js and install dependencies | ||
uses: ./.github/setup-node | ||
with: | ||
node-version: ${{ matrix.node }} | ||
|
||
- name: Npm build | ||
# It's not necessary to run the full build, since Jest can interpret | ||
# source files with `babel-jest`. Some packages have their own custom | ||
# build tasks, however. These must be run. | ||
run: npx lerna run build | ||
|
||
- name: Running the tests | ||
run: npm run test:unit -- --ci --maxWorkers=2 --cacheDirectory="$HOME/.jest-cache" | ||
|
||
- name: Running the date tests | ||
run: npm run test:unit:date -- --ci --maxWorkers=2 --cacheDirectory="$HOME/.jest-cache" | ||
|
||
mobile-unit-js: | ||
name: Mobile | ||
runs-on: ubuntu-latest | ||
if: ${{ github.repository == 'WordPress/gutenberg' || github.event_name == 'pull_request' }} | ||
|
||
steps: | ||
- uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # v3.5.0 | ||
|
||
- name: Setup Node.js and install dependencies | ||
uses: ./.github/setup-node | ||
|
||
- name: Npm build | ||
# It's not necessary to run the full build, since Jest can interpret | ||
# source files with `babel-jest`. Some packages have their own custom | ||
# build tasks, however. These must be run. | ||
run: npx lerna run build | ||
|
||
- name: Running the tests | ||
run: npm run native test -- --ci --maxWorkers=2 --cacheDirectory="$HOME/.jest-cache" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,72 @@ | ||
name: PHP Compatibility | ||
|
||
on: | ||
pull_request: | ||
push: | ||
branches: | ||
- trunk | ||
- 'release/**' | ||
- 'wp/**' | ||
# Allow manually triggering the workflow. | ||
workflow_dispatch: | ||
|
||
# Cancels all previous workflow runs for pull requests that have not completed. | ||
concurrency: | ||
# The concurrency group contains the workflow name and the branch name for pull requests | ||
# or the commit hash for any other events. | ||
group: ${{ github.workflow }}-${{ github.event_name == 'pull_request' && github.head_ref || github.sha }} | ||
cancel-in-progress: true | ||
|
||
jobs: | ||
# Runs PHP compatibility testing. | ||
# | ||
# Violations are reported inline with annotations. | ||
php-compatibility: | ||
name: Check PHP compatibility | ||
runs-on: ubuntu-latest | ||
timeout-minutes: 20 | ||
if: ${{ github.repository == 'WordPress/gutenberg' || github.event_name == 'pull_request' }} | ||
|
||
steps: | ||
- name: Checkout repository | ||
uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 | ||
|
||
- name: Set up PHP | ||
uses: shivammathur/setup-php@d30ad8b1843ace22e6698ab99bbafaa747b6bd0d # v2.24.0 | ||
with: | ||
php-version: '7.4' | ||
coverage: none | ||
tools: cs2pr | ||
|
||
# This date is used to ensure that the PHP compatibility cache is cleared at least once every week. | ||
# http://man7.org/linux/man-pages/man1/date.1.html | ||
- name: "Get last Monday's date" | ||
id: get-date | ||
run: echo "date=$(/bin/date -u --date='last Mon' "+%F")" >> $GITHUB_OUTPUT | ||
|
||
- name: Cache PHP compatibility scan cache | ||
uses: actions/cache@627f0f41f6904a5b1efbaed9f96d9eb58e92e920 # v3.0.11 | ||
with: | ||
path: .cache/phpcompat.json | ||
key: ${{ runner.os }}-date-${{ steps.get-date.outputs.date }}-phpcompat-cache-${{ hashFiles('**/composer.json', 'phpcompat.xml.dist') }} | ||
|
||
# Since Composer dependencies are installed using `composer update` and no lock file is in version control, | ||
# passing a custom cache suffix ensures that the cache is flushed at least once per week. | ||
- name: Install Composer dependencies | ||
uses: ramsey/composer-install@83af392bf5f031813d25e6fe4cd626cdba9a2df6 # v2.2.0 | ||
with: | ||
custom-cache-suffix: ${{ steps.get-date.outputs.date }} | ||
|
||
- name: Make Composer packages available globally | ||
run: echo "${PWD}/vendor/bin" >> $GITHUB_PATH | ||
|
||
- name: Run PHP compatibility tests | ||
id: phpcs | ||
run: phpcs --report-full --report-checkstyle=./.cache/phpcs-compat-report.xml | ||
|
||
- name: Show PHPCompatibility results in PR | ||
if: ${{ always() && steps.phpcs.outcome == 'failure' }} | ||
run: cs2pr ./.cache/phpcs-compat-report.xml | ||
|
||
- name: Ensure version-controlled files are not modified during the tests | ||
run: git diff --exit-code |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,126 @@ | ||
name: PHPUnit Tests | ||
|
||
# Since Unit Tests are required to pass for each PR, | ||
# we cannot disable them for documentation-only changes. | ||
on: | ||
pull_request: | ||
push: | ||
branches: | ||
- trunk | ||
- 'release/**' | ||
- 'wp/**' | ||
# Allow manually triggering the workflow. | ||
workflow_dispatch: | ||
|
||
# Cancels all previous workflow runs for pull requests that have not completed. | ||
concurrency: | ||
# The concurrency group contains the workflow name and the branch name for pull requests | ||
# or the commit hash for any other events. | ||
group: ${{ github.workflow }}-${{ github.event_name == 'pull_request' && github.head_ref || github.sha }} | ||
cancel-in-progress: true | ||
|
||
jobs: | ||
test-php: | ||
name: PHP ${{ matrix.php }}${{ matrix.multisite && ' multisite' || '' }} on ubuntu-latest | ||
runs-on: ubuntu-latest | ||
timeout-minutes: 20 | ||
if: ${{ github.repository == 'WordPress/gutenberg' || github.event_name == 'pull_request' }} | ||
strategy: | ||
fail-fast: true | ||
matrix: | ||
php: | ||
- '5.6' | ||
- '7.0' | ||
- '7.1' | ||
- '7.2' | ||
- '7.3' | ||
- '7.4' | ||
- '8.0' | ||
- '8.1' | ||
- '8.2' | ||
multisite: [false, true] | ||
|
||
env: | ||
WP_ENV_PHP_VERSION: ${{ matrix.php }} | ||
|
||
steps: | ||
- uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 | ||
|
||
- name: Set up Node.js | ||
uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3.6.0 | ||
with: | ||
node-version-file: '.nvmrc' | ||
cache: npm | ||
|
||
## | ||
# This allows Composer dependencies to be installed using a single step. | ||
# | ||
# Since the tests are currently run within the Docker containers where the PHP version varies, | ||
# the same PHP version needs to be configured for the action runner machine so that the correct | ||
# dependency versions are installed and cached. | ||
## | ||
- name: Set up PHP | ||
uses: shivammathur/setup-php@d30ad8b1843ace22e6698ab99bbafaa747b6bd0d # v2.24.0 | ||
with: | ||
php-version: '${{ matrix.php }}' | ||
ini-file: development | ||
coverage: none | ||
|
||
# Ensure that Composer installs the correct versions of packages. | ||
- name: Override PHP version in composer.json | ||
run: composer config platform.php ${{ matrix.php }} | ||
|
||
# The spatie/phpunit-watcher package is not compatible with PHP < 7.2. | ||
# It must be removed before running the tests. | ||
- name: Remove incompatible Composer packages | ||
if: ${{ matrix.php < '7.2' }} | ||
run: composer remove spatie/phpunit-watcher --dev --no-update | ||
|
||
# Since Composer dependencies are installed using `composer update` and no lock file is in version control, | ||
# passing a custom cache suffix ensures that the cache is flushed at least once per week. | ||
- name: Install Composer dependencies | ||
uses: ramsey/composer-install@83af392bf5f031813d25e6fe4cd626cdba9a2df6 # v2.2.0 | ||
with: | ||
custom-cache-suffix: $(/bin/date -u --date='last Mon' "+%F") | ||
|
||
- name: Install npm dependencies | ||
run: | | ||
npm ci | ||
npm run build | ||
- name: Docker debug information | ||
run: | | ||
docker -v | ||
docker-compose -v | ||
- name: General debug information | ||
run: | | ||
npm --version | ||
node --version | ||
curl --version | ||
git --version | ||
svn --version | ||
locale -a | ||
- name: Start Docker environment | ||
run: npm run wp-env start | ||
|
||
- name: Log running Docker containers | ||
run: docker ps -a | ||
|
||
- name: Docker container debug information | ||
run: | | ||
npm run wp-env run tests-mysql "mysql --version" | ||
npm run wp-env run tests-wordpress "php --version" | ||
npm run wp-env run tests-wordpress "php -m" | ||
npm run wp-env run tests-wordpress "php -i" | ||
npm run wp-env run tests-wordpress "/var/www/html/wp-content/plugins/gutenberg/vendor/bin/phpunit --version" | ||
npm run wp-env run tests-wordpress "locale -a" | ||
- name: Running single site unit tests | ||
if: ${{ ! matrix.multisite }} | ||
run: npm run test:unit:php | ||
|
||
- name: Running multisite unit tests | ||
if: ${{ matrix.multisite }} | ||
run: npm run test:unit:php:multisite |
Oops, something went wrong.