среда, 13 февраля 2013 г.

Проверка работоспособности кода на множестве версий PHP


Всем доброго времени суток. На днях понадобилось проверить работоспособность 4 вариантов кода на разных версиях PHP (в сумме около 20). Причём изначально было понятно что 4 экземплярами дело не ограничится — в будущем подобных тестов предвидится больше. Вручную всё это делать очень утомительно, поэтому было написано 2 скрипта, которыми я бы хотел с вами поделиться.


Весь рабочий процесс с ними происходит следующим образом. Вы скачиваете в одну папку все необходимые версии PHP, распаковывайте их и собираете. Нужно чтоб получилась следующая структура:
/some_dir/.
/some_dir/php-5.1.6
/some_dir/php-5.2.17
/some_dir/php-5.3.1
/some_dir/...
Где php-5.1.6, php-5.2.17 и т. д. - директории с соответствующими версиями интерпретатора. Далее туда же кладёте 2 скрипта. Первый — run.php. Публикую его на pastebin т.к. на blogger нет соотв. подсветки: http://pastebin.com/3qWh9xLK
Как видно из исходников, он сперва обнаружает соседствующие с ним директории PHP по сигнатуре «php-», а затем с помощью cli/php каждой из них выполняет скрипт test.php. Если после выполнения тестового скрипта в  stdout падает строчка из константы «TEST_DONE_STR» - тест пройден и run.php выведет «php-*.*.* — OK». В ином случае - «php-*.*.* — FAILED».
test.php должен содержать код, который вам необходимо проверить. Он может быть в любом виде. Главное, чтоб в случае успешной отработки выводилась вышеописанная строка. Для примера выкладываю содержимое одного из моих тестов: http://pastebin.com/E5hRvUFF
Пример вывода run.php:
user@comp:~/php$ php run.php
php-4.3.1 - php-cli not found
php-5.2.16 - php-cli not found
php-5.2.17-suhosin - php-cli not found
php-4.3.10 - OK
php-4.4.9 - OK
php-5.0.5 - OK
php-5.1.6 - OK
php-5.1.6-suhosin - FAILED
php-5.2.0 - OK
php-5.2.17 - OK
php-5.2.2 - OK
php-5.2.3 - OK
php-5.2.4 - OK
php-5.2.9 - OK
php-5.3.0 - FAILED
php-5.3.1 - FAILED
php-5.3.10 - FAILED
php-5.3.20 - FAILED
php-5.3.5 - FAILED
Надеюсь они будут вам полезны. Мне уже сэкономили кучу времени :)

2 комментария:

  1. Есть онлайн сервис http://3v4l.org/, поддерживает 80 версий PHP

    ОтветитьУдалить
  2. Да, читал о нём в комментариях на хабре. Полезный ресурс, но лишь при малом кол-ве проверяемых файлов. Поддерживали бы там загрузку архивов - цены бы им не было :)

    ОтветитьУдалить