Языковые (юнит) тесты PHP - PullRequest
3 голосов
/ 10 мая 2009

В данный момент я работаю (просто для удовольствия) над неким компилятором, который разбивает PHP -код до исходного кода для низкого уровня VM.

Поскольку система типов и многие из PHP -функций не настолько логичны, мне нужно много тестовых сценариев, чтобы убедиться, что мой код ведет себя так же, как в PHP.

Я начал все тестировать с теста из PHP -источников ( здесь ). Но многие тесты не только зависят от языка, они также содержат некоторые функции обработки веб-сервера (POST-данные и т. Д.). Есть ли другие тесты для проверки PHP как языка? Лучше всего будет, если сам скрипт написан на PHP.

Ответы [ 2 ]

1 голос
/ 11 мая 2009

Если вы проверяете, что ваша семантика ведет себя так же, как в Zend-реализации PHP, я бы порекомендовал создать автоматизированный инструмент для генерации грамматики из BNF самого PHP. Таким образом, вы получите множество файлов .php, выражающих большую часть семантики. Не забудьте включить много кода трассировки в сгенерированные файлы.

Затем запустите его через реализацию Zend и вашу, чтобы убедиться, что вы получите такую ​​же проверку. Используйте генерацию неработающего кода, чтобы убедиться, что вы тоже его поймаете. Только когда вы знаете, что ваша реализация верна (со странностями), вы можете двигаться дальше.

http://llvm.org/devmtg/2008-08/Lopes_PHP-JIT-InTwoDays.pdf может помочь. Посмотрите на людей, создающих PHP JIT для LLVM. Может предоставить некоторую информацию о том, как они проверяют правильность синтаксиса и семантики языка в сравнении с существующей реализацией.

0 голосов
/ 10 мая 2009

Возможно, я вас неправильно понимаю, но это может быть то, что вы ищете?
http://www.simpletest.org/

Они разработали его как JUnit, но для php, согласно описанию.

...