[devel] Python2 policy: тесты в подпакетах
Dmitry V. Levin
ldv на altlinux.org
Чт Ноя 12 03:06:16 MSK 2020
On Fri, Oct 30, 2020 at 03:25:43AM +0300, Vitaly Lipatov wrote:
> У нас бесконечно устарело python policy. Как минимум, оно требует
> обновления в связи с python3.
>
> Но я хотел бы выяснить, зачем было рекомендовано запаковывать тесты:
> > Рекомендуется запаковывать тесты и примеры (содержимое каталогов
> > %python_sitelibdir/*/test* и %python_sitelibdir/*/example*) в отдельный
> > пакет (с одним из суффиксов: -devel, -tests, .tests, -testing,
> > -examples).
> https://www.altlinux.org/Python_Policy
>
> У нас для python3 такая статистика по суффиксам test*:
> 8 test
> 544 tests
>
> Вот эти пакеты-герои, которые просто test:
> python3-module-Naked-test - Test for Naked
> python3-module-twisted-core-test - Unit tests for Twisted Core (Python
> 3)
> python3-test - The test modules from the main python 3 package
> python3-module-numdifftools-test - Test suite for Numdifftools
> python3-module-bunch-test - Test for bunch
> python3-module-pytools-test - Test for Pytools (Python 3)
> python3-module-nine-test - Test for nine
> python3-module-pathod-test - Test for pathod
>
> По моим представлениям, тесты нужны для тестирования самого пакета.
> Возможно, в редких случаях тесты пакета используются в других тестах, но
> в основном паковать тесты не имеет смысла и даже вредно, потому что
> из-за этого возникают незамечаемые зависимости нормальных пакетов от
> тестовых.
>
> Да, пакеты -tests используются при сборке 346 пакетов.
> Но в 70 случаях, например, в этот список попал
> python3-module-jsonschema-tests из-за того, что он по ошибке тянется
> пакетом python3-module-jsonschema.
>
> Вот слишком популярные тесты, используемые при сборке:
> 90 python3-module-stevedore-tests
> 69 python3-module-jsonschema-tests
> 28 python3-module-sympy-tests
> 28 python3-module-click-tests
> 17 python3-module-pygraphviz-tests
> 17 python3-module-numexpr-tests
> 16 python3-module-pandas-tests
> 16 python3-module-numpy-tests
>
>
> Также выяснилось, что следующие пакеты требуют тестовые (имеют
> установочные зависимости на -tests). В ряде случаев зависимость
> наверняка излишняя.
> python3-module-h5py-2.10.0-alt2:sisyphus+247694.200.3.3 на 1584382664
>
> python3-module-graphcanvas-4.1.0-alt1:sisyphus+239534.100.1.1 на 1571643621
>
> python3-module-sqlalchemy_monetdb-1.0.0-alt1.1:sisyphus+228373.1000.2.3 на 1556720798
>
> python3-module-greentest-1.4.0-alt2:sisyphus+245000.21776.79.1 на 1583233340
>
> python3-module-numexpr-1:2.6.2-alt4:sisyphus+245000.26700.79.1 на 1583243505
>
> python3-module-pygraphviz-1.5-alt3:sisyphus+245000.6200.84.1 на 1583632822
> python3-module-Chaco-4.8.0-alt2:sisyphus+247694.400.3.3 на 1584382930
> python3-module-blosc-1.5.1-alt3:sisyphus+245000.27700.79.1 на 1583245296
>
> python3-module-infrae.testbrowser-2.0.2-alt3:sisyphus+245390.200.1.1 на 1580717877
>
> python3-module-scikits.statsmodels-1:0.11.1-alt1:sisyphus+256803.2200.7.1 на 1598543643
> python3-module-pandas-1.1.1-alt2:sisyphus+257610.300.8.1 на 1599840378
> python3-module-dask-2.10.1-alt1:sisyphus+245499.40.2.1 на 1580904835
> python3-module-xarray-0.15.0-alt1:sisyphus+245497.20.3.1 на 1580858418
>
> python3-module-silx-examples-0.10.1-alt1:sisyphus+245000.54200.84.1 на 1583666545
>
> python3-module-appier_extras-0.19.4-alt1:sisyphus+231292.200.1.1 на 1559406746
>
> python3-module-testrepository-0.0.20-alt2:sisyphus+227532.1300.1.3 на 1555940636
> python3-module-testtools-2.3.0-alt2:sisyphus+227976.100.1.2 на 1555992585
>
> python3-module-pallets-sphinx-themes-1.1.3-alt2:sisyphus+242803.100.1.1 на 1576141249
> python3-module-flask-1.1.1-alt1:sisyphus+236914.300.4.1 на 1567169521
> python3-module-mailman3-3.2.2-alt2:sisyphus+233553.300.1.1 на 1561975698
> python3-module-numba-0.51.2-alt1:sisyphus+259194.200.1.1 на 1601903259
>
> python3-module-jsonschema-3.2.0-alt1:sisyphus+254429.700.1.1 на 1593798463
> python3-module-xlutils-2.0.0-alt2:sisyphus+244055.240.3.1 на 1578662159
> python3-module-mdp-3.5-alt1:sisyphus+240461.200.1.1 на 1573206274
>
> python3-module-oslo.versionedobjects-2.0.2-alt1:sisyphus+253719.2500.3.1 на 1592658301
>
> openstack-ironic-common-1:15.0.0-alt1:sisyphus+253530.600.3.1 на 1592440913
> python3-module-falcon-1.4.1-alt1:sisyphus+228348.100.2.1 на 1556629111
>
> python3-module-stevedore-1.32.0-alt1:sisyphus+252870.2540.8.1 на 1591619880
> python3-module-theano-1.0.5-alt1:sisyphus+256803.1600.3.1 на 1598456025
> python3-module-sympy-1:1.6.1-alt1:sisyphus+254668.400.6.1 на 1597133252
>
> Например, в python3-module-jsonschema был запакован каталог benchmarks,
> использующий тесты, поэтому он их тянул.
>
> Или в пакет borg был упакован testsuite, нужный только на этапе
> сборочных тестов, и опять же, тянул за собой тесты.
>
> И последнее — следующие модули тащат за собой python3-module-pytest,
> хотя вряд ли он им нужен:
>
> python3-module-pyannotate-1.2.0-alt1:sisyphus+260350.100.1.1 на 1603565173
> python3-module-soupsieve-2.0-alt1 на 1591873207
> python3-module-smpplib-2.1.0-alt1 на 1591873871
> python3-module-Flask-Script-2.0.6-alt1 на 1591874781
> borg-1.1.13-alt2:sisyphus+260657.100.1.1 на 1604014819
>
> python3-module-hypothesis-5.37.3-alt1:sisyphus+255737.4640.19.1 на 1603374308
> python3-module-tox-3.20.1-alt1:sisyphus+260250.100.2.1 на 1603460131
> python3-module-translate-3.1.1-alt1:sisyphus+258948.100.1.1 на 1601484536
> python3-module-spyder-4.0.1-alt1:sisyphus+245364.4.7.1 на 1580852815
> python3-module-xarray-0.15.0-alt1:sisyphus+245497.20.3.1 на 1580858418
> python3-module-weasyprint-47-alt1:sisyphus+233460.340.4.1 на 1561830382
>
> python3-module-validictory-1.1.2-alt1:sisyphus+255445.340.2.1 на 1595853021
> python3-module-trio-0.10.0-alt1:sisyphus+227470.1400.1.1 на 1555687900
> python3-module-tinycss2-1.0.2-alt1:sisyphus+252631.100.1.1 на 1591000665
> python3-module-testlink-0.8.1-alt2:sisyphus+240051.100.1.1 на 1572523725
>
> python3-module-testfixtures-6.14.1-alt1:sisyphus+255737.5400.19.1 на 1603374514
> python3-module-sniffio-1.0.0-alt1:sisyphus+227470.500.1.1 на 1555687422
> python3-module-seaborn-0.10.1-alt1:sisyphus+256803.1500.3.1 на 1598455842
> python3-module-remoto-1.1.4-alt1:sisyphus+246578.200.1.1 на 1582029865
>
> python3-module-pyqtgraph-0.11.0-alt2.rc0:sisyphus+245073.100.2.1 на 1581301999
> python3-module-pyfakefs-3.7.1-alt1:sisyphus+246069.200.1.1 на 1581604472
> python3-module-plumbum-1.6.3-alt2:sisyphus+257359.100.1.1 на 1599157520
> python3-module-openpyxl-2.6.2-alt2:sisyphus+258176.100.1.1 на 1600290668
> python3-module-nibabel-3.1.1-alt1:sisyphus+256803.1200.3.1 на 1598455737
> python3-module-nbclient-0.5.0-alt1:sisyphus+258053.2600.5.1 на 1600242708
> python3-module-miio-0.5.3-alt1:sisyphus+258499.100.1.1 на 1600768674
> python3-module-mando-0.7.0-alt1:sisyphus+255589.100.1.1 на 1596154107
> python3-module-imageio-2.9.0-alt1:sisyphus+256236.200.3.1 на 1597404268
> python3-module-h11-0.9.0-alt1:sisyphus+252379.100.1.1 на 1590695967
> python3-module-gabbi-1.34.0-alt2:sisyphus+249737.100.1.1 на 1586528957
> python3-module-fs-2.4.11-alt2:sisyphus+257603.700.3.2 на 1599686926
> python3-module-flit-2.3.0-alt2:sisyphus+256113.100.1.1 на 1597067357
> python3-module-erf-1.0.1-alt2:sisyphus+257337.100.1.1 на 1599146938
> python3-module-dask-2.10.1-alt1:sisyphus+245499.40.2.1 на 1580904835
>
> python3-module-cssselect2-0.2.1-alt1.1:sisyphus+235505.100.1.1 на 1565020851
> python3-module-colorlog-4.2.1-alt1:sisyphus+255462.100.1.1 на 1595872134
> python3-module-cairocffi-1.0.2-alt1:sisyphus+233460.140.4.1 на 1561830232
>
> python3-module-async_generator-1.10-alt1:sisyphus+227465.1400.1.2 на 1555756792
> python3-module-aspectlib-1.4.2-alt3:sisyphus+245603.100.1.1 на 1580978574
> python3-module-SQLObject-3.7.3-alt1:sisyphus+242468.40.2.1 на 1575702292
> python3-module-QtAwesome-0.7.2-alt1:sisyphus+255560.100.1.1 на 1596120565
>
> python3-module-pytest-watch-4.2.0-alt1:sisyphus+238682.100.1.1 на 1570207452
>
> python3-module-pytest-services-2.0.1-alt1:sisyphus+242204.100.1.1 на 1575399642
> python3-module-libcloud-2.5.0-alt1:sisyphus+231298.100.1.1 на 1559408637
> python3-module-iso8601-0.1.11-alt1:sisyphus+227495.1100.1.3 на 1555843037
> python3-module-characteristic-14.3.0-alt1.1.1.1 на 1517660577
> python3-module-ipython-7.18.1-alt2:sisyphus+258220.400.1.1 на 1600330137
> guake-3.7.0-alt1:sisyphus+245894.200.2.1 на 1581507387
> codespell-1.17.1-alt1:sisyphus+252230.100.2.1 на 1590403814
>
> python3-module-ceph-common-15.2.5-alt1:sisyphus+258345.300.3.1 на 1600564481
> python3-module-wavelets-1.1.1-alt1:sisyphus+256190.400.1.1 на 1597223583
>
> python3-module-scikits.statsmodels-1:0.11.1-alt1:sisyphus+256803.2200.7.1 на 1598543643
>
> python3-module-scikit-learn-0.23.2-alt1:sisyphus+256112.500.1.1 на 1597065953
>
> python3-module-numpy-testing-1:1.19.1-alt1:sisyphus+256803.200.2.1 на 1598449250
>
> python3-module-numdifftools-test-0.9.12-alt2.git20150828.1:sisyphus+249205.100.1.1 на 1585839379
> python3-module-libsass-0.20.1-alt1:sisyphus+257025.100.1.1 на 1598765985
> python3-module-tinycss-0.4.0-alt1:sisyphus+233577.3100.3.2 на 1562121468
> python3-module-ipatests-4.8.9-alt1:sisyphus+257014.1100.9.1 на 1602206763
> python3-module-flaky-3.7.0-alt1:sisyphus+257831.100.1.1 на 1599752523
> python3-module-sybil-1.4.0-alt1:sisyphus+255737.5300.19.1 на 1603374464
Непонятно, как однозначно определить, содержит ли модуль питона тесты,
и зависит ли модуль питона от тестов.
Я для начала добавил в sisyphus_check проверку, запрещающую
пакетам вида python3-module-NAME содержать Requires пакетов
вида python3-module-NAME-tests и python3-module-NAME-test.
Насколько я понимаю, таких пакетов в репозитории несколько:
python3-module-Chaco
python3-module-blosc
python3-module-infrae.testbrowser
python3-module-genshi
python3-module-mdp
python3-module-oslo.versionedobjects
python3-module-theano
--
ldv
Подробная информация о списке рассылки Devel