Weblate 测试套件与持续集成

测试套件存在于多数当前代码,通过为任何新的功能添加测试情况来扩大覆盖范围,并确认其正常工作。

持续集成

Weblate 依赖 GitHub Actions 来运行测试、构建文档、代码 linting 和其他任务,以确保代码质量。

Codecov 从已运行的测试中收集代码覆盖率信息。

有几项工作来确认不同的方面:

  • 使用 pytest 的单元和功能测试。

  • 文档构建和外部链接使用 Sphinx.

  • 使用 ruffpylint 的代码 lint 和质量保证。

  • 使用 CodeQL 的代码安全扫描。

  • 可视化更改测试使用 Argos CI

  • 代码格式化使用 prek ,它是 pre-commit 框架的更快速的第三方重新实现。

  • 来自所有支持的发布版本的合并测试

  • 设置确认(确保生成的 dist 文件不丢失任何内容,并可以测试)

CI 的配置在 .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 也用在 CI 环境中(请参见 持续集成),并且可以使用环境变量调整:

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 容器内执行,请参见 在 Docker 中本地运行 Weblate

参见

运行并为 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 用来生成 tarball,其中每个受支持版本控制系统都有一个仓库。这些文件存储在 Weblate 仓库中,名称为 weblate/trans/tests/data/test-base-repo.git.tarweblate/trans/tests/data/test-base-repo.hg.tarweblate/trans/tests/data/test-base-repo.svn.tar

系统会在版本发行时给 https://github.com/WeblateOrg/test repository 打上标签,这样保证发行标签可被用来访问在发行时所用的测试数据。该脚本尝试创建尽可能多的可重复 tarball。