Testo. Фильтры
Фильтры нужны для того, чтобы сузить множество запускаемых тестов. Иначе говоря, это возможность сделать выборку по тестам перед их запуском.
Добавление фильтров является одним из важных пунктов на пути к версии 1.0.0
Теперь с гордостью можно сказать, что этот пункт закрыт. Фильтры поддерживаются на уровне фреймворка и на уровне плагина.

Система фильтрации в Testo многослойная.
Test Suite (флаг
--suite) — глобальный уровень. Лучше сразу обозначить, что мы запускаем Unit тест и лезть в Acceptance не нужно. Это срежет большой пласт работы для следующего уровня.Путь до файла (флаг
--path) — отрабатывает на уровне Finder'а, когда просто сканируется структура папок и файлов. Поддерживает wildcards (звёздочки, вопросики и т.д.).Токенизация. Файлы, прошедшие предыдущие фильтры начинают читаться и разбиваться на токены.
По этим токенам ищутся имена функций, методов и классов. Это ещё не исполнение файла и рефлексия здесь недоступна, но мы уже можем понять, есть ли в этих файлах тесты.
На этом этапе отрабатывает фильтр по имени теста или тест-кейса (в CLI флаг
--filter).Можно указать короткое имя функции, метода, класса или вместе (
UserTest::testCreate), либо FQN (полное имя) функции/класса/метода.После токенизации файлы выполняются пыхой, чтобы мы могли работать с рефлексией.
На уровне рефлексии система фильтров выполняет последние действия: не пропускает дальше те тесты или кейсы, которые не подходят под фильтр по имени.
Фильтры можно комбинировать.
Однотипные фильтры комбинируются оператором ИЛИ, разнотипные оператором И.
Например:
если указать только два файла, то выполнятся оба, т.к. пройдут по критерию (Файл1 ИЛИ Файл2)
если указать путь до файла и имя
simpleTest, то выполнится только simpleTest из указанного файла.
Плагин
На стороне плагина теперь можно кликнуть на тест-кейс, на тест или на файл и запустить только выбранное. А ещё @xepozz добавил сокрытие ненужных стек-трейсов под спойлер. Выглядит офигенно и очень удобно.

