mirror of
https://gh.wpcy.net/https://github.com/WeblateOrg/weblate.git
synced 2026-04-27 19:34:10 +08:00
90 lines
2.7 KiB
ReStructuredText
90 lines
2.7 KiB
ReStructuredText
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.
|
|
|
|
.. _ci-tests:
|
|
|
|
Continuous integration
|
|
++++++++++++++++++++++
|
|
|
|
Current test results can be found on `GitHub Actions`_ and coverage is reported
|
|
on `Codecov`_.
|
|
|
|
.. _GitHub Actions: https://github.com/WeblateOrg/weblate/actions
|
|
.. _Codecov: https://app.codecov.io/gh/WeblateOrg/weblate/
|
|
|
|
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 :file:`.github/workflows` directory. It
|
|
heavily uses helper scripts stored in :file:`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 :file:`scripts/test-database.sh`:
|
|
|
|
.. literalinclude:: ../../scripts/test-database.sh
|
|
:language: sh
|
|
|
|
The simple execution can look like:
|
|
|
|
.. code-block:: sh
|
|
|
|
. scripts/test-database.sh
|
|
./ci/run-migrate
|
|
./ci/run-test
|
|
./ci/run-docs
|
|
|
|
.. _local-tests:
|
|
|
|
Local testing
|
|
+++++++++++++
|
|
|
|
Before running test, please make sure test dependencies are installed. This can be done by `pip install -r requirements-dev.txt` or `pip install -e .[test]`.
|
|
|
|
To run a testsuite locally, use:
|
|
|
|
.. code-block:: sh
|
|
|
|
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 :ref:`database-setup` for setup
|
|
instructions.
|
|
|
|
The :file:`weblate/settings_test.py` is used in CI environment as well (see
|
|
:ref:`ci-tests`) and can be tuned using environment variables:
|
|
|
|
.. literalinclude:: ../../scripts/test-database.sh
|
|
:language: sh
|
|
|
|
Prior to running tests you should collect static files as some tests rely on them being present:
|
|
|
|
.. code-block:: sh
|
|
|
|
DJANGO_SETTINGS_MODULE=weblate.settings_test ./manage.py collectstatic
|
|
|
|
You can also specify individual tests to run:
|
|
|
|
.. code-block:: sh
|
|
|
|
DJANGO_SETTINGS_MODULE=weblate.settings_test ./manage.py test weblate.gitexport
|
|
|
|
.. hint::
|
|
|
|
The tests can also be executed inside developer docker container, see :ref:`dev-docker`.
|
|
|
|
.. seealso::
|
|
|
|
See :doc:`django:topics/testing/index` for more info on running and
|
|
writing tests for Django.
|