Weblate tesztcsomag és folyamatos integráció

A jelenlegi kód nagy részéhez léteznek tesztcsomagok. Növelje a lefedettséget új funkciókhoz tartozó tesztesetek hozzáadásával, és ellenőrizze azok működését.

Folyamatos integráció

A Weblate a GitHub Actions szolgáltatást használja a tesztek futtatására, a dokumentáció összeállítására, a kódellenőrzésre és egyéb feladatokra a kódminőség biztosítása érdekében.

A Codecov összegyűjti a tesztekből származó kódfedettségi adatokat.

Több CI-feladat (job) fut, amelyek különböző szempontokat ellenőriznek:

  • Unit and functional tests using pytest.

  • Documentation build and external links using Sphinx.

  • Code linting and quality assurance using ruff and pylint.

  • Code security scanning using CodeQL.

  • Code formatting using pre-commit.

  • Migrációs tesztelés minden támogatott verzióról

  • Beállítás ellenőrzése (Ellenőrzi, hogy a generált terjesztési fájlok (dist fájlok) teljesek-e, és tesztelhetők-e.)

A folyamatos integrációhoz (CI) tartozó konfiguráció a .github/workflows könyvtárban található. Ez nagymértékben támaszkodik a ci könyvtárban elhelyezett segédszkriptekre. A szkriptek manuálisan is futtathatók, de több környezeti változót igényelnek — főként a használandó Django beállításfájlt, valamint az adatbázis-kapcsolatot kell megadni. Erre példa található a scripts/test-database.sh fájlban:

# 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

Egyszerű futtatás például így nézhet ki:

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

Weblate helyi tesztelése

A tesztek futtatása előtt győződjön meg róla, hogy a tesztfüggőségek telepítve vannak. Ezt megteheti a következő paranccsal: pip install -e .[test].

Tesztelés pytest használatával

A tesztek futtatása előtt szükséges az statikus fájlok összegyűjtése is, mivel egyes tesztek ezek meglétére támaszkodnak:

DJANGO_SETTINGS_MODULE=weblate.settings_test ./manage.py collectstatic

A teljes tesztcsomag helyi futtatásához használja a pytest eszközt:

pytest weblate

Egy adott tesztfájl futtatása:

pytest weblate/utils/tests/test_search.py

Tipp

A tesztekhez szüksége lesz egy PostgreSQL adatbázis szerverre. Alapértelmezés szerint a Django egy külön adatbázist hoz létre a tesztekhez, amelynek neve test_ előtaggal kezdődik. Például ha a beállítások szerint az adatbázis neve weblate, akkor a tesztek a test_weblate nevű adatbázist fogják használni. Lásd a Adatbázis beállítása Weblate-hez részt a beállítás részleteihez.

A weblate/settings_test.py fájlt a CI környezet is használja (lásd: Folyamatos integráció), és környezeti változókon keresztül testreszabható:

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

Tipp

A tesztek a fejlesztői Docker-konténeren belül is futtathatók — lásd: Weblate futtatása helyileg Dockerben.

Lásd még

További információk Django tesztek írásáról és futtatásáról: Testing in Django.

Weblate-modulok helyi tesztelése

A teszteket a py.test eszköz végzi. Először telepíteni kell a tesztfüggőségeket:

uv pip install -e '.[dev]'

Ezután a letöltött tárolón belül lefuttathatja a tesztcsomagot:

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.