diff --git a/.gitea/workflows/test.yaml b/.gitea/workflows/test.yaml new file mode 100644 index 0000000..c73e531 --- /dev/null +++ b/.gitea/workflows/test.yaml @@ -0,0 +1,72 @@ +name: Run tests +on: + pull_request: + push: + workflow_dispatch: + inputs: + debug_sql: + description: "Print SQL statements executed by SQLAlchemy during tests" + type: boolean + default: True + +env: + DEBUG_SQL: ${{ inputs.debug_sql || true }} + +jobs: + run-tests: + runs-on: debian-latest + steps: + - uses: actions/checkout@v6 + + - name: Install uv + uses: astral-sh/setup-uv@v7 + + - name: Install dependencies + run: uv sync --locked --group test + + - name: Run tests + continue-on-error: true + run: | + set -euo pipefail + set -x + + PYTEST_ARGS=( + -vv + ) + + if [ "$DEBUG_SQL" == "true" ]; then + PYTEST_ARGS+=( + --debug-sql + ) + fi + + uv run -- pytest "${PYTEST_ARGS[@]}" + + - name: Generate badge + run: uv run -- coverage-badge -o htmlcov/badge.svg + + - name: Upload test report + uses: https://git.pvv.ntnu.no/Projects/rsync-action@v1 + with: + source: ./test-report/ + target: ${{ gitea.ref_name }}/test-report/ + username: gitea-web + ssh-key: ${{ secrets.WEB_SYNC_SSH_KEY }} + host: pages.pvv.ntnu.no + known-hosts: "pages.pvv.ntnu.no ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIH2QjfFB+city1SYqltkVqWACfo1j37k+oQQfj13mtgg" + + - name: Upload coverage report + uses: https://git.pvv.ntnu.no/Projects/rsync-action@v1 + with: + source: ./htmlcov/ + target: ${{ gitea.ref_name }}/coverage/ + username: gitea-web + ssh-key: ${{ secrets.WEB_SYNC_SSH_KEY }} + host: pages.pvv.ntnu.no + known-hosts: "pages.pvv.ntnu.no ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIH2QjfFB+city1SYqltkVqWACfo1j37k+oQQfj13mtgg" + + - name: Check failure + if: failure() + run: | + echo "Tests failed" + exit 1