Weblate テストスイートと継続的な統合

現在、ほぼすべてのコードにテストスイートがあります。新しい機能のテストケースを追加し、検査対象を増やして動作を検証します。

継続的な統合

現在のテスト結果は GitHub Actions から確認でき、検証の対象は Codecov において報告します。

さまざまな側面を検証するためのジョブ:

  • 単体テスト

  • ドキュメントの作成と外部リンク

  • 対応しているすべてのリリースからの移行テスト

  • 低品質コードの検出

  • 設定の検証(生成された dist ファイルに間違いがなく、テスト済みを保証する)

CI の構成は、.github/workflows ディレクトリにあります。 ci ディレクトリに格納されているヘルパー スクリプトを頻繁に使用します。スクリプトは手動でも実行できますが、使用する Django 設定ファイルとデータベース接続を設定するなど、環境変数の設定が必要です。scripts/test-database に記述された設定例:

# Simple way to configure test database from environment

# 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

単純な実行例:

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

ローカル テスト

テストスイートをローカルで実行するコマンド:

DJANGO_SETTINGS_MODULE=weblate.settings_test ./manage.py test

ヒント

テストには、使用するデータベース(PostgreSQL)サーバーが必要です。デフォルトでは、Django は接頭辞が test_ のデータベースのテストを実行するために、別のデータベースを作成します。そのため、weblate を使用するように設定している場合、テストには test_weblate データベースを使用します。設定方法については、Weblate のデータベース設定 を確認してください。

weblate/settings_test.py は CI 環境でも使用されます(参照: 継続的な統合)。環境変数を用いた設定方法:

# Simple way to configure test database from environment

# 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

テストを実行する前に、静的ファイルの収集が必要です。テストによっては、静的ファイルの存在に依存しているためです。静的ファイルの収集方法:

DJANGO_SETTINGS_MODULE=weblate.settings_test ./manage.py collectstatic

実行する個々のテストの指定方法:

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

ヒント

テストは、開発者の Docker コンテナ内でも実行できます。参照: Docker上でローカルに Weblate の実行

参考

Django の実行と書き込みテストの詳細については、Django におけるテスト を確認してください。