@@ -60,14 +60,40 @@ jobs:
6060 extensions : mbstring, pdo_mysql, zip, exif, intl, gd, bcmath, curl, dom, xdebug
6161 coverage : xdebug
6262
63- - name : Run PHPUnit
64- run : vendor/bin/phpunit --coverage-php=coverage/coverage.cov
63+ - name : Wait for MySQL
64+ run : |
65+ for i in {30..0}; do
66+ if mysqladmin ping -h 127.0.0.1 --silent; then
67+ echo "MySQL is ready"
68+ break
69+ fi
70+ echo "Waiting for MySQL ($i)..."
71+ sleep 1
72+ done
73+
74+ - name : Cache Composer dependencies
75+ uses : actions/cache@v3
76+ with :
77+ path : vendor
78+ key : ${{ runner.os }}-php-${{ matrix.php }}-laravel-${{ matrix.laravel }}-${{ hashFiles('**/composer.lock') }}
79+ restore-keys : |
80+ ${{ runner.os }}-php-${{ matrix.php }}-laravel-${{ matrix.laravel }}-
81+
82+ - name : Adjust Laravel/Testbench version per matrix
83+ run : |
84+ composer remove laravel/framework orchestra/testbench --no-update || true
85+ composer require laravel/framework:^${{ matrix.laravel }} --no-update
86+ composer update --no-interaction --prefer-dist --no-progress
87+
88+ - name : Run Tests
89+ run : vendor/bin/phpunit --coverage-clover=coverage/clover.xml --path-coverage
6590
6691 - name : Upload coverage artifact
6792 uses : actions/upload-artifact@v4
6893 with :
6994 name : coverage-mysql-${{ matrix.laravel }}-${{ matrix.php }}-${{ matrix.mysql }}
70- path : coverage/coverage.cov
95+ path : coverage/clover.xml
96+
7197
7298 test-pgsql :
7399 name : Laravel ${{ matrix.laravel }} / PHP ${{ matrix.php }} / PostgreSQL 15
77103 matrix :
78104 laravel : [ 10, 11, 12 ]
79105 php : [ 8.2, 8.3, 8.4 ]
80-
81106 exclude :
82107 - laravel : 10
83108 php : 8.4
@@ -115,23 +140,52 @@ jobs:
115140 extensions : mbstring, pdo_pgsql, zip, exif, intl, gd, bcmath, curl, dom, xdebug
116141 coverage : xdebug
117142
118- - name : Run PHPUnit
119- run : vendor/bin/phpunit --coverage-php=coverage/coverage.cov
143+ - name : Wait for Postgres
144+ run : |
145+ for i in {30..0}; do
146+ if pg_isready -h 127.0.0.1 -U postgres; then
147+ echo "Postgres is ready"
148+ break
149+ fi
150+ echo "Waiting for Postgres ($i)..."
151+ sleep 1
152+ done
153+
154+ - name : Cache Composer dependencies
155+ uses : actions/cache@v3
156+ with :
157+ path : vendor
158+ key : ${{ runner.os }}-php-${{ matrix.php }}-laravel-${{ matrix.laravel }}-${{ hashFiles('**/composer.lock') }}
159+ restore-keys : |
160+ ${{ runner.os }}-php-${{ matrix.php }}-laravel-${{ matrix.laravel }}-
161+
162+ - name : Adjust Laravel/Testbench version per matrix
163+ run : |
164+ composer remove laravel/framework orchestra/testbench --no-update || true
165+ composer require laravel/framework:^${{ matrix.laravel }} --no-update
166+ composer update --no-interaction --prefer-dist --no-progress
167+
168+ - name : Run Tests
169+ run : vendor/bin/phpunit --coverage-clover=coverage/clover.xml --path-coverage
120170
121171 - name : Upload coverage artifact
122172 uses : actions/upload-artifact@v4
123173 with :
124174 name : coverage-pgsql-${{ matrix.laravel }}-${{ matrix.php }}
125- path : coverage/coverage.cov
175+ path : coverage/clover.xml
176+
126177
127178 test-sqlsrv :
128179 name : Laravel ${{ matrix.laravel }} / PHP ${{ matrix.php }} / MSSQL
129180 runs-on : ubuntu-latest
130181 timeout-minutes : 60
131182 strategy :
132183 matrix :
133- laravel : [ 12 ]
134- php : [ 8.4 ]
184+ laravel : [ 10, 11, 12 ]
185+ php : [ 8.2, 8.3, 8.4 ]
186+ exclude :
187+ - laravel : 10
188+ - laravel : 11
135189
136190 services :
137191 mssql :
@@ -159,13 +213,12 @@ jobs:
159213 steps :
160214 - uses : actions/checkout@v4
161215
162- - name : Install ODBC Drivers
216+ - name : Install Microsoft ODBC Driver
163217 run : |
164218 curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
165219 curl https://packages.microsoft.com/config/ubuntu/20.04/prod.list | sudo tee /etc/apt/sources.list.d/mssql-release.list
166220 sudo apt-get update
167- sudo ACCEPT_EULA=Y apt-get install -y msodbcsql17 mssql-tools
168- sudo apt-get install -y unixodbc-dev
221+ sudo ACCEPT_EULA=Y apt-get install -y msodbcsql17 mssql-tools unixodbc-dev
169222
170223 - name : Set up PHP with SQLSRV
171224 uses : shivammathur/setup-php@v2
@@ -174,33 +227,67 @@ jobs:
174227 extensions : mbstring, pdo_sqlsrv, sqlsrv, zip, exif, intl, gd, bcmath, curl, dom, xdebug
175228 coverage : xdebug
176229
177- - name : Run PHPUnit
178- run : vendor/bin/phpunit --coverage-php=coverage/coverage.cov
230+ - name : Wait for MSSQL
231+ run : sleep 30
232+
233+ - name : Initialize Database
234+ run : |
235+ /opt/mssql-tools/bin/sqlcmd -S 127.0.0.1 -U SA -P 'Passw0rd1234!' -Q "
236+ CREATE DATABASE testing;
237+ CREATE LOGIN testuser WITH PASSWORD = 'TestPassw0rd!';
238+ CREATE USER testuser FOR LOGIN testuser;
239+ ALTER ROLE db_owner ADD MEMBER testuser;"
240+
241+ - name : Cache Composer dependencies
242+ uses : actions/cache@v3
243+ with :
244+ path : vendor
245+ key : ${{ runner.os }}-php-${{ matrix.php }}-laravel-${{ matrix.laravel }}-${{ hashFiles('**/composer.lock') }}
246+ restore-keys : |
247+ ${{ runner.os }}-php-${{ matrix.php }}-laravel-${{ matrix.laravel }}-
248+
249+ - name : Adjust Laravel/Testbench version per matrix
250+ run : |
251+ composer remove laravel/framework orchestra/testbench --no-update || true
252+ composer require laravel/framework:^${{ matrix.laravel }} --no-update
253+ composer update --no-interaction --prefer-dist --no-progress
254+
255+ - name : Run Tests
256+ run : vendor/bin/phpunit --coverage-clover=coverage/clover.xml --path-coverage
179257
180258 - name : Upload coverage artifact
181259 uses : actions/upload-artifact@v4
182260 with :
183261 name : coverage-sqlsrv-${{ matrix.laravel }}-${{ matrix.php }}
184- path : coverage/coverage.cov
262+ path : coverage/clover.xml
263+
185264
186265 merge-coverage :
187- name : Merge Coverage Reports
266+ name : Merge Coverage
188267 runs-on : ubuntu-latest
189268 needs : [ test-mysql, test-pgsql, test-sqlsrv ]
269+
190270 steps :
191- - uses : actions/download-artifact@v4
271+ - uses : actions/checkout@v4
272+
273+ - name : Download all coverage artifacts
274+ uses : actions/download-artifact@v4
192275 with :
193276 path : all-coverage
194277
195- - name : Install phpcov
196- run : composer global require phpunit/phpcov
278+ - name : Install PHP + phpcov
279+ run : |
280+ sudo apt-get update
281+ sudo apt-get install -y php-cli unzip curl git
282+ composer global require phpunit/phpcov
197283
198- - name : Merge coverage
284+ - name : Merge coverage files
199285 run : |
200286 mkdir -p coverage
201- phpcov merge --clover coverage/clover.xml all-coverage/
287+ find all-coverage -name '*.xml' > coverage-files.txt
288+ phpcov merge --clover coverage/clover.xml $(cat coverage-files.txt)
202289
203- - name : Upload merged coverage to qltysh
290+ - name : Upload merged coverage to Qlty
204291 uses : qltysh/qlty-action/coverage@v1
205292 with :
206293 token : ${{ secrets.QLTY_COVERAGE_TOKEN }}
0 commit comments