Релевантность тестов

Мотивация

Иногда тест актуален только для определённой среды. Релевантность тестов позволяет отфильтровать нерелевантные тесты.

Реализация

Релевантность теста — это функция, которая принимает параметры среды и возвращает True, False или список переменных окружения.

Синтаксис

Релевантность теста определяется одним или несколькими правилами условие: решение.

Допустимые операторы: = == != < <= > >= &&. Всё, что идёт после знака #, считается комментарием и игнорируется.

Регистр не учитывается. Первое подходящее правило побеждает (немедленно завершает оценку релевантности; остальные правила игнорируются).

По умолчанию

Если правило не указано, релевантность теста по умолчанию равна True, то есть тест считается релевантным и должен выполняться.

Окружение

Допустимые параметры, определяющие среду:

product

название продукта (rhel rhel-5 rhel-5.6 rhdts rhscl)

distro

дистрибутив (rhel-6 rhel-6.3 rhscl-1.0.0 f-28)

variant

вариант дистрибутива (Client Desktop Server Workstation)

arch

архитектура (i386 ppc64 s390x x86_64)

collection

коллекция ПО (python27 python33 perl516…​)

component

тестируемый компонент (php, apache, …​)

Параметр distro всегда определяет операционную систему, на которой должно работать ПО, а product описывает целевой продукт, который подписан и используется заказчиком (это может быть надстроечный продукт поверх RHEL, такой как RHSCL, или сам RHEL, если компонент включён непосредственно в операционную систему).

Сравнение дистрибутивов работает в двух режимах:

Режим основной версии

При сравнении с основной версией, например distro < rhel-6, учитываются другие основные версии (соответствует любому из rhel-3 rhel-4 rhel-5).

Режим дополнительной версии

Если также указана дополнительная версия, например distro < rhel-6.3, сравнение выполняется только в пределах указанной основной версии (соответствует rhel-6.0 rhel-6.1 rhel-6.2).

Правила, содержащие параметры среды, которые неизвестны на момент оценки, будут пропущены.

Решение

Часть решение правила может содержать следующие значения:

True

тест релевантен для данной среды

False

тест не релевантен для данной среды

A=X B=Y C=Z

тест релевантен для изменённой среды

Последний вариант выше позволяет настроить среду, в которой должен выполняться тест, путём предоставления списка переменных окружения, которые будут переданы тесту.

Значение решения может быть опущено. В этом случае по умолчанию используется True. Таким образом, следующие две строки определяют идентичную релевантность:

distro > rhel-7: True
distro > rhel-7

Примеры

mod_wsgi актуален для RHEL6 и новее:

distro < rhel-6: False

busybox недоступен для s390x в RHEL6:

arch = s390x && distro = rhel-6: False

perl-Config-General отсутствует в варианте Client:

variant = Client: False

Запускать модульные тесты python под valgrind только на подходящих архитектурах:

arch = ia64: PHASES=novalgrind
arch = s390x && distro < rhel-6: PHASES=novalgrind

Новый компонент python-ctypes добавлен в rhel-5.8:

distro < rhel-5:   False
distro < rhel-5.8: False

Exim присутствует только в RHEL5:

distro != rhel-5: False