Weblate testsuite en doorlopende integratie¶
Testsuites bestaan voor de meeste huidige code, verhogen dekking door toevoegen van testgevallen voor nieuwe functionaliteit, en verifiëren dat het werkt.
Doorlopende integratie¶
Weblate vertrouwt op GitHub Actions om testen uit te voeren, documentatie te bouwen, uitpluizen van code en ander taken om de kwaliteit van de code te verzekeren.
Codecov verzamelt de informatie over de bedekking van de code uit de testen die we uitvoeren.
Er zijn verscheidene taken om verschillende aspecten te verifiëren:
Unit and functional tests using pytest.
Documentation build and external links using Sphinx.
Code security scanning using CodeQL.
Code formatting using pre-commit.
Testen van migratie in alle ondersteunde uitgaven
Verificatie opstelling (zorgt ervoor dat gegenereerde bestanden voor de distributie niets missen en kunnen worden getest)
De configuratie voor de CI staat in de map .github/workflows. Het gebruikt in hoge mate hulpscripts die zijn opgeslagen in de map ci. De scripts kunnen ook handmatig worden uitgevoerd, maar zij vereisen verscheidene omgevingsvariabelen, die meestal het te gebruiken instellingenbestand voor Django definieert en de verbinding naar de database test. De voorbeelddefinitie daarvan staat in 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
De eenvoudige uitvoering kan er uitzien als:
source scripts/test-database.sh
./ci/run-migrate
./ci/run-test
./ci/run-docs
Lokaal testen van Weblate¶
Zorg ervoor, voor het uitvoeren van testen, dat de afhankelijkheden voor testen zijn geïnstalleerd. Dat kan worden gedaan met pip install -e .[test].
Testen met pytest¶
Voorafgaande aan het testen zou u statische bestanden moeten verzamelen, omdat enkele testen erop vertrouwen dat die aanwezig zijn:
DJANGO_SETTINGS_MODULE=weblate.settings_test ./manage.py collectstatic
U kunt pytest gebruiken om een testsuite lokaal uit te voeren:
pytest weblate
Uitvoeren van een individueel testbestand:
pytest weblate/utils/tests/test_search.py
Hint
U zult een databaseserver (PostgreSQL) nodig hebben om te gebruiken voor de testen. Standaard maakt Django een afzonderlijke database, om testen mee uit te voeren, met het voorvoegsel test_, dus in het geval uw instellingen zijn geconfigureerd om weblate te gebruiken, zullen de testen de database test_weblate gebruiken. Bekijk Instellingen database voor Weblate voor instructies voor het instellen.
Het bestand weblate/settings_test.py wordt ook gebruikt in de omgeving van CI (bekijk Doorlopende integratie) en kan fijn worden afgestemd met omgevingsvariabelen:
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
Hint
De testen kunnen ook worden uitgevoerd binnen de Docker container voor ontwikkeling, bekijk Weblate lokaal in Docker uitvoeren.
Zie ook
Bekijk Testing in Django voor meer informatie over het uitvoeren en schrijven van testen voor Django.
Lokaal testen van modules voor Weblate¶
De testen worden uitgevoerd met py.test. Eerst moet u vereisten voor de testen installeren:
uv pip install -e '.[dev]'
U kunt dan de testsuite uitvoeren in de checkout van de opslagruimte:
py.test
Testing repository¶
Many of the tests in the Weblate test suite use the test repository. The test
suite repository is maintained at https://github.com/WeblateOrg/test. The
script scripts/pack-test-data.sh is then used to generate a tarball
with a repository for each of the supported version control systems. These are
stored as weblate/trans/tests/data/test-base-repo.git.tar,
weblate/trans/tests/data/test-base-repo.hg.tar, and
weblate/trans/tests/data/test-base-repo.svn.tar in the Weblate
repository.
The https://github.com/WeblateOrg/test repository is tagged at the release time, which ensures that the release tags can be used to access test data used at the release time. The script tries to create reproducible tarballs as much as possible.