Комплекс тестування Weblate і неперервна інтеграція¶
Комплекси тестування існують для більшої частини поточного коду. Збільште покриття додаванням тестувань для будь-яких нових функціональних можливостей і перевірте, чи працює тестування.
Неперервна інтеграція¶
Weblate покладається на GitHub Actions для запуску тестів, створення документації, лінтування коду та інших завдань, що забезпечують якість коду.
Codecov збирає інформацію про покриття коду з проведених тестів.
Передбачено декілька завдань для перевірки різних аспектів:
Модульні та функціональні тести з використанням pytest.
Збірка документації та зовнішні посилання за допомогою Sphinx.
Лінтинг коду та забезпечення якості за допомогою ruff <https://docs.astral.sh/ruff/>`_ і пілінта.
Сканування безпеки коду за допомогою CodeQL.
Форматування коду за допомогою pre-commit.
Тестування перенесення для всіх підтримуваних випусків
Перевірка конфігурації (забезпечує наявність у створених файлах усіх даних та можливість їх тестування)
Налаштування для системи неперервної інтеграції зберігаються у каталозі .github/workflows. Система неперервної інтеграції значною частиною використовує допоміжні скрипти, які зберігаються у каталозі ci. Ці скрипти може бути виконано вручну, але для їхньої роботи потрібні декілька змінних середовища, які, здебільшого, визначають файл параметрів Django, яким слід скористатися, та тестування з’єднання із базою даних. Приклад визначення цих змінних можна знайти у файлі scripts/test-database.sh:
# Copyright © Michal Čihař <michal@weblate.org>
#
# SPDX-License-Identifier: GPL-3.0-or-later
# Simple way to configure test database from environment
# shellcheck shell=sh
# Database backend to use postgresql / mysql / mariadb
export CI_DATABASE="${1:-postgresql}"
# Database server configuration
export CI_DB_USER=weblate
export CI_DB_PASSWORD=weblate
export CI_DB_HOST=127.0.0.1
# Django settings module to use
export DJANGO_SETTINGS_MODULE=weblate.settings_test
Просте виконання може виглядати так:
source scripts/test-database.sh
./ci/run-migrate
./ci/run-test
./ci/run-docs
Локальне тестування Weblate¶
Перед запуском тесту переконайтеся, що встановлені залежності тесту. Це можна зробити за допомогою команди pip install -e .[test].
Тестування за допомогою pytest¶
Перш ніж запускати тести, вам слід зібрати статичні файли, оскільки робота деяких тестів залежить від наявності цих файлів:
DJANGO_SETTINGS_MODULE=weblate.settings_test ./manage.py collectstatic
Ви можете скористатися pytest для запису комплексу для перевірки локально:
pytest weblate
Запуск індивідуального тестового файлу:
pytest weblate/utils/tests/test_search.py
Підказка
Для тестів вам знадобиться сервер бази даних (PostgreSQL). Типово, Django створює окрему базу даних для запуску тестів. У назві цієї бази даних міститься префікс test_. Отже, якщо параметри налаштовано на використання weblate, для тестування буде використано базу даних test_weblate. Див. Налаштування бази даних для Weblate, щоб дізнатися більше про налаштовування.
Файл weblate/settings_test.py також використовується у середовищі неперервної інтеграції (див. Неперервна інтеграція). Його роботу можна скоригувати за допомогою змінних середовища:
export CI_DATABASE=postgresql
export CI_DB_USER=weblate
export CI_DB_PASSWORD=weblate
export CI_DB_HOST=127.0.0.1
export CI_DB_PORT=60000
export DJANGO_SETTINGS_MODULE=weblate.settings_test
Підказка
Тести також можна запускати у межах контейнера docker розробника, див. Запуск Weblate локально у Docker.
Дивись також
Див. Testing in Django, щоб дізнатися більше про запуск і написання тестів для Django.
Локальне тестування модулів Weblate¶
Перевірки буде виконано за допомогою py.test. Спершу, вам слід встановити обов’язкові складники для текстування:
uv pip install -e '.[dev]'
Далі, ви можете виконати комплекс перевірок для локальної копії сховища:
py.test
Тестовий репозиторій¶
Багато тестів у наборі тестів Weblate використовують репозиторій тестів. Репозиторій набору тестів знаходиться за адресою https://github.com/WeblateOrg/test. Скрипт scripts/pack-test-data.sh потім використовується для створення tar-архіву з репозиторієм для кожної з підтримуваних систем контролю версій. Вони зберігаються як weblate/trans/tests/data/test-base-repo.git.tar, weblate/trans/tests/data/test-base-repo.hg.tar, і weblate/trans/tests/data/test-base-repo.svn.tar у репозиторії Weblate.
Репозиторій https://github.com/WeblateOrg/test позначається тегами на момент випуску, що гарантує можливість використання тегів випуску для доступу до тестових даних, які використовувалися на момент випуску. Скрипт намагається створити якомога більше відтворюваних архівів.