Комплекс тестування Weblate і неперервна інтеграція¶
Комплекси тестування існують для більшої частини поточного коду. Збільште покриття додаванням тестувань для будь-яких нових функціональних можливостей і перевірте, чи працює тестування.
Неперервна інтеграція¶
Weblate покладається на GitHub Actions для запуску тестів, створення документації, лінтування коду та інших завдань, що забезпечують якість коду.
Codecov збирає інформацію про покриття коду з проведених тестів.
Передбачено декілька завдань для перевірки різних аспектів:
Модульні та функціональні тести з використанням pytest.
Збірка документації та зовнішні посилання за допомогою Sphinx.
Лінтинг коду та забезпечення якості за допомогою ruff <https://docs.astral.sh/ruff/>`_ і пілінта.
Сканування безпеки коду за допомогою CodeQL.
Для тестування візуальних змін використовується Argos CI.
Форматування коду за допомогою prek — швидшої сторонньої реалізації фреймворку 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 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¶
Before running tests, please ensure development dependencies are installed:
uv sync --all-extras --dev
Тестування за допомогою pytest¶
Перш ніж запускати тести, вам слід зібрати статичні файли, оскільки робота деяких тестів залежить від наявності цих файлів:
DJANGO_SETTINGS_MODULE=weblate.settings_test uv run ./manage.py collectstatic --noinput
You can use pytest to run the test suite locally:
uv run pytest
Запуск індивідуального тестового файлу:
uv run pytest weblate/utils/tests/test_search.py
Підказка
Для тестів вам знадобиться сервер бази даних (PostgreSQL). Типово, Django створює окрему базу даних для запуску тестів. У назві цієї бази даних міститься префікс test_. Отже, якщо параметри налаштовано на використання weblate, для тестування буде використано базу даних test_weblate. Див. Налаштування бази даних для Weblate, щоб дізнатися більше про налаштовування.
Файл weblate/settings_test.py також використовується у середовищі неперервної інтеграції (див. Неперервна інтеграція). Його роботу можна скоригувати за допомогою змінних середовища:
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¶
The tests are executed using pytest. First you need to install development dependencies:
uv sync --all-extras --dev
Далі, ви можете виконати комплекс перевірок для локальної копії сховища:
uv run pytest
Тестовий репозиторій¶
Багато тестів у наборі тестів 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 позначається тегами на момент випуску, що гарантує можливість використання тегів випуску для доступу до тестових даних, які використовувалися на момент випуску. Скрипт намагається створити якомога більше відтворюваних архівів.