[newbies] Запуск python-module-tests и %add_findreq_skiplist tests/
Ivan A. Melnikov
iv на altlinux.org
Пн Сен 23 09:58:52 MSK 2024
On Mon, Sep 23, 2024 at 02:35:35AM GMT, Александр Лубягин wrote:
> Скомпилировал модуль perceval. Он предназначен для fetching`а содержимого
> страниц
> социальных сетей/репозиториев/т.д. Мне он нужен для пакета определения
> гендера (пола) damegender, прогонки его тестов по соц.сетям.
>
> Питоновский модуль работы с соц.сетями perceval содержит подкаталог
> /usr/lib/python3/site-packages/perceval/tests/
>
> Для тестирования (которое требует read-write прав на подкаталог
> tests/data/)
> я копирую: cp -a /usr/lib/python3/site-packages/perceval/tests/ .
> Затем:
> cd tests
> python3 -m pytest ../tests/
> ... 999 passed, 2110 warnings in 60.54s ...
>
> Вроде бы всё ок, ошибок нет. Импорт модулей проходит так, как задумывал
> автор, не надо делать export PYTHONPATH=$PYTHONPATH:<dir>
То есть смотрите, по задумке автора, эти тесты не должны запускаться
из %python3_sitelibdir или %python3_sitelibdir_noarch, они должны
запусаться из текущего каталога и нужны только разработчику для
разработки. Тогда зачем они в пакете? Убрать из пакета файлы, которые
не нужны, и даже вредны для его работы -- это одна из обязанностей
(и ответственностей) мейнтейнера.
> Но для того, чтобы в зависимости не попали файлы
> tests/base.py
> tests/mocked_package/__init__.py и т.д.
> ошибка: Неудовлетворенные зависимости:
> python3(base) < 0 нужен для
> python3-module-perceval-tests-1.0.6-alt1.noarch
> python3(mocked_package) < 0 нужен для
> python3-module-perceval-tests-1.0.6-alt1.noarch
> python3(mocked_package.backend) < 0 нужен для
> python3-module-perceval-tests-1.0.6-alt1.noarch
> python3(mocked_package.nested_package) < 0 нужен для
> python3-module-perceval-tests-1.0.6-alt1.noarch
> python3(mocked_package.nested_package.nested_backend_b) < 0 нужен для
> python3-module-perceval-tests-1.0.6-alt1.noarch
> python3(mocked_package.nested_package.nested_backend_c) < 0 нужен для
> python3-module-perceval-tests-1.0.6-alt1.noarch
Опять же, такие зависимости появляются, потому что в тестах используется
форма import statement, не предполагающая их использование как модуля.
> я добавляю в .spec строку:
> %add_findreq_skiplist %python3_sitelibdir_noarch/%pypi_name/tests/*
>
> Корректно ли так делать (спек с макросом %add_findreq_skiplist)?
В общем случае я бы рекомендовал такие варианты, в порядке приоритета:
1. Поправить исходники, чтобы таких зависимостей не возникало. Что-то
вроде замены `import foo` на `from . import foo`.
2. Точечно выкинуть ненужные зависимости при помощи %filter_from_requires
В принципе, можно и так, как сделали Вы, но тогда есть шанс, что
при обновлении Вы упустите что-нибудь важное.
Однако в данном случае моя рекомендация однозначна: резать. Если тесты
по каким-то причинам жалко, положите их в %_docdir. В виде тарбола;)
В любом случае это не модули питона, так что класть из в sitelibdir
не стоит.
--
wbr,
iv m.
Подробная информация о списке рассылки devel-newbies