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.