Skip to content

[WIP][POC] Run Windows tests on GitHub Action #58699

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 32 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions .appveyor.yml → .appveyor.yml.disabled
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ install:
- echo date.timezone="America/Los_Angeles" >> php.ini-min
- echo extension_dir=ext >> php.ini-min
- echo extension=php_xsl.dll >> php.ini-min
- echo extension=php_mbstring.dll >> php.ini-min
- copy /Y php.ini-min php.ini-max
- echo zend_extension=php_opcache.dll >> php.ini-max
- echo opcache.enable_cli=1 >> php.ini-max
Expand All @@ -39,7 +40,6 @@ install:
- echo extension=php_redis.dll >> php.ini-max
- echo apc.enable_cli=1 >> php.ini-max
- echo extension=php_intl.dll >> php.ini-max
- echo extension=php_mbstring.dll >> php.ini-max
- echo extension=php_fileinfo.dll >> php.ini-max
- echo extension=php_pdo_sqlite.dll >> php.ini-max
- echo extension=php_curl.dll >> php.ini-max
Expand All @@ -63,9 +63,9 @@ test_script:
- copy /Y c:\php\php.ini-min c:\php\php.ini
- IF %APPVEYOR_REPO_BRANCH:~-2% neq .x (rm -Rf src\Symfony\Bridge\PhpUnit)
- mv src\Symfony\Component\HttpClient\phpunit.xml.dist src\Symfony\Component\HttpClient\phpunit.xml
- php phpunit src\Symfony --exclude-group tty,benchmark,intl-data,network,transient-on-windows || SET X=!errorlevel!
- php phpunit src\Symfony --exclude-group tty --exclude-group benchmark --exclude-group intl-data --exclude-group network --exclude-group transient-on-windows || SET X=!errorlevel!
- php phpunit src\Symfony\Component\HttpClient || SET X=!errorlevel!
- copy /Y c:\php\php.ini-max c:\php\php.ini
- php phpunit src\Symfony --exclude-group tty,benchmark,intl-data,network,transient-on-windows || SET X=!errorlevel!
- php phpunit src\Symfony --exclude-group tty --exclude-group benchmark --exclude-group intl-data --exclude-group network --exclude-group transient-on-windows || SET X=!errorlevel!
- php phpunit src\Symfony\Component\HttpClient || SET X=!errorlevel!
- exit %X%
8 changes: 4 additions & 4 deletions .github/workflows/integration-tests.yml
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
name: Integration

on:
push:
pull_request:
#on:
# push:
# pull_request:

defaults:
run:
Expand Down Expand Up @@ -231,7 +231,7 @@ jobs:
git diff --exit-code src/ || (echo '::error::Run "php .github/sync-translations.php" to fix XLIFF files.' && exit 1)

- name: Run tests
run: ./phpunit --group integration -v
run: ./phpunit --group integration
env:
INTEGRATION_FTP_URL: 'ftp://test:test@localhost'
REDIS_HOST: 'localhost:16379'
Expand Down
8 changes: 4 additions & 4 deletions .github/workflows/package-tests.yml
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
name: Verify Packages

