Weblate-Testsuite und kontinuierliche Integration

Für den größten Teil des aktuellen Codes gibt es bereits Testsuiten. Erhöhen Sie die Erfassung, indem Sie Testfälle für neue Funktionen hinzufügen, und überprüfen Sie, ob diese funktionieren.

Kontinuierliche Integration

Weblate setzt auf GitHub Actions, um Tests auszuführen, Dokumentationen zu erstellen, Codeanalyse und andere Aufgaben zum Sicherstellen der Codequalität durchzuführen.

Codecov sammelt die Informationen zur Codeerfassung der durchgeführten Tests.

Es gibt mehrere Aufgaben, um verschiedene Aspekte zu überprüfen:

  • Einheiten- und Funktionstests mit pytest.

  • Erstellen der Dokumentation und externer Links mit Sphinx.

  • Codeanalyse und Qualitätssicherung mit ruff und pylint.

  • Code-Sicherheitsscan mit CodeQL.

  • Das Testen visueller Änderungen erfolgt mit Argos CI.

  • Code-Formatierung mit prek, einer schnelleren Drittanbieter-Reimplementierung des pre-commit-Frameworks.

  • Migrationstests von allen unterstützten Versionen

  • Überprüfung der Einrichtung (stellt sicher, dass die generierten Distributionsdateien keine Fehler enthalten und getestet werden können)

Die CI-Konfiguration befindet sich im Verzeichnis .github/workflows. Es verwendet hauptsächlich Hilfsskripte, die im Verzeichnis ci gespeichert sind. Die Skripte können auch manuell ausgeführt werden, benötigen aber mehrere Umgebungsvariablen, hauptsächlich für die Definition der zur verwendeten Django-Einstellungsdatei und dem Test der Datenbankverbindung. Die Beispiel-Definition dafür befindet sich 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 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

Die einfache Ausführung kann wie folgt aussehen:

source scripts/test-database.sh
./ci/run-migrate
./ci/run-test
./ci/run-docs

Weblate lokal testen

Before running tests, please ensure development dependencies are installed:

uv sync --all-extras --dev

Mit pytest testen

Vor der Durchführung von Tests sollten Sie statische Dateien sammeln, da einige Tests auf deren Vorhandensein angewiesen sind:

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

Ausführen einer einzelnen Testdatei:

uv run pytest weblate/utils/tests/test_search.py

Hinweis

Sie benötigen einen Datenbankserver (PostgreSQL), der für die Tests verwendet wird. Standardmäßig erstellt Django eine separate Datenbank, um Tests mit dem Präfix test_ auszuführen. Falls Ihre Einstellungen also so konfiguriert sind, dass weblate verwendet wird, werden die Tests die Datenbank test_weblate verwenden. Siehe Datenbankeinrichtung für Weblate für Anweisungen zur Einrichtung.

Die weblate/settings_test.py wird auch in der CI-Umgebung verwendet (siehe Kontinuierliche Integration) und kann mit Umgebungsvariablen angepasst werden:

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

Hinweis

Die Tests können auch innerhalb eines Entwickler-Docker-Containers ausgeführt werden, siehe Weblate lokal in Docker ausführen.

Siehe auch

Siehe Testing in Django für weitere Informationen zum Ausführen und Schreiben von Tests für Django.

Weblate-Module lokal testen

The tests are executed using pytest. First you need to install development dependencies:

uv sync --all-extras --dev

Sie können dann die Testsuite im Repository-Checkout ausführen:

uv run pytest

Test-Repository

Viele der Tests in der Weblate-Testsuite verwenden das Test-Repository. Das Repository für die Testsuite wird unter https://github.com/WeblateOrg/test verwaltet. Mit dem Skript scripts/pack-test-data.sh wird dann ein Tarball mit einem Repository für jede der unterstützten Versionsverwaltungen erzeugt. Diese werden als weblate/trans/tests/data/test-base-repo.git.tar, weblate/trans/tests/data/test-base-repo.hg.tar und weblate/trans/tests/data/test-base-repo.svn.tar im Weblate-Repository gespeichert.

Das Repository https://github.com/WeblateOrg/test wird zum Veröffentlichungszeitpunkt getaggt, wodurch sichergestellt wird, dass die Release-Tags für den Zugriff auf die zum Veröffentlichungszeitpunkt verwendeten Testdaten verwendet werden können. Das Skript versucht, so weit wie möglich reproduzierbare Tarballs zu erstellen.