Я пытаюсь создать процесс сборки с помощью Phing. Во время этого процесса я хочу запустить скрипт установки composer и phpunit, который устанавливается composer
Внутри моего buildfile у меня есть 2 цели.
<target name="composer">
<composer command="install" composer="./composer.phar" />
<autoloader autoloaderpath="./vendor/autoload.php" />
</target>
<target name="phpunit" depends="composer">
<if>
<os family="windows" />
<then>
<property name="phpunit.executable" value="phpunit.bat" />
</then>
<else>
<property name="phpunit.executable" value="phpunit" />
</else>
</if>
<exec executable="vendor/bin/${phpunit.executable}"dir="${project.basedir}" level="debug"returnProperty="phpunit.return">
<arg line="--configuration" />
<arg file="${project.basedir}/phpunit.xml" />
</exec>
</target>
Composer.phar и phpunit.xml находятся в моей базе проекта.
Теперь, если я запускаю цель phpunit, я вижу, что зависимости проверяются и устанавливаются при необходимости.
Но PHPUnit только возвращает
PHPUnit 5.7.21 от Себастьяна Бергмана и его авторов.
и это все. На самом деле тесты не выполняются. Кажется, что файл конфигурации никогда не читается.
Если я удаляю зависимости из цели phpunit и запускаю их, тесты фактически завершаются, и создаются журналы и отчет о покрытии.
Я использую exec вместо задачи phpunit, потому что покрытие кода phings, похоже, имеет проблемы с обратными слешами в пространствах имен.
Это на самом деле проект Symfony и вызов
bin/console cache:warmup -e test
решает проблему
Хотя вызов PHPUnit из командной строки после установки composer действительно запускает тесты.
Есть ли где-нибудь в phing или PHPUnit, где я могу изменить это время ожидания?
Максимальное время выполнения для php установлено в 0.
Как насчет настройки build.xml
создать задачу для разогрева кеша:
<target name="cache-warmup">
<exec command="bin/console cache:warmup -e test" />
</target>
а затем иметь phpunit
Задача также зависит от этой задачи:
<target name="phpunit" depends="composer cache-warmup">
...
</target>
Других решений пока нет …