Bug 39360

Summary: borg требует pytest и unittest
Product: Sisyphus Reporter: Vladimir D. Seleznev <vseleznv>
Component: borgAssignee: Dmitriy Shadrinov <shadrinov>
Status: ASSIGNED --- QA Contact: qa-sisyphus
Severity: normal    
Priority: P5 CC: lav, shadrinov
Version: unstable   
Hardware: x86_64   
OS: Linux   

Description Vladimir D. Seleznev 2020-12-02 21:59:11 MSK
Traceback (most recent call last):
  File "/usr/lib64/python3/site-packages/borg/archiver.py", line 81, in
  <module>
      from .selftest import selftest
        File "/usr/lib64/python3/site-packages/borg/selftest.py", line
        21, in <module>
            from .testsuite.hashindex import HashIndexDataTestCase,
            HashIndexRefcountingTestCase, HashIndexTestCase
            ModuleNotFoundError: No module named 'borg.testsuite'
            Command exited with non-zero status 2
Comment 1 Vitaly Lipatov 2020-12-02 22:45:01 MSK
Дмитрий, мне кажется, что стоит вырезать выполнение этого теста selfttest.py в рантайме, проследив, что он выполняется после сборки пакета.

Это тест на правильность упаковки:
«to discover issues with the way Borg was compiled or packaged and also bugs in Borg itself.»

