Релевантность тестов
Мотивация
Иногда тест актуален только для определённой среды. Релевантность тестов позволяет отфильтровать нерелевантные тесты.
Реализация
Релевантность теста — это функция, которая принимает параметры среды и возвращает 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
Want to help? Learn how to contribute to Fedora Docs ›