Тестирование PHP-приложений из Geany

Когда-то я настраивал запуск тестов перловых Mojolicious-приложений прямо из IDE Geany. Потом довелось попробовать микрофреймворк Slim для PHP — ну да, работает, хотя тесты там более многословные по сравнению с перловыми.

А теперь попробуем настроить Geany для запуска тестов в современных PHP-приложениях — например, для использующих уже упомянутый Slim. Для запуска тестов в PHP существует PHPUnit — это не единственный инструмент, хоть и весьма популярный. Настройки тестирования зависят от проекта — в каждом проекте они могут быть своими. В Geany 1.27 настройки вызываются через меню: Project → Properties → вкладка Build либо Build → Set Build Commands:

  1. Задаём имя команды, под которым она будет отображаться в меню — нажимаем на пустую кнопку в столбце Label (в моём примере это была вторая сверху кнопка, на которой теперь написано Test).
  2. Указываем в столбце Command путь к PHPUnit — он может лежать, например, в подкаталоге vendor/bin относительно корня приложения. В случае, если он лежит внутри проекта, базовый путь проекта можно записать как %p.
  3. В столбце Working directory указываем путь к корневой папке приложения.
  4. В строке Error regular expression указываем регулярное выражение для поиска ошибок:
    ^(.+):(\d+)$
    PHPUnit выводит в сообщении об ошибке разделённые двоеточием полный путь к файлу и номер строки с ошибкой. Если даблкликнуть^W дважды щёлкнуть по сообщению, можно быстро перейти к соответствующей строке, кроме того, все строки, вызвавшие ошибки тестирования, выделяются подчёркиванием красной волнистой линией.

После настройки тесты можно будет запускать кучей разных способов: через меню, кликом по кнопке с кирпичом, а также с клавиатуры (по умолчанию — клавишей F9).

Подсчёт числа DOM-элементов при тестировании через Test::Mojo

Модуль Test::Mojo позволяет проверить, нашлось ли нужное количество DOM-элементов:

$t = $t->element_count_is('div.foo[x=y]', 5);
$t = $t->element_count_is('html body div', 30, 'thirty elements');

Но так можно проверить лишь равенство ожидаемого и полученного, в то время как иногда нужны другие операции.

$t->get_ok("$ROOT/some.xml");
my @items = $t->tx->res->dom->find('rss channel item')->each;
ok scalar @items > 42, 'More than 42 items in some.xml';

Майские концерты

Академический хор русского культурного центра города Челябинска в начале мая даст пару разных концертов в Челябинской области:

  • 5 мая, Челябинск, храм Сергия Радонежского (проспект Победы, 398, корпус 1) — пасхальная программа — русская и зарубежная духовная музыка.
  • 9 мая, Каслинский район, посёлок Вишневогорск — программа ко Дню Победы — советские военные песни и музыка современных композиторов.

В состав хора входят лауреат всероссийских и международных конкурсов Мужской хор русского культурного центра города Челябинска и женский хор «Мечта».
Художественный руководитель коллективов и дирижёр — Заслуженный работник культуры РСФСР Владимир Александрович Шереметьев,
хормейстер — Евгений Николаевич Недоспасов,
концертмейстер — лауреат международных конкурсов Наталья Сергеевна Важенина.

О жизни, вселенной и вообще

0. КДПВ:

42

1. ДР близится — осталась всего неделя, место и время отмечания — традиционные: в субботу 16 марта в лесу в карьере.

Карта

Мясо, чай и гитара будут. Дрова есть. В городе снег подтаивает, но с горки кататься можно — мы на прошлой неделе проверяли и сегодня повторим. Нынешний прогноз — около −4 °C, солнечно, без осадков.

P.S. Вишлиста не существует, а телепортацию ещё не придумали 🙂