Tests #2272
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
name: Tests | |
on: | |
push: | |
branches: [main] | |
pull_request: | |
branches: [main] | |
schedule: | |
- cron: 0 0 * * * | |
jobs: | |
lint: | |
runs-on: "ubuntu-latest" | |
name: "Linting | PHP ${{ matrix.php-version }}" | |
strategy: | |
matrix: | |
php-version: | |
- "8.1" | |
- "8.2" | |
- "8.3" | |
steps: | |
- name: "Checkout" | |
uses: "actions/checkout@v4" | |
- name: "Install PHP" | |
uses: "shivammathur/setup-php@v2" | |
with: | |
coverage: "none" | |
php-version: "${{ matrix.php-version }}" | |
tools: composer:v2 | |
extensions: dom, curl, libxml, mbstring, zip, pdo, mysql, pdo_mysql, gd | |
- name: "Install dependencies" | |
uses: "ramsey/composer-install@v3" | |
- name: "PHPCS" | |
run: "php vendor/bin/phpcs" | |
- name: "PHPStan" | |
run: "php vendor/bin/phpstan analyze" | |
tests: | |
continue-on-error: ${{ matrix.experimental }} | |
runs-on: "ubuntu-latest" | |
name: "Tests | PHP ${{ matrix.php-version }} | Drupal ${{ matrix.drupal }}" | |
strategy: | |
matrix: | |
experimental: [false] | |
php-version: | |
- "8.1" | |
- "8.2" | |
drupal: | |
- "^10" | |
include: | |
- php-version: "8.1" | |
drupal: "^9.0" | |
experimental: false | |
- php-version: "8.3" | |
drupal: "11.x-dev" | |
experimental: true | |
steps: | |
- name: "Checkout" | |
uses: "actions/checkout@v4" | |
- name: "Install PHP" | |
uses: "shivammathur/setup-php@v2" | |
with: | |
coverage: "xdebug" | |
php-version: "${{ matrix.php-version }}" | |
tools: composer:v2 | |
extensions: dom, curl, libxml, mbstring, zip, pdo, mysql, pdo_mysql, gd | |
- name: "Set drupal/core to ${{ matrix.drupal }}" | |
run: "composer require drupal/core-recommended:${{ matrix.drupal }} --with-all-dependencies --dev --no-update" | |
- name: "Add phpspec/prophecy-phpunit" | |
run: "composer require phpspec/prophecy-phpunit:^2 --dev --no-update" | |
if: ${{ matrix.drupal == '^9.0' }} | |
- name: "Install dependencies" | |
uses: "ramsey/composer-install@v3" | |
- name: "PHPUnit" | |
run: "php vendor/bin/phpunit" | |
build_integration: | |
needs: | |
- lint | |
- tests | |
continue-on-error: ${{ matrix.experimental }} | |
runs-on: "ubuntu-latest" | |
name: "Build Integration | PHP ${{ matrix.php-version }} | Drupal ${{ matrix.drupal }}" | |
strategy: | |
matrix: | |
experimental: [false] | |
php-version: | |
- "8.1" | |
- "8.2" | |
drupal: | |
- "^10" | |
include: | |
- php-version: "8.1" | |
drupal: "^9.0" | |
experimental: false | |
- php-version: "8.3" | |
drupal: "11.x-dev" | |
experimental: true | |
steps: | |
- name: "Checkout" | |
uses: "actions/checkout@v4" | |
- name: "Install PHP" | |
uses: "shivammathur/setup-php@v2" | |
with: | |
coverage: "none" | |
php-version: "${{ matrix.php-version }}" | |
tools: composer:v2 | |
extensions: dom, curl, libxml, mbstring, zip, pdo, mysql, pdo_mysql, bcmath, gd, exif, iconv | |
- name: Setup Drupal | |
uses: bluehorndigital/setup-drupal@v1.1.0 | |
with: | |
version: ${{ matrix.drupal }} | |
path: ~/drupal | |
- name: "set the version alias for self" | |
run: | | |
if [ "${{ github.event_name }}" == 'pull_request' ]; then | |
echo "VERSION_ALIAS=dev-"${{ github.sha }}"" >> $GITHUB_OUTPUT | |
else | |
echo "VERSION_ALIAS=dev-main" >> $GITHUB_OUTPUT | |
fi | |
id: branch_alias | |
- name: "require phpstan-drupal" | |
run: | | |
cd ~/drupal | |
COMPOSER_MEMORY_LIMIT=-1 composer require mglaman/phpstan-drupal "${{ steps.branch_alias.outputs.VERSION_ALIAS }} as 1.2.99" phpstan/extension-installer --with-all-dependencies | |
cp $GITHUB_WORKSPACE/tests/fixtures/config/drupal-phpstan.neon phpstan.neon | |
- name: "Test core/install.php" | |
run: | | |
cd ~/drupal | |
./vendor/bin/phpstan analyze web/core/install.php --debug | |
- name: "Test BrowserTestBase is autoloaded" | |
run: | | |
cd ~/drupal | |
./vendor/bin/phpstan analyze web/core/modules/dynamic_page_cache | grep -q "Class Drupal\Tests\BrowserTestBase not found and could not be autoloaded." && false || true | |
- name: "Verify test fixtures are ignored." | |
run: | | |
cd ~/drupal | |
./vendor/bin/phpstan analyze web/core/modules/migrate_drupal --no-progress | grep -q "tests/fixtures" && false || true | |
- name: 'Check "Cannot redeclare token_theme() due to blazy_test.module"' | |
if: ${{ matrix.drupal != '11.x-dev' }} | |
run: | | |
cd ~/drupal | |
COMPOSER_MEMORY_LIMIT=-1 composer require drupal/token drupal/blazy | |
./vendor/bin/phpstan analyze web/modules/contrib/blazy --no-progress || if (($? == 255)); then false; else true; fi | |
COMPOSER_MEMORY_LIMIT=-1 composer remove drupal/token drupal/blazy | |
- name: 'Check "Cannot redeclare video_embed_media_media_bundle_insert()"' | |
if: ${{ matrix.drupal != '11.x-dev' }} | |
run: | | |
cd ~/drupal | |
COMPOSER_MEMORY_LIMIT=-1 composer require drupal/video_embed_field drupal/slick | |
./vendor/bin/phpstan analyze web/modules/contrib --no-progress || if (($? == 255)); then false; else true; fi | |
COMPOSER_MEMORY_LIMIT=-1 composer remove drupal/video_embed_field drupal/slick | |
build_integration_no_phpunit: | |
needs: | |
- lint | |
- tests | |
continue-on-error: ${{ matrix.experimental }} | |
runs-on: "ubuntu-latest" | |
name: "Build Integration (No PHPUnit) | PHP ${{ matrix.php-version }} | Drupal ${{ matrix.drupal }}" | |
strategy: | |
matrix: | |
experimental: [false] | |
php-version: | |
- "8.1" | |
- "8.2" | |
drupal: | |
- "^10" | |
include: | |
- php-version: "8.1" | |
drupal: "^9.0" | |
experimental: false | |
- php-version: "8.3" | |
drupal: "11.x-dev" | |
experimental: true | |
steps: | |
- name: "Checkout" | |
uses: "actions/checkout@v4" | |
- name: "Install PHP" | |
uses: "shivammathur/setup-php@v2" | |
with: | |
coverage: "none" | |
php-version: "${{ matrix.php-version }}" | |
tools: composer:v2 | |
extensions: dom, curl, libxml, mbstring, zip, pdo, mysql, pdo_mysql, bcmath, gd, exif, iconv | |
- name: Setup Drupal | |
uses: bluehorndigital/setup-drupal@v1.1.0 | |
with: | |
version: ${{ matrix.drupal }} | |
path: ~/drupal | |
- name: "Remove PHPUnit" | |
run: | | |
cd ~/drupal | |
composer --dev remove phpspec/prophecy-phpunit drupal/core-dev | |
- name: "require phpstan-drupal" | |
run: | | |
cd ~/drupal | |
COMPOSER_MEMORY_LIMIT=-1 composer require mglaman/phpstan-drupal *@dev | |
cp $GITHUB_WORKSPACE/tests/fixtures/config/drupal-no-dev-phpstan.neon phpstan.neon | |
- name: "Test core/install.php" | |
run: | | |
cd ~/drupal | |
./vendor/bin/phpstan analyze web/core/install.php --debug | |
- name: "Test no crash" | |
run: | | |
cd ~/drupal | |
./vendor/bin/phpstan analyze web/core/modules/dynamic_page_cache --debug | |
core_baseline: | |
needs: | |
- lint | |
- tests | |
continue-on-error: true | |
runs-on: "ubuntu-latest" | |
name: "Drupal core HEAD baseline check" | |
steps: | |
- name: "Checkout" | |
uses: "actions/checkout@v4" | |
- name: "set the version alias for self" | |
run: | | |
if [ "${{ github.event_name }}" == 'pull_request' ]; then | |
echo "VERSION_ALIAS=dev-"${{ github.sha }}"" >> $GITHUB_OUTPUT | |
else | |
echo "VERSION_ALIAS=dev-main" >> $GITHUB_OUTPUT | |
fi | |
id: branch_alias | |
- name: determine phpstan cache directory | |
run: echo PHPSTAN_TMP_DIR=$(php -r "print sys_get_temp_dir() . '/phpstan';") >> $GITHUB_OUTPUT | |
id: phpstan_tmp_dir | |
- name: cache phpstan | |
uses: actions/cache@v4 | |
with: | |
path: ${{ steps.phpstan_tmp_dir.outputs.PHPSTAN_TMP_DIR }} | |
key: ${{ runner.os }}-phpstan-core-baseline | |
restore-keys: ${{ runner.os }}-phpstan-core-baseline | |
- name: "Install PHP" | |
uses: "shivammathur/setup-php@v2" | |
with: | |
coverage: "none" | |
php-version: "8.3" | |
tools: composer:v2 | |
extensions: dom, curl, libxml, mbstring, zip, pdo, mysql, pdo_mysql, gd, apcu | |
- name: "Checkout Drupal core" | |
run: | | |
cd ${{ runner.temp }} | |
git clone https://git.drupalcode.org/project/drupal.git | |
cd drupal | |
composer config repositories.0 composer https://packages.drupal.org/8 | |
composer config repositories.1 path $GITHUB_WORKSPACE | |
- name: "Install Drupal core dependencies" | |
uses: "ramsey/composer-install@v3" | |
with: | |
working-directory: "${{ runner.temp }}/drupal" | |
- name: "require phpstan-drupal" | |
run: | | |
cd ${{ runner.temp }}/drupal | |
composer require --dev mglaman/phpstan-drupal "${{ steps.branch_alias.outputs.VERSION_ALIAS }} as 1.1.99" --with-all-dependencies | |
- name: "Check baseline" | |
run: | | |
cd ${{ runner.temp }}/drupal | |
./vendor/bin/phpstan analyze --configuration=core/phpstan.neon.dist |