Как правильно требовать файл phar

phpunit перестал поддерживать установку PEAR. Это вызвало необходимость использования phar-установки phpunit для продвижения вперед. У нас есть скрипт-обертка, который перебирает множество каталогов и вызывает исполняемый файл phpunit для этих каталогов. Затем сценарий упаковки объединяет все сгенерированные отчеты в один отчет.

Когда phpunit был установлен с PEAR, единственное требование, которое нам было нужно в начале сценария обертки, было

require 'PHP/CodeCoverage/Autoload.php';

Затем, когда сценарий упаковки сделал такие вещи, как

$writer = new PHP_CodeCoverage_Report_Clover();
$writer->process($codeCoverage, "${reportsDir}/clover-coverage.xml");

Автозагрузчик (предположительно) загрузит все необходимое для выполнения этого кода, и мы пойдем по нашему счастливому пути.

Однако с момента перехода на установку phar все стало грязно. Сначала я думал, что мне может потребоваться только сам файл phar, и все будет хорошо.

require 'phpunit-3.7.31.phar';

Однако это привело к выполнению файла phar, как только была нажата строка с требованием, прерывая сценарий оборачивания с выводом использования phpunit. Поскольку вы не можете использовать подстановочные знаки в операторе php require, я затем медленно создал список файлов, необходимых для завершения нашего сценария упаковки, и потребовал их следующим образом:

require 'phar://phpunit-3.7.31.phar/php-code-coverage/CodeCoverage/Report/Clover.php';

Это сработало, когда я выполнил скрипт упаковки из его каталога, а файл phpunit.phar находился в том же каталоге. Однако попытка выполнить его из другого каталога не удалась, сказав, что файл phar не найден в пути включения. Я попытался изменить путь включения, поместить файл .phar в места, уже находящиеся на пути включения, и указать абсолютный путь к файлу phar в файле включения, например:

require 'phar://actual/path/to/file/phpunit-3.7.31.phar/php-code-coverage/CodeCoverage/Report/Clover.php';

Ни одна из этих попыток решить мою проблему не сработала.

Как включить файлы из файла .phar таким образом, чтобы я мог запускать скрипт из любого места в моей системе?

Другой приемлемый ответ — тот, который позволяет мне использовать классы в файле phar, не включая все, что мне нужно по отдельности.

Ubuntu 12.04

PHPUnit 3.7.31 (мы должны остаться на этой версии, но это не влияет на вопрос)

3

Решение

PHAR PHPUnit может быть правильно использован только в качестве библиотеки с PHPUnit 4.2.

Также посмотрите на PHPCOV для объединения данных покрытия кода из нескольких прогонов.

9

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]