Текущая версия PHPUnit (4.4.4.5.4.6) не создает покрытие, и эта ошибка не выполняется.
$php phpunit-alpha.phar -coverage-html=cover t/
PHPUnit alpha-2015-01-09 by Sebastian Bergmann and contributors.
PHPUnit alpha-2015-01-09 by Sebastian Bergmann and contributors.
Fatal error: Class undefined: PHP_Token_TYPELIST_LT in phar://phpunit-alpha-2015-01-09.phar/php-token-stream/Token/Stream.php on line 185
Я согласен, что с Ирой, что покрытие кода использует XDebug. Однако по какой-то причине PHPUnit не решил охватить кодом HackLang.
первое обновление:
Это происходит потому, что Hacklang имеет более зарегистрированных команд (например, форма, тип) и более структур (лямбда), который PHP-маркер-поток не способен распознать их.
Исправление довольно просто, но вы можете создать класс, который не определен, и расширить его от PHP_Token. Например, для моего проекта я должен был создать эти классы:
class PHP_Token_TYPELIST_LT extends PHP_Token {}
class PHP_Token_TYPELIST_GT extends PHP_Token {}
class PHP_Token_TYPE extends PHP_Token {}
class PHP_Token_SHAPE extends PHP_Token {}
class PHP_Token_LAMBDA_OP extends PHP_Token {}
class PHP_Token_LAMBDA_CP extends PHP_Token {}
class PHP_Token_LAMBDA_ARROW extends PHP_Token {}
Второе обновление:
PHPUnit использует CodeCoverage обнаружить выполненную линию и в этом проекте, на HHVM он использует fb_get_code_coverage
Да, мы попробовали PHPUnit. Он хорошо работает для запуска тестов (hhvm run Hack не отличается от PHP). Но Coverage не удалось с ошибками при анализе исходного файла Hack. – farzad