Test #2353
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Run unit tests | |
name: Test | |
on: | |
push: | |
branches: | |
- master | |
- develop | |
pull_request: | |
schedule: | |
- cron: '0 0 * * *' | |
env: | |
FAF_DB_VERSION: v133 | |
FLYWAY_VERSION: 7.5.4 | |
jobs: | |
# Tests | |
unit-test: | |
runs-on: ubuntu-latest | |
services: | |
faf-db: | |
image: mariadb:10.6 | |
ports: | |
- 3306:3306 | |
options: >- | |
--health-cmd "mysqladmin ping --silent" | |
--health-interval 10s | |
--health-timeout 5s | |
--health-retries 5 | |
env: | |
MYSQL_ROOT_PASSWORD: banana | |
MYSQL_DATABASE: faf | |
MYSQL_USER: faf-python-server | |
MYSQL_PASSWORD: banana | |
faf-rabbitmq: | |
image: rabbitmq:3.9-alpine | |
ports: | |
- 5672:5672 | |
options: >- | |
--name faf-rabbitmq | |
--health-cmd "rabbitmq-diagnostics check_running --silent" | |
--health-interval 10s | |
--health-timeout 5s | |
--health-retries 5 | |
env: | |
RABBITMQ_PID_FILE: /var/lib/rabbitmq/pid | |
RABBITMQ_DEFAULT_USER: admin | |
RABBITMQ_DEFAULT_PASS: banana | |
RABBITMQ_DEFAULT_VHOST: / | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Cache hypothesis examples | |
uses: actions/cache@v3 | |
with: | |
path: .hypothesis | |
key: .hypothesis | |
- name: Setup Python | |
uses: actions/setup-python@v4 | |
with: | |
python-version: '3.10' | |
- name: Run flyway db migrations | |
env: | |
FLYWAY_URL: jdbc:mysql://localhost/faf?useSSL=false | |
FLYWAY_USER: root | |
FLYWAY_PASSWORD: banana | |
FLYWAY_LOCATIONS: filesystem:db/migrations | |
run: | | |
git clone --depth 1 --branch ${FAF_DB_VERSION} https://github.com/FAForever/db | |
wget -qO- https://repo1.maven.org/maven2/org/flywaydb/flyway-commandline/${FLYWAY_VERSION}/flyway-commandline-${FLYWAY_VERSION}-linux-x64.tar.gz | tar xz | |
flyway-${FLYWAY_VERSION}/flyway migrate | |
- name: Setup RabbitMQ | |
run: ./.github/workflows/scripts/init-rabbitmq.sh | |
- name: Install dependencies with pipenv | |
run: | | |
pip install pipenv==2023.4.20 | |
pipenv sync --dev | |
pipenv run pip install pytest-github-actions-annotate-failures | |
- name: Run tests | |
if: ${{ github.event_name != 'schedule' }} | |
run: pipenv run tests --cov-report=xml --color=yes -m "" | |
- name: Run hypothesis tests with many examples | |
if: ${{ github.event_name == 'schedule' }} | |
run: pipenv run tests -m "hypothesis" --hypothesis-profile nightly | |
- name: Report coverage | |
if: ${{ github.event_name != 'schedule' }} | |
uses: codecov/codecov-action@v4 | |
with: | |
token: ${{ secrets.CODECOV_TOKEN }} | |
files: coverage.xml | |
fail_ci_if_error: true | |
- name: Check documentation | |
run: PYTHONWARNINGS='error::UserWarning' pipenv run pdoc3 server >/dev/null | |
docker-build: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Build docker image | |
run: docker build --build-arg GITHUB_REF -t test_image . | |
- name: Test image | |
run: | | |
docker run --rm -d -p 8001:8001 test_image | |
nc -z localhost 8001 |