Я не думаю, что нужно тянуть unittest, и выполнять юнит-тесты при запуске программы. Это чересчур.
Comment 2 Dmitriy Shadrinov 2020-12-03 00:26:46 MSK
(Ответ для Vitaly Lipatov на комментарий #1)
> Дмитрий, мне кажется, что стоит вырезать выполнение этого теста selfttest.py
> в рантайме, проследив, что он выполняется после сборки пакета.
> 
> Это тест на правильность упаковки:
> «to discover issues with the way Borg was compiled or packaged and also bugs
> in Borg itself.»
> 
> Я не думаю, что нужно тянуть unittest, и выполнять юнит-тесты при запуске
> программы. Это чересчур.

Думаю, Вы правы. Постараюсь реализовать. Выпилить тест оказалось достаточно просто, а вот реализовать его выполнение только после сборки, пока в процессе.
Comment 3 Vitaly Lipatov 2020-12-03 01:05:23 MSK
(Ответ для Dmitriy D. Shadrinov на комментарий #2)
> (Ответ для Vitaly Lipatov на комментарий #1)
> > Дмитрий, мне кажется, что стоит вырезать выполнение этого теста selfttest.py
> > в рантайме, проследив, что он выполняется после сборки пакета.
> > 
> > Это тест на правильность упаковки:
> > «to discover issues with the way Borg was compiled or packaged and also bugs
> > in Borg itself.»
> > 
> > Я не думаю, что нужно тянуть unittest, и выполнять юнит-тесты при запуске
> > программы. Это чересчур.
> 
> Думаю, Вы правы. Постараюсь реализовать. Выпилить тест оказалось достаточно
> просто, а вот реализовать его выполнение только после сборки, пока в
> процессе.
Спасибо большое!
Comment 4 Dmitriy Shadrinov 2020-12-04 00:11:57 MSK
Меня начинают терзать сомнения, что это скромное описание соответсвует действительности (to discover issues with the way Borg was compiled or packaged and also bugs in Borg itself).

По факту каталог testsuite содержит кучу кода, который проверяет вовсе не только установку и упаковку. Боюсь, решение выпилить этот модуль было слегка поспешным.
Comment 5 Dmitriy Shadrinov 2020-12-04 00:16:12 MSK
Но как быть в таком случае? Что делать если этот модуль все-таки нужен?
Comment 6 Vitaly Lipatov 2020-12-04 00:48:16 MSK
(Ответ для Dmitriy D. Shadrinov на комментарий #4)
> Меня начинают терзать сомнения, что это скромное описание соответсвует
> действительности (to discover issues with the way Borg was compiled or
> packaged and also bugs in Borg itself).
> 
> По факту каталог testsuite содержит кучу кода, который проверяет вовсе не
> только установку и упаковку. Боюсь, решение выпилить этот модуль было слегка
> поспешным.
Не очень понял, в чём проблема. Да, testsuite это тесты borg, их нужно выполнять в секции
%check при сборке.

Делать пакет зависящем от тестов — это неправильно.

> * Fri Dec 04 2020 Dmitriy D. Shadrinov <shadrinov@altlinux.org> 1.1.14-alt3
> - restored selftest.py and testsuite module
Не очень понял аргументацию.
Comment 7 Vitaly Lipatov 2020-12-04 00:56:35 MSK
Можно удалить вызов selftest из

    def prerun_checks(self, logger, is_serve):
        if not is_serve:
            # this is the borg *client*, we need to check the python:
            check_python()
        check_extension_modules()
        selftest(logger)
Comment 8 Dmitriy Shadrinov 2020-12-04 01:07:51 MSK
(Ответ для Vitaly Lipatov на комментарий #6)
> (Ответ для Dmitriy D. Shadrinov на комментарий #4)
> > Меня начинают терзать сомнения, что это скромное описание соответсвует
> > действительности (to discover issues with the way Borg was compiled or
> > packaged and also bugs in Borg itself).
> > 
> > По факту каталог testsuite содержит кучу кода, который проверяет вовсе не
> > только установку и упаковку. Боюсь, решение выпилить этот модуль было слегка
> > поспешным.
> Не очень понял, в чём проблема. Да, testsuite это тесты borg, их нужно
> выполнять в секции
> %check при сборке.
> 
> Делать пакет зависящем от тестов — это неправильно.
> 
> > * Fri Dec 04 2020 Dmitriy D. Shadrinov <shadrinov@altlinux.org> 1.1.14-alt3
> > - restored selftest.py and testsuite module
> Не очень понял аргументацию.

в testsuite я обнаружил такой например модуль: upgrader.py, а в нем функции:

def repo_valid(path):
    """
    utility function to check if borg can open a repository

    :param path: the path to the repository
    :returns: if borg can check the repository
    """
def key_valid(path):
    """
    check that the new keyfile is alright

    :param path: the path to the key file
    :returns: if the file starts with the borg magic string
    """

и прочие модули, которые тестируют валидность не столько самого borg, сколько
состояние репозитория, валидность ключей, особенностей операционных систем.

или, например: platform.py

    def test_access_acl(self):
    def test_non_ascii_acl(self):

Есть основания полагать что большинство этих тестов проверяют не сборку, а
особенности работы в системе, состояние репозитория и прочее.
Comment 9 Vladimir D. Seleznev 2020-12-04 01:11:52 MSK
(In reply to Vitaly Lipatov from comment #6)
> (Ответ для Dmitriy D. Shadrinov на комментарий #4)
> > Меня начинают терзать сомнения, что это скромное описание соответсвует
> > действительности (to discover issues with the way Borg was compiled or
> > packaged and also bugs in Borg itself).
> > 
> > По факту каталог testsuite содержит кучу кода, который проверяет вовсе не
> > только установку и упаковку. Боюсь, решение выпилить этот модуль было слегка
> > поспешным.
> Не очень понял, в чём проблема. Да, testsuite это тесты borg, их нужно
> выполнять в секции
> %check при сборке.
> 
> Делать пакет зависящем от тестов — это неправильно.
> 
> > * Fri Dec 04 2020 Dmitriy D. Shadrinov <shadrinov@altlinux.org> 1.1.14-alt3
> > - restored selftest.py and testsuite module
> Не очень понял аргументацию.

Давайте не доводить до абсолюта. В данном конкретном случае оправдана зависимость пакета от этих самых тестов в рантайме. Я активный пользователь этого пакета, я за то, чтобы он использовал всевозможные проверки в рантайме, какие посчитает нужным.
Comment 10 Vitaly Lipatov 2020-12-04 01:47:10 MSK
(Ответ для Vladimir D. Seleznev на комментарий #9)
...
> Давайте не доводить до абсолюта. В данном конкретном случае оправдана
> зависимость пакета от этих самых тестов в рантайме. Я активный пользователь
> этого пакета, я за то, чтобы он использовал всевозможные проверки в
> рантайме, какие посчитает нужным.
В CentOS 8 borgbackup-1.1.14 не требует pytest и unittest. Возможно, нам нужно отключить требование этих модулей и волки будут сыты и овцы целы?


(Ответ для Dmitriy Shadrinov на комментарий #8)
...
> Есть основания полагать что большинство этих тестов проверяют не сборку, а
> особенности работы в системе, состояние репозитория и прочее.
Убедительно.

Вас не затруднит проверить, действительно ли при выполнении нужны pytest и unittest?