Rangkaian pengujian Weblate dan integrasi berkelanjutan

Rangkaian Pengujian tersedia untuk sebagian besar kode saat ini, tingkatkan cakupan dengan menambahkan kasus pengujian untuk setiap fungsionalitas baru, dan verifikasi apakah fungsionalitas tersebut berfungsi.

Integrasi berkelanjutan

Weblate mengandalkan GitHub Actions untuk menjalankan pengujian, membuat dokumentasi, memeriksa kode, dan tugas lain untuk memastikan kualitas kode.

Codecov mengumpulkan informasi cakupan kode dari pengujian yang dijalankan.

Ada beberapa pekerjaan untuk memverifikasikan berbagai aspek:

  • Pengujian unit dan fungsional menggunakan pytest.

  • Dokumentasi pembuatan dan tautan eksternal menggunakan Sphinx.

  • Pemeriksaan kode dan jaminan kualitas menggunakan ruff dan pylint.

  • Pemindaian keamanan kode menggunakan CodeQL.

  • Visual changes testing is utilizing Argos CI.

  • Code formatting using prek, a faster third-party reimplementation of the pre-commit framework.

  • Pengujian migrasi dari semua rilis yang didukung

  • Verifikasi pengaturan (memastikan bahwa berkas dist yang dihasilkan tidak melewatkan apa pun dan dapat diuji)

Konfigurasi untuk CI ada di direktori .github/workflows. CI banyak menggunakan skrip pembantu yang tersimpan di direktori ci. Skrip ini juga dapat dieksekusi secara manual, tetapi memerlukan beberapa variabel lingkungan, yang sebagian besar mendefinisikan berkas pengaturan Django untuk digunakan dan menguji sambungan basis data. Contoh definisinya ada di scripts/test-database.sh:

The Selenium screenshot tests in weblate/trans/tests/test_selenium.py serve two purposes. They generate images for visual change testing in CI, and the same images are converted into documentation screenshots by make -C docs update-screenshots. Keep screenshot fixtures close to real rendered pages so CI catches UI regressions. When a screenshot includes volatile runtime data, prefer deterministic server-side test inputs over post-render DOM changes.

# 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

Eksekusi sederhananya dapat terlihat seperti ini:

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

Pengujian lokal Weblate

Before running tests, please ensure development dependencies are installed:

uv sync --all-extras --dev

Pengujian menggunakan pytest

Sebelum menjalankan pengujian, Anda harus mengumpulkan berkas statis karena beberapa pengujian bergantung pada keberadaan berkas tersebut:

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

Menjalankan berkas uji individual:

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

Petunjuk

Anda memerlukan server basis data (PostgreSQL) untuk pengujian. Secara bawaan, Django membuat basis data terpisah untuk menjalankan pengujian dengan awalan test_. Jadi, jika pengaturan Anda dikonfigurasikan untuk menggunakan weblate, pengujian akan menggunakan basis data test_weblate. Lihat Pengaturan basis data untuk Weblate untuk petunjuk pengaturan.

weblate/settings_test.py juga digunakan dalam lingkungan CI (lihat Integrasi berkelanjutan) dan dapat diatur menggunakan variabel lingkungan:

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

Petunjuk

Pengujian juga dapat dijalankan di dalam kontainer docker pengembang, lihat Menjalankan Weblate secara lokal di Docker.

Lihat juga

Lihat Percobaan di Django untuk informasi lebih lanjut tentang menjalankan dan menulis pengujian untuk Django.

Pengujian lokal modul Weblate

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

uv sync --all-extras --dev

Anda kemudian dapat menjalankan rangkaian pengujian di checkout repositori:

uv run pytest

Repositori pengujian

Banyak pengujian dalam rangkaian pengujian Weblate menggunakan repositori pengujian. Repositori rangkaian pengujian ini dikelola di https://github.com/WeblateOrg/test. Skrip scripts/pack-test-data.sh kemudian digunakan untuk menghasilkan tarball berisi repositori untuk setiap sistem kontrol versi yang didukung. Tarball ini disimpan sebagai weblate/trans/tests/data/test-base-repo.git.tar, weblate/trans/tests/data/test-base-repo.hg.tar, dan weblate/trans/tests/data/test-base-repo.svn.tar di repositori Weblate.

Repositori https://github.com/WeblateOrg/test ditag pada waktu rilis, yang memastikan bahwa tag rilis dapat digunakan untuk mengakses data uji yang digunakan pada waktu rilis. Skrip ini mencoba membuat tarball yang dapat direproduksi sebanyak mungkin.