Łukasz C.

Łukasz C. Senior Technical
Architect

Temat: phpunit, php-cgi zamiast php

Hej,

wiecie moze czy jest jakis prosty sposob aby zmusic phpunit'a do uruchamiania binarki php-cgi zamiast php (cli)?

moge to wymusic symlinkami itp ale moze da sie jakos prosciej :)
Wojciech Soczyński

Wojciech Soczyński Programista
eksplorator -
blog.wsoczynski.pl

Temat: phpunit, php-cgi zamiast php

Wszystko jest zdaje się w pliku phpunit.bat


if "%PHPBIN%" == "" set PHPBIN=D:\wamp\bin\php\php5.3.4\\php.exe
if not exist "%PHPBIN%" if "%PHP_PEAR_PHP_BIN%" neq "" goto USE_PEAR_PATH
GOTO RUN
:USE_PEAR_PATH
set PHPBIN=%PHP_PEAR_PHP_BIN%
:RUN
"%PHPBIN%" "D:\wamp\bin\php\php5.3.4\phpunit" %*


Tutaj masz interesujący Cię fragment zdaje się.
Łukasz C.

Łukasz C. Senior Technical
Architect

Temat: phpunit, php-cgi zamiast php

dobra dupa zbita, nic z tego nie bedzie bo w cgi znowu nie ma argv,argc i sie phpunit wysypuje... jak tu nie klnanc na phpca :S
Wojciech Soczyński

Wojciech Soczyński Programista
eksplorator -
blog.wsoczynski.pl

Temat: phpunit, php-cgi zamiast php

Łukasz C.:
dobra dupa zbita, nic z tego nie bedzie bo w cgi znowu nie ma argv,argc i sie phpunit wysypuje... jak tu nie klnanc na phpca :S
Ja myślę, że to nie wina PHP, tylko twojej architektury, która nie przewiduje, że może być uruchamiana w różnych środowiskach :p
Łukasz C.

Łukasz C. Senior Technical
Architect

Temat: phpunit, php-cgi zamiast php

Wojciech Soczyński:
Ja myślę, że to nie wina PHP, tylko twojej architektury, która nie przewiduje, że może być uruchamiana w różnych środowiskach :p

a co to ma do rzeczy? testuje kod biblioteki ktorego srodowiskiem produkcyjnym jest phpcgi anie cli :)

konkretnie przy setcookie moge zrobic banalna asercje z headers_list ale to nie dziala w cli, a mock w tym przypadku to jest proteza a nie test :P


<?php
chdir('test');
$_SERVER['argv'] = array(__FILE__, '--verbose', '--process-isolation', '--log-junit', 'results/unit-tests.xml', 'UnitTests');
$_SERVER['argc'] = '';
require '/usr/bin/phpunit';

php-cgi dupa.php

i po problemie :DŁukasz C. edytował(a) ten post dnia 20.07.11 o godzinie 12:41
Wojciech Soczyński

Wojciech Soczyński Programista
eksplorator -
blog.wsoczynski.pl

Temat: phpunit, php-cgi zamiast php

Łukasz C.:
Wojciech Soczyński:
Ja myślę, że to nie wina PHP, tylko twojej architektury, która nie przewiduje, że może być uruchamiana w różnych środowiskach :p

a co to ma do rzeczy? testuje kod biblioteki ktorego srodowiskiem produkcyjnym jest phpcgi anie cli :)

konkretnie przy setcookie moge zrobic banalna asercje z headers_list ale to nie dziala w cli, a mock w tym przypadku to jest proteza a nie test :P


<?php[/quote]> chdir('test');[quote]$_SERVER['argv'] = array(__FILE__, '--verbose', '--process-isolation', '--log-junit', 'results/unit-tests.xml', 'UnitTests');
$_SERVER['argc'] = '';
require '/usr/bin/phpunit';

php-cgi dupa.php

i po problemie :D

Wystarczyło by po prostu, żeby biblioteka dostawała jakieś dane z zewnątrz, a nie ciągła je z zmiennych superglobalnych.
Łukasz C.

Łukasz C. Senior Technical
Architect

Temat: phpunit, php-cgi zamiast php

Wojciech Soczyński:
Wystarczyło by po prostu, żeby biblioteka dostawała jakieś dane z zewnątrz, a nie ciągła je z zmiennych superglobalnych.
ale w php-cgi domyslnie nie ma $_SERVER['argv'] i $_SERVER['argc'] ktore sa automatycznie wstawiane w php-cli, a musze je wrzucic z phinga, wazne ze dziala ;)
Wojciech Soczyński

Wojciech Soczyński Programista
eksplorator -
blog.wsoczynski.pl

Temat: phpunit, php-cgi zamiast php

Łukasz C.:
Wojciech Soczyński:
Wystarczyło by po prostu, żeby biblioteka dostawała jakieś dane z zewnątrz, a nie ciągła je z zmiennych superglobalnych.
ale w php-cgi domyslnie nie ma $_SERVER['argv'] i $_SERVER['argc'] ktore sa automatycznie wstawiane w php-cli, a musze je wrzucic z phinga, wazne ze dziala ;)
To trzeba sobie zrobić interfejs i dwa adaptery:



interface Request {

function argc();
function argv();
}


class Adapter_Cli implements Request {

function argc(){
return $_SERVER['argc'];
}
//... podobnie
}

class Adapter_Cgi implements Request {

function argc(){
return $_GET['argc'];
}
//... podobnie
}



A potem wystarczy tylko



switch(php_sapi_name()){
case 'cgi-fcgi':
$req = new Adapter_Cgi;
break;
case 'cli':
$req = new Adapter_Cli:
break;

}

Wojciech Soczyński edytował(a) ten post dnia 20.07.11 o godzinie 13:32
Łukasz C.

Łukasz C. Senior Technical
Architect

Temat: phpunit, php-cgi zamiast php

ale poco, skoro moge to zalatwic dwoma linijkami w jednym miejscu, w kodzie ktory testuje a nie idzie na produkcje ;)
Wojciech Soczyński

Wojciech Soczyński Programista
eksplorator -
blog.wsoczynski.pl

Temat: phpunit, php-cgi zamiast php

Łukasz C.:
ale poco, skoro moge to zalatwic dwoma linijkami w jednym miejscu, w kodzie ktory testuje a nie idzie na produkcje ;)

4 fun :P albo "for the lolz" ;P. EOT ;)



Wyślij zaproszenie do