diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml index 321efae..09f4fea 100644 --- a/.gitea/workflows/ci.yml +++ b/.gitea/workflows/ci.yml @@ -9,10 +9,24 @@ on: jobs: test: runs-on: ubuntu-latest - container: python:3.12-slim + # NOTE: no `container:` here. A `python:*-slim` image ships no Node.js, so the + # JavaScript `actions/checkout` action could not run and every job failed at + # the first step. The runner's default image already provides Node; we install + # the Python toolchain explicitly with actions/setup-python. steps: - uses: actions/checkout@v4 - - name: Install dependencies + - uses: actions/setup-python@v5 + with: + python-version: '3.12' + - name: Install system dependencies (WeasyPrint / emoji fonts) + run: | + SUDO="" + if command -v sudo >/dev/null 2>&1; then SUDO="sudo"; fi + $SUDO apt-get update + $SUDO apt-get install -y --no-install-recommends \ + libpango-1.0-0 libpangoft2-1.0-0 libharfbuzz0b libffi-dev \ + libjpeg-dev libopenjp2-7 libcairo2 fonts-noto-color-emoji + - name: Install Python dependencies run: pip install -r requirements.txt pytest pytest-cov - name: Run tests with coverage env: @@ -21,8 +35,8 @@ jobs: APP_SECRET_KEY: ci-test-key run: python -m pytest tests/ -v --tb=short --cov=app --cov-report=term - name: Coverage summary - run: | - python -m pytest tests/ --cov=app --cov-report=term 2>&1 | tail -20 + if: always() + run: coverage report -m || true docker: runs-on: ubuntu-latest