@@ -18,67 +18,54 @@ jobs:
1818 matrix :
1919 os : [ubuntu-latest, windows-latest, macos-latest]
2020 php : [8.0 ,8.1 ,8.2, 8.3, 8.4]
21+
2122 steps :
2223 - uses : actions/checkout@v4
2324
24- # PHP installation and setup using built-in tools
25+ # Setup PHP for Linux
2526 - name : Setup PHP (Ubuntu)
2627 if : matrix.os == 'ubuntu-latest'
2728 run : |
2829 sudo add-apt-repository ppa:ondrej/php
2930 sudo apt-get update
30- sudo apt-get install -y php8.2 php8.2 -cli php8.2 -xml php8.2 -curl php8.2 -mbstring
31+ sudo apt-get install -y php${{ matrix.php }} php${{ matrix.php }} -cli php${{ matrix.php }} -xml php${{ matrix.php }} -curl php${{ matrix.php }} -mbstring
3132 php -v
3233 shell : bash
3334
35+ # Setup PHP for macOS
3436 - name : Setup PHP (macOS)
3537 if : matrix.os == 'macos-latest'
3638 run : |
37- brew install php@8.2
38- brew link php@8.2 --force
39+ brew install php@${{ matrix.php }}
40+ brew link php@${{ matrix.php }} --force
3941 php -v
4042 shell : bash
4143
42- - name : Setup PHP (Windows)
44+ # Setup PHP for Windows using WSL
45+ - name : Enable WSL and Install PHP
4346 if : matrix.os == 'windows-latest'
4447 run : |
45- choco install php --version=8.2 --params '"/ExtensionList:mbstring,curl,openssl,xml"'
46- refreshenv
47- # Download CA bundle
48- Invoke-WebRequest -Uri https://curl.se/ca/cacert.pem -OutFile C:\tools\cacert.pem
49- # Configure PHP to use the CA bundle
50- $phpIni = php --ini | Select-String "Loaded Configuration File" | ForEach-Object { $_.Line.Split()[-1] }
51- Add-Content $phpIni "`nopenssl.cafile = C:\tools\cacert.pem"
52- php -v
48+ wsl --install -d Ubuntu
49+ wsl sudo apt update
50+ wsl sudo apt install -y php${{ matrix.php }} php${{ matrix.php }}-cli php${{ matrix.php }}-xml php${{ matrix.php }}-curl php${{ matrix.php }}-mbstring
51+ wsl php -v
5352 shell : pwsh
5453
55- - name : Install Composer (Windows)
54+ # Install Composer inside WSL
55+ - name : Install Composer (Windows via WSL)
5656 if : matrix.os == 'windows-latest'
5757 run : |
58- php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
59- php composer-setup.php
60- php -r "unlink('composer-setup.php');"
61- mkdir -p C:\tools\ composer
62- move composer.phar C:\tools\composer\ composer
63- echo "C:\tools\ composer" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
58+ wsl php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
59+ wsl php composer-setup.php
60+ wsl php -r "unlink('composer-setup.php');"
61+ wsl sudo mv composer.phar /usr/local/bin/ composer
62+ wsl sudo chmod +x /usr/local/bin/ composer
63+ wsl composer -V
6464 shell : pwsh
6565
66- - name : Install Composer (Unix)
67- if : matrix.os != 'windows-latest'
68- run : |
69- php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
70- sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer
71- php -r "unlink('composer-setup.php');"
72- sudo chmod +x /usr/local/bin/composer
73- mkdir -p ~/.composer
74- if [ "$RUNNER_OS" == "Linux" ]; then
75- sudo chown -R $USER:$USER ~/.composer
76- fi
77- shell : bash
78-
7966 - name : Get Composer Cache Directory
8067 id : composer-cache
81- run : echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
68+ run : echo "dir=$(wsl composer config cache-files-dir)" >> $GITHUB_OUTPUT
8269 shell : bash
8370
8471 - name : Cache Composer packages
@@ -89,17 +76,25 @@ jobs:
8976 restore-keys : |
9077 ${{ runner.os }}-composer-
9178
92- - name : Install dependencies (Windows)
79+ # Install dependencies
80+ - name : Install dependencies (Windows via WSL)
9381 if : matrix.os == 'windows-latest'
94- run : composer install --prefer-dist --no-progress --ignore-platform-req=ext-pcntl
95- shell : bash
82+ run : wsl composer install --prefer-dist --no-progress
83+ shell : pwsh
9684
9785 - name : Install dependencies (Unix)
9886 if : matrix.os != 'windows-latest'
9987 run : composer install --prefer-dist --no-progress
10088 shell : bash
10189
102- - name : Run test suite
90+ # Run tests
91+ - name : Run test suite (Windows via WSL)
92+ if : matrix.os == 'windows-latest'
93+ run : wsl vendor/bin/phpunit
94+ shell : pwsh
95+
96+ - name : Run test suite (Unix)
97+ if : matrix.os != 'windows-latest'
10398 run : vendor/bin/phpunit
10499 shell : bash
105100
@@ -126,7 +121,7 @@ jobs:
126121 run : |
127122 sudo add-apt-repository ppa:ondrej/php
128123 sudo apt-get update
129- sudo apt-get install -y php8.2 php8.2-cli php8.2-xml php8.2-mbstring
124+ sudo apt install -y php8.2 php8.2-cli php8.2-xml php8.2-mbstring
130125 shell : bash
131126
132127 - name : Install Composer
@@ -137,44 +132,14 @@ jobs:
137132 sudo chown -R $USER:$USER ~/.composer
138133 shell : bash
139134
140- - name : Get Composer Cache Directory
141- id : composer-cache
142- run : echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
143-
144- - name : Cache Composer packages
145- uses : actions/cache@v3
146- with :
147- path : ${{ steps.composer-cache.outputs.dir }}
148- key : ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
149- restore-keys : |
150- ${{ runner.os }}-composer-
151-
152135 - name : Install Dependencies
153136 run : |
154137 composer install --prefer-dist --no-progress
155138 composer require --dev phpstan/phpstan --with-all-dependencies
156139 shell : bash
157140
158- - name : Create PHPStan config
159- run : |
160- echo '
161- parameters:
162- level: 5
163- paths:
164- - src
165- - tests
166- excludePaths:
167- - vendor/*
168- ' > phpstan.neon
169-
170141 - name : Run PHPStan
171- run : |
172- if [ -f "vendor/bin/phpstan" ]; then
173- vendor/bin/phpstan analyse -c phpstan.neon
174- else
175- echo "PHPStan not found in vendor/bin"
176- exit 1
177- fi
142+ run : vendor/bin/phpstan analyse --level=5 src tests
178143 shell : bash
179144
180145 code-style :
@@ -190,7 +155,7 @@ jobs:
190155 run : |
191156 sudo add-apt-repository ppa:ondrej/php
192157 sudo apt-get update
193- sudo apt-get install -y php8.2 php8.2-cli php8.2-xml php8.2-mbstring
158+ sudo apt install -y php8.2 php8.2-cli php8.2-xml php8.2-mbstring
194159 shell : bash
195160
196161 - name : Install Composer
@@ -201,18 +166,6 @@ jobs:
201166 sudo chown -R $USER:$USER ~/.composer
202167 shell : bash
203168
204- - name : Get Composer Cache Directory
205- id : composer-cache
206- run : echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
207-
208- - name : Cache Composer packages
209- uses : actions/cache@v3
210- with :
211- path : ${{ steps.composer-cache.outputs.dir }}
212- key : ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
213- restore-keys : |
214- ${{ runner.os }}-composer-
215-
216169 - name : Install Dependencies
217170 run : |
218171 composer install --prefer-dist --no-progress
@@ -235,6 +188,8 @@ jobs:
235188 ->in(__DIR__)
236189 );
237190 " > .php-cs-fixer.php
191+ shell : bash
238192
239193 - name : Check coding standards
240- run : vendor/bin/php-cs-fixer fix --dry-run --diff
194+ run : vendor/bin/php-cs-fixer fix --dry-run --diff
195+ shell : bash
0 commit comments