PHPUnit + Symfony rubrika: Programování: PHP

3 Misfit
položil/-a 6.10. 0:05
 
upravil/-a 6.10. 0:35

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:

  1. mám to v .env.test

    KERNEL_CLASS='App\Kernel'
    APP_SECRET='$ecretf0rt3st'
    SYMFONY_DEPRECATIONS_HELPER=999999
    SYMFONY_PHPUNIT_DIR=vendor/phpunit/
  2. 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.

Komentáře

  • havejir : Příkaz env SYMFONY_PHPUNIT_DIR=vendor/phpunit/ php bin/phpunit spouštíš uvtř kontejneru, nebo na host mašině? 6.10. 1:38
  • Misfit : Samozřejmě že v kontejneru. Na localu mám jenom Docker a IDE, vše si spouštím v kontejnerech. 6.10. 11:36
  • Misfit : Teoreticky bych mohl nastavit tuto environmentální proměnnou přímo kontejneru, stejně tam budu nastavovat secrety jako DATABASE_URL a tak.. I tak by mě ale zajímalo, proč to nejde.. 6.10. 11:54
odkaz
3 Misfit
odpověděl/-a 6.10. 11:35
 
upravil/-a 6.10. 12:15

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:

Rychlé přihlášení přes sociální sítě:

Nebo se přihlaste jménem a heslem:

Zadejte prosím svou e-mailovou adresu.
Zadejte své heslo.