Juego de pruebas de Weblate e integración continua

Existe un conjunto de pruebas para muchos de los códigos actuales, incremente cobertura por añadir casos de pruebas para cualquier funcionalidad nueva, y verifica que esto funcione.

Integración continua

Weblate se basa en Acciones GitHub para ejecutar pruebas, crear documentación, revisar código y realizar otras tareas para garantizar la calidad del código.

Codecov recolecta información de cobertura del código desde las pruebas que fueron ejecutadas.

Hay varias tareas para verificar aspectos diferentes:

  • Pruebas unitarias y funcionales utilizando pytest.

  • Documentación de compilación y enlaces externos utilizando Sphinx.

  • Control de calidad y revisión de código mediante ruff y pylint.

  • Digitalización de seguridad de código usando CodeQL.

  • Los cambios visuales de pruebas utilizan Argos CI.

  • Formato de código utilizando prek, una reimplementación de terceros más rápida del framework pre-commit.

  • Pruebas de migración desde todas las versiones mantenidas

  • Verificación de configuración (garantiza que los archivos dist generados no pierdan nada y se puedan probar)

La configuración para la CI se encuentra en el directorio .github/workflows. Utiliza en gran medida scripts auxiliares almacenados en el directorio ci. Los script también se pueden ejecutar manualmente, pero requieren varias variables de entorno, principalmente para definir el archivo de configuración de Django que se va a utilizar y probar la conexión a la base de datos. El ejemplo de definición se encuentra en 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

La única ejecución puede parecer a esto:

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

Pruebas locales de Weblate

Before running tests, please ensure development dependencies are installed:

uv sync --all-extras --dev

Pruebas utilizando pytest

Previo a ejecutar pruebas recogería archivos de estadísticas como algunas pruebas confían en ellas estando presentes:

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

Ejecutar un archivo de test individual:

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

Consejo

Necesitarás un servidor de base de datos (PostgreSQL) para ser utilizada para pruebas. Por defecto Django crea bases de datos separadas para ejecutar pruebas con el prefijo test_, tal que en caso que su ajustes estén configurados para utilizar weblate, las pruebas utilizarán la base de datos test_weblate. Consulte Configuración de base de datos para Weblate para instrucciones de configuración.

El weblate/settings_test.py es utilizado en el entorno CI también (consulte Integración continua) y puede ser ajustado utilizando variables del entorno:

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

Consejo

Las pruebas también se pueden ejecutar dentro del contenedor Docker del desarrollador, consulte Ejecuta Weblate localmente en Docker.

Ver también

Consulte Testing in Django para obtener más información sobre como ejecutar y escribir pruebas para Django.

Pruebas locales de módulos de Weblate

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

uv sync --all-extras --dev

Entonces puede ejecutar la suit de test en el checkout del repositorio:

uv run pytest

Probar repositorio

Muchas de las pruebas del conjunto de pruebas de Weblate utilizan el repositorio de pruebas. Este repositorio se encuentra en https://github.com/WeblateOrg/test. El script scripts/pack-test-data.sh se utiliza para generar un archivo tar con un repositorio para cada uno de los sistemas de control de versiones compatibles. Estos se almacenan como weblate/trans/tests/data/test-base-repo.git.tar, weblate/trans/tests/data/test-base-repo.hg.tar y weblate/trans/tests/data/test-base-repo.svn.tar en el repositorio de Weblate.

El repositorio https://github.com/WeblateOrg/test se etiqueta en el momento del lanzamiento, lo que garantiza que las etiquetas de lanzamiento se puedan usar para acceder a los datos de prueba utilizados en el momento del lanzamiento. El script intenta crear archivos tar lo más reproducibles posible.