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

Huidige testresultaten zijn te vinden op GitHub Actions en de dekking wordt gerapporteerd op Codecov.

Er zijn verscheidene taken om verschillende aspecten te verifiëren:

  • Eenheidstesten

  • Bouwen van documentatie en externe koppelingen

  • Testen van migratie in alle ondersteunde uitgaven

  • Code linten

  • 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

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.