on:
pull_request:
paths:
- src/**
#on:
# pull_request:
# paths:
# - src/**

permissions:
contents: read
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/psalm.yml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
name: Psalm

on:
pull_request: ~
#on:
# pull_request: ~

defaults:
run:
Expand Down
145 changes: 134 additions & 11 deletions .github/workflows/unit-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,6 @@ on:
push:
pull_request:

defaults:
run:
shell: bash

concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
Expand All @@ -17,8 +13,14 @@ permissions:

jobs:

tests:
name: Unit Tests
linux:
name: Linux

if: false

defaults:
run:
shell: bash

env:
extensions: amqp,apcu,igbinary,intl,mbstring,memcached,redis,relay
Expand Down Expand Up @@ -66,7 +68,7 @@ jobs:
([ -d "$COMPOSER_HOME" ] || mkdir "$COMPOSER_HOME") && cp .github/composer-config.json "$COMPOSER_HOME/config.json"

echo COLUMNS=120 >> $GITHUB_ENV
echo PHPUNIT="$(pwd)/phpunit --exclude-group tty,benchmark,intl-data,integration" >> $GITHUB_ENV
echo PHPUNIT="$(pwd)/phpunit --exclude-group tty --exclude-group benchmark --exclude-group intl-data --exclude-group integration" >> $GITHUB_ENV
echo COMPOSER_UP='composer update --no-progress --ansi'$([[ "${{ matrix.mode }}" != low-deps ]] && echo ' --ignore-platform-req=php+') >> $GITHUB_ENV

SYMFONY_VERSIONS=$(git ls-remote -q --heads | cut -f2 | grep -o '/[1-9][0-9]*\.[0-9].*' | sort -V)
Expand Down Expand Up @@ -130,7 +132,7 @@ jobs:
[[ "${{ matrix.mode }}" = *-deps ]] && mv composer.json.phpunit composer.json || true

if [[ "${{ matrix.mode }}" = low-deps ]]; then
echo SYMFONY_PHPUNIT_REQUIRE="nikic/php-parser:^4.18" >> $GITHUB_ENV
echo SYMFONY_PHPUNIT_REQUIRE="nikic/php-parser:'^4.18|^5.0'" >> $GITHUB_ENV
fi

- name: Install dependencies
Expand Down Expand Up @@ -238,12 +240,133 @@ jobs:

mkdir -p /opt/php/lib
echo memory_limit=-1 > /opt/php/lib/php.ini
./phpunit install
./build/php/bin/php ./phpunit --colors=always src/Symfony/Component/Process
env:
SYMFONY_PHPUNIT_VERSION: '9.6'

- name: Run PhpUnitBridge tests with PHPUnit 11
- name: Run PhpUnitBridge tests with PHPUnit 9.6
if: '! matrix.mode'
run: |
./phpunit src/Symfony/Bridge/PhpUnit
env:
SYMFONY_PHPUNIT_VERSION: '11.3'
SYMFONY_DEPRECATIONS_HELPER: 'disabled'
SYMFONY_PHPUNIT_VERSION: '9.6'

windows:
name: Windows

defaults:
run:
shell: pwsh

runs-on: windows-2022

env:
COMPOSER_NO_INTERACTION: '1'
SYMFONY_DEPRECATIONS_HELPER: 'strict'
ANSICON: '121x90 (121x90)'
SYMFONY_PHPUNIT_DISABLE_RESULT_CACHE: '1'

steps:
- name: Setup Git
run: |
git config --global core.autocrlf false
git config --global user.email ""
git config --global user.name "Symfony"

- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 2

- name: Setup PHP
run: |
$env:Path = 'c:\php;' + $env:Path
mkdir c:\php && cd c:\php
iwr -outf php-8.2.0-Win32-vs16-x86.zip https://github.com/symfony/binary-utils/releases/download/v0.1/php-8.2.0-Win32-vs16-x86.zip
7z x php-8.2.0-Win32-vs16-x86.zip -y >nul
cd ext
iwr -outf php_apcu-5.1.22-8.2-ts-vs16-x86.zip https://github.com/symfony/binary-utils/releases/download/v0.1/php_apcu-5.1.22-8.2-ts-vs16-x86.zip
7z x php_apcu-5.1.22-8.2-ts-vs16-x86.zip -y >nul
iwr -outf php_redis-6.0.0-dev-8.2-ts-vs16-x86.zip https://github.com/symfony/binary-utils/releases/download/v0.1/php_redis-6.0.0-dev-8.2-ts-vs16-x86.zip
7z x php_redis-6.0.0-dev-8.2-ts-vs16-x86.zip -y >nul
cd ..
Copy php.ini-development php.ini-min
"memory_limit=-1" >> php.ini-min
"serialize_precision=-1" >> php.ini-min
"max_execution_time=1200" >> php.ini-min
"post_max_size=2047M" >> php.ini-min
"upload_max_filesize=2047M" >> php.ini-min
"date.timezone=`"America/Los_Angeles`"" >> php.ini-min
"extension_dir=ext" >> php.ini-min
"extension=php_xsl.dll" >> php.ini-min
"extension=php_mbstring.dll" >> php.ini-min
Copy php.ini-min php.ini-max
"zend_extension=php_opcache.dll" >> php.ini-max
"opcache.enable_cli=1" >> php.ini-max
"extension=php_openssl.dll" >> php.ini-max
"extension=php_apcu.dll" >> php.ini-max
"extension=php_igbinary.dll" >> php.ini-max
"extension=php_redis.dll" >> php.ini-max
"apc.enable_cli=1" >> php.ini-max
"extension=php_intl.dll" >> php.ini-max
"extension=php_fileinfo.dll" >> php.ini-max
"extension=php_pdo_sqlite.dll" >> php.ini-max
"extension=php_curl.dll" >> php.ini-max
"extension=php_sodium.dll" >> php.ini-max
Copy php.ini-max php.ini
cd D:\a\symfony\symfony
iwr -outf composer.phar https://getcomposer.org/download/latest-stable/composer.phar
mkdir %APPDATA%\Composer && Copy .github\composer-config.json %APPDATA%\Composer\config.json

- name: Install dependencies
id: setup
shell: cmd
run: |
SET PATH=c:\php;%PATH%
mkdir %APPDATA%\Composer && copy /Y .github\composer-config.json %APPDATA%\Composer\config.json
FOR /F "tokens=* USEBACKQ" %%F IN (`bash -c "grep ' VERSION = ' src/Symfony/Component/HttpKernel/Kernel.php | grep -o '[0-9][0-9]*\.[0-9]'"`) DO (SET SYMFONY_VERSION=%%F)
php .github/build-packages.php HEAD^ %SYMFONY_VERSION% src\Symfony\Bridge\PhpUnit
SET COMPOSER_ROOT_VERSION=%SYMFONY_VERSION%.x-dev

echo ::group::composer update
php composer.phar update --no-progress --ansi
echo ::endgroup::

echo ::group::phpunit install
php phpunit install
echo ::endgroup::

echo ::group::memurai-developer install
choco install --no-progress memurai-developer
echo ::endgroup::

- name: Run tests (minimal extensions)
if: always() && steps.setup.outcome == 'success'
run: |
$env:Path = 'c:\php;' + $env:Path
$env:SYMFONY_PHPUNIT_SKIPPED_TESTS = 'phpunit.skipped'

Copy c:\php\php.ini-min c:\php\php.ini
mv src\Symfony\Component\HttpClient\phpunit.xml.dist src\Symfony\Component\HttpClient\phpunit.xml
php phpunit src\Symfony --exclude-group tty --exclude-group benchmark --exclude-group intl-data --exclude-group network --exclude-group transient-on-windows
php phpunit src\Symfony\Component\HttpClient

if ($Error) {
throw "Test failures"
}

- name: Run tests
if: always() && steps.setup.outcome == 'success'
run: |
$env:Path = 'c:\php;' + $env:Path
$env:SYMFONY_PHPUNIT_SKIPPED_TESTS = 'phpunit.skipped'
$x = 0

Copy c:\php\php.ini-max c:\php\php.ini
php phpunit src\Symfony --exclude-group tty --exclude-group benchmark --exclude-group intl-data --exclude-group network --exclude-group transient-on-windows
php phpunit src\Symfony\Component\HttpClient

if ($Error) {
throw "Test failures"
}
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ composer.lock
phpunit.xml
.php-cs-fixer.cache
.php-cs-fixer.php
.phpunit.cache
.phpunit.result.cache
composer.phar
package.tar
Expand Down
3 changes: 2 additions & 1 deletion phpunit
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,8 @@ if (!file_exists(__DIR__.'/vendor/symfony/phpunit-bridge/bin/simple-phpunit')) {
exit(1);
}
if (!getenv('SYMFONY_PHPUNIT_VERSION')) {
putenv('SYMFONY_PHPUNIT_VERSION=9.6');
putenv('SYMFONY_PHPUNIT_VERSION=11.3');
putenv('SYMFONY_DEPRECATIONS_HELPER=disabled');
}
if (!getenv('SYMFONY_PATCH_TYPE_DECLARATIONS')) {
putenv('SYMFONY_PATCH_TYPE_DECLARATIONS=deprecations=1');
Expand Down
35 changes: 9 additions & 26 deletions phpunit.xml.dist
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>

<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/9.3/phpunit.xsd"
xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/11.3/phpunit.xsd"
backupGlobals="false"
colors="true"
bootstrap="vendor/autoload.php"
Expand Down Expand Up @@ -46,15 +46,15 @@
</exclude>
</groups>

<coverage>
<source ignoreSuppressionOfDeprecations="true">
<include>
<directory>./src/Symfony/</directory>
</include>
<exclude>
<directory>./src/Symfony/Bridge/*/Tests</directory>
<directory>./src/Symfony/Component/*/Tests</directory>
<directory>./src/Symfony/Component/*/*/Tests</directory>
<directory>./src/Symfony/Contract/*/Tests</directory>
<directory>./src/Symfony/Contracts/*/Tests</directory>
<directory>./src/Symfony/Bundle/*/Tests</directory>
<directory>./src/Symfony/Bundle/*/Resources</directory>
<directory>./src/Symfony/Component/*/Resources</directory>
Expand All @@ -65,28 +65,11 @@
<directory>./src/Symfony/Component/*/*/vendor</directory>
<directory>./src/Symfony/Contracts/*/vendor</directory>
</exclude>
</coverage>
</source>

<listeners>
<listener class="Symfony\Bridge\PhpUnit\SymfonyTestsListener">
<arguments>
<array>
<element key="time-sensitive">
<array>
<element key="0"><string>Cache\IntegrationTests</string></element>
<element key="1"><string>Symfony\Bridge\Doctrine\Middleware\Debug</string></element>
<element key="2"><string>Symfony\Bridge\Doctrine\Middleware\IdleConnection</string></element>
<element key="3"><string>Symfony\Component\Cache</string></element>
<element key="4"><string>Symfony\Component\Cache\Tests\Fixtures</string></element>
<element key="5"><string>Symfony\Component\Cache\Tests\Traits</string></element>
<element key="6"><string>Symfony\Component\Cache\Traits</string></element>
<element key="7"><string>Symfony\Component\Console</string></element>
<element key="8"><string>Symfony\Component\HttpFoundation</string></element>
<element key="9"><string>Symfony\Component\Uid</string></element>
</array>
</element>
</array>
</arguments>
</listener>
</listeners>
<extensions>
<bootstrap class="Symfony\Bridge\PhpUnit\SymfonyExtension">
<parameter name="clock-mock-namespaces" value="Cache\IntegrationTests,Symfony\Bridge\Doctrine\Middleware\Debug,Symfony\Bridge\Doctrine\Middleware\IdleConnection,Symfony\Component\Cache,Symfony\Component\Cache\Tests\Fixtures,Symfony\Component\Cache\Tests\Traits,Symfony\Component\Cache\Traits,Symfony\Component\Console,Symfony\Component\HttpFoundation,Symfony\Component\Uid" />
</bootstrap>
</extensions>
</phpunit>
2 changes: 1 addition & 1 deletion src/Symfony/Bridge/Doctrine/composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@
"symfony/dependency-injection": "^6.4|^7.0",
"symfony/doctrine-messenger": "^6.4|^7.0",
"symfony/expression-language": "^6.4|^7.0",
"symfony/form": "^6.4.6|^7.0.6",
"symfony/form": "^7.2",
"symfony/http-kernel": "^6.4|^7.0",
"symfony/lock": "^6.4|^7.0",
"symfony/messenger": "^6.4|^7.0",
Expand Down
26 changes: 8 additions & 18 deletions src/Symfony/Bridge/Doctrine/phpunit.xml.dist
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>

<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/9.3/phpunit.xsd"
xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/11.3/phpunit.xsd"
backupGlobals="false"
colors="true"
bootstrap="vendor/autoload.php"
Expand All @@ -18,7 +17,7 @@
</testsuite>
</testsuites>

<coverage>
<source>
<include>
<directory>./</directory>
</include>
Expand All @@ -27,20 +26,11 @@
<directory>./Tests</directory>
<directory>./vendor</directory>
</exclude>
</coverage>
</source>

<listeners>
<listener class="Symfony\Bridge\PhpUnit\SymfonyTestsListener">
<arguments>
<array>
<element key="time-sensitive">
<array>
<element key="0"><string>Symfony\Bridge\Doctrine\Middleware\Debug</string></element>
<element key="1"><string>Symfony\Bridge\Doctrine\Middleware\IdleConnection</string></element>
</array>
</element>
</array>
</arguments>
</listener>
</listeners>
<extensions>
<bootstrap class="Symfony\Bridge\PhpUnit\SymfonyExtension">
<parameter name="clock-mock-namespaces" value="Symfony\Bridge\Doctrine\Middleware\Debug,Symfony\Bridge\Doctrine\Middleware\IdleConnection" />
</bootstrap>
</extensions>
</phpunit>
Loading