PHPUnit + Symfony rubrika: Programování: PHP
Zdravím,
stavím si CI s Jenkins a chtěl bych si cachovat PHP závislosti, aby se nemuseli pokaždé znovu instalovat. S vendor se mi to v pořádku daří, jen už se asi hodinu snažím rozjet cache pro PHPUnit v Symfony. Symfony totiž používá PHPUnit bridge, který instaluje PHPUnit do bin/.phpunit. Používám Docker. Mám nasdílenou složku z hosta přes volume do kontejneru. Poté mám symlink z cachovací složky do vendoru(funguje perfektně) a poté sem měl ještě do toho bin/.phpunit. Bohužel takhle to nefunguje, protože jakmile PHPUnit vidí ten symlink, tak si myslí, že už je nainstalovaný a crashne to. Tak sem se v tom začal hrabat víc, jelikož mě stejně sere, že se to instaluje do bin/.phpunit a chtěl bych to ve vendoru. Tak sem našel takovou krásnou věc a to SYMFONY_PHPUNIT_DIR. A teď kámen úrazu. Z nějakého záhadného důvodu se mi tato environmentální proměnná nechce na ten PHPUnit aplikovat pokud:
-
mám to v .env.test
KERNEL_CLASS='App\Kernel' APP_SECRET='$ecretf0rt3st' SYMFONY_DEPRECATIONS_HELPER=999999 SYMFONY_PHPUNIT_DIR=vendor/phpunit/
- pokud to mám v phpunit.xml.dist
<php> <ini name="error_reporting" value="-1" /> <server name="APP_ENV" value="test" force="true" /> <server name="SHELL_VERBOSITY" value="-1" /> <server name="SYMFONY_PHPUNIT_REMOVE" value="" /> <server name="SYMFONY_PHPUNIT_VERSION" value="8.2" /> <env name="SYMFONY_PHPUNIT_DIR" value="vendor/phpunit/" /> </php>
Funguje to pouze, pokud z příkazové řádky napíšu:
env SYMFONY_PHPUNIT_DIR=vendor/phpunit/ php bin/phpunit
Už mi z toho vážně jebe, dokonce sem si projížděl ten phpunit script, abych viděl jak to funguje a dle toho kódu by to i jít mělo. Nejspíše něco celou dobu přehlížím, jak sem tiltnutej, jen to fakt nevidím. Je mi trapný tady psát kvůli takové blbosti, ale už sem zoufalej. Nestetkal se zde někdo s podobným problémem, případně nějaká rada? Díky předem za odpovědi.
Nastavil sem tu environmentální proměnnou přímo kontejneru v Jenkinsfile, tam to funguje.
environment { APP_ENV = 'test' APP_SECRET = '-' SYMFONY_PHPUNIT_DIR = 'vendor/phpunit/' SYMFONY_DEPRECATIONS_HELPER = '999999' KERNEL_CLASS = 'App\\Kernel' }
I tak by mě ale zajímalo, proč PHPUnit ignoruje environmentální proměnné z těch konfigurací.
Pro plný přístup na Devel.cz se prosím přihlaste:
Nebo se přihlaste jménem a heslem:
Komentáře