Предыстория: Зачастую при сборке Python rpm пакета требуется запустить тесты проекта в текущем Python окружении в контексте собираемого пакета. При этом сборочное окружение накладывает некоторые ограничения, например: - текущий пользователь непривилегированный и не может устанавливать Python пакеты в global sitepackages - отсутствие доступа к package index (pypi.org) Хотя некоторые тесты могут быть запущены в текущем Python окружении без каких-либо изменений (например, при плоской схеме архитектурно-независимого проекта), другие требуют хотя бы установки переменной окружения `PYTHONPATH`. Все становится намного сложнее в случае архитектурно-зависимых проектов, использовании `.pth` хуков, `entry_points` плагинов и тд. Это причина, по которой сейчас в Python сообществе для тестирования широко используется `tox` (основанный на `virtualenv`). Идеология `tox` в том, чтобы установить зависимости проекта или окружения с pypi.org и запустить какую-либо команду. Чтобы отговорить его (`tox`) это делать в сборочном окружении, используется несколько плагинов. Предложение: - добавить легковесную альтернативу `tox` на основе `pyproject_installer run` через RPM макро `%pyproject_run` (можно запустить произвольную команду) - добавить наиболее используемые варианты запуска тестов через RPM макросы: - `%pyproject_run_pytest` - `%pyproject_run_unittest`
Про `pyproject_installer run`: https://github.com/stanislavlevin/pyproject_installer/issues/21
Сборочное задание: https://git.altlinux.org/tasks/313305/
tox при этом останется ?
(Ответ для Anton Farygin на комментарий #3) > tox при этом останется ? Да, tox при этом остается, но я буду рекомендовать использовать макросы основанные на %pyproject_run. Автор tox в версии 4 переделал буквально все и мои плагины еще не адаптированы под эту новую версию, поэтому пока мы залипли на tox 3. Отличия от tox, которые могут повлиять на результаты тестов: - tox режет все переменные окружения, кроме указанных явно. pyproject не режет. - в Python виртуальном окружении tox есть pip, wheel и setuptools. В pyproject их нет - tox использует pip в качестве установщика зависимостей, который проверяет наличие дистрибутивов, их версий и тд. pyproject не занимается зависимостями.
rpm-build-python3-0.1.21-alt1 -> sisyphus: Thu Jan 12 2023 Stanislav Levin <slev@altlinux> 0.1.21-alt1 - Added support for run command (closes: #44884).