[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