Skip to content

Latest commit

 

History

History
88 lines (57 loc) · 2.57 KB

tests.rst

File metadata and controls

88 lines (57 loc) · 2.57 KB

Weblate testsuite and continuous integration

Testsuites exist for most of the current code, increase coverage by adding testcases for any new functionality, and verify that it works.

Continuous integration

Current test results can be found on GitHub Actions and coverage is reported on Codecov.

There are several jobs to verify different aspects:

  • Unit tests
  • Documentation build and external links
  • Migration testing from all supported releases
  • Code linting
  • Setup verification (ensures that generated dist files do not miss anything and can be tested)

The configuration for the CI is in .github/workflows directory. It heavily uses helper scripts stored in ci directory. The scripts can be also executed manually, but they require several environment variables, mostly defining Django settings file to use and database connection. The example definition of that is in scripts/test-database.sh:

../../scripts/test-database.sh

The simple execution can look like:

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

Local testing

To run a testsuite locally, use:

DJANGO_SETTINGS_MODULE=weblate.settings_test ./manage.py test

Hint

You will need a database (PostgreSQL) server to be used for tests. By default Django creates separate database to run tests with test_ prefix, so in case your settings is configured to use weblate, the tests will use test_weblate database. See database-setup for setup instructions.

The weblate/settings_test.py is used in CI environment as well (see ci-tests) and can be tuned using environment variables:

../../scripts/test-database.sh

Prior to running tests you should collect static files as some tests rely on them being present:

DJANGO_SETTINGS_MODULE=weblate.settings_test ./manage.py collectstatic

You can also specify individual tests to run:

DJANGO_SETTINGS_MODULE=weblate.settings_test ./manage.py test weblate.gitexport

Hint

The tests can also be executed inside developer docker container, see dev-docker.

See django:topics/testing/index for more info on running and writing tests for Django.