Bug 44884 - Добавить RPM макросы для запуска тестов
Summary: Добавить RPM макросы для запуска тестов
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: rpm-build-python3 (show other bugs)
Version: unstable
Hardware: x86_64 Linux
: P5 enhancement
Assignee: Stanislav Levin
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2023-01-11 12:58 MSK by Stanislav Levin
Modified: 2023-01-20 11:43 MSK (History)
9 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Stanislav Levin 2023-01-11 12:58:28 MSK
Предыстория:

Зачастую при сборке 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`
Comment 1 Stanislav Levin 2023-01-11 13:01:28 MSK
Про `pyproject_installer run`:
https://github.com/stanislavlevin/pyproject_installer/issues/21
Comment 2 Stanislav Levin 2023-01-12 15:07:16 MSK
Сборочное задание:
https://git.altlinux.org/tasks/313305/
Comment 3 Anton Farygin 2023-01-16 13:20:19 MSK
tox при этом останется ?
Comment 4 Stanislav Levin 2023-01-16 13:34:37 MSK
(Ответ для Anton Farygin на комментарий #3)
> tox при этом останется ?

Да, tox при этом остается, но я буду рекомендовать использовать макросы основанные на %pyproject_run. Автор tox в версии 4 переделал буквально все и мои плагины еще не адаптированы под эту новую версию, поэтому пока мы залипли на tox 3.

Отличия от tox, которые могут повлиять на результаты тестов:
- tox режет все переменные окружения, кроме указанных явно. pyproject не режет.
- в Python виртуальном окружении tox есть pip, wheel и setuptools. В pyproject их нет
- tox использует pip в качестве установщика зависимостей, который проверяет наличие дистрибутивов, их версий и тд. pyproject не занимается зависимостями.
Comment 5 Repository Robot 2023-01-20 11:43:01 MSK
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).