Ошибка предварительной фиксации Python unittest

Я хочу, чтобы pre-commit запускал тесты перед фиксацией моего кода.
Команда python -m unittest discover работает в командной строке .

D:\project_dir>python -m unittest discover
...
...
...
----------------------------------------------------------------------
Ran 5 tests in 6.743s

OK

Но при попытке совершить я получаю

D:\project_dir>git commit -m "fix tests with hook"
run tests................................................................Failed
hookid: tests

usage: python.exe -m unittest discover [-h] [-v] [-q] [--locals] [-f] [-c]
                                       [-b] [-k TESTNAMEPATTERNS] [-s START]
                                       [-p PATTERN] [-t TOP]
python.exe -m unittest discover: error: unrecognized arguments: bigpipe_response/processors_manager.py
usage: python.exe -m unittest discover [-h] [-v] [-q] [--locals] [-f] [-c]
                                       [-b] [-k TESTNAMEPATTERNS] [-s START]
                                       [-p PATTERN] [-t TOP]
python.exe -m unittest discover: error: unrecognized arguments: tests/test_processors.py

Вот мой .pre-commit-config.yaml файл.

-   repo: local
    hooks:
    -   id: tests
        name: run tests
        entry: python -m unittest discover
        language: python
        types: [python]
        stages: [commit]

Также для языка стараюсь использовать system. Получил тот же результат.

Как я могу это решить? Пожалуйста помоги.


person shay te    schedule 16.12.2019    source источник
comment
Какую программу вы используете для запуска этого перехвата перед фиксацией?   -  person magikid    schedule 16.12.2019
comment
@magikid что вы подразумеваете под какой программой?   -  person shay te    schedule 17.12.2019
comment
git изначально не понимает ваш .pre-commit-config.yaml файл. Все, что понимает git, - это скрипты в папке .git/hooks/. Похоже, что программа, которая использует этот файл, является программой предварительной фиксации.   -  person magikid    schedule 19.12.2019


Ответы (1)


Вы можете попробовать следующий YAML. Конечно, вы должны изменить шаблон в опции args, если вы используете другой.

-   id: unittest
    name: unittest
    entry: python -m unittest discover 
    language: python
    'types': [python]
    args: ["-p '*test.py'"] # Probably this option is absolutely not needed.
    pass_filenames: false
    stages: [commit]

Вы должны установить false параметр pass_filenames, потому что в противном случае файлы будут передаваться в качестве аргументов, и, как вы упомянули в своем вопросе, это «нераспознанные» параметры.

person milanbalazs    schedule 16.12.2019
comment
спасибо @milanbalazs, это было очень полезно. действительно был pass_filenames: false - person shay te; 17.12.2019