name: unit-tests on: push: branches: [ "main" ] paths-ignore: - '**/*.md' pull_request: branches: [ "main" ] paths-ignore: - '**/*.md' permissions: contents: read defaults: run: shell: bash jobs: unit-tests: timeout-minutes: 30 strategy: fail-fast: false matrix: os: [ubuntu-latest, windows-latest, macos-latest] python-version: ["3.8.18", "3.9.18", "3.10.13", "3.11.5", "3.12.0"] # Windows is a bit behind on Python version availability in Github exclude: - os: windows-latest python-version: "3.10.13" - os: windows-latest python-version: "3.9.18" - os: windows-latest python-version: "3.8.18" include: - os: windows-latest python-version: "3.10.11" - os: windows-latest python-version: "3.9.13" - os: windows-latest python-version: "3.8.10" runs-on: ${{ matrix.os }} # Service containers to run with `runner-job` services: # Label used to access the service container redis: image: ${{ matrix.os == 'ubuntu-latest' && 'redis' || '' }} # Set health checks to wait until redis has started options: >- --health-cmd "redis-cli ping" --health-interval 10s --health-timeout 5s --health-retries 5 ports: # Maps port 6379 on service container to the host - 6379:6379 steps: - uses: actions/checkout@v4 - uses: ./.github/actions/setup_build_env with: python-version: ${{ matrix.python-version }} run-poetry-install: true create-venv-at-path: .venv - name: Run unit tests run: | export PYTHONUNBUFFERED=1 poetry run pytest tests --cov --no-cov-on-fail --cov-report= - name: Run unit tests w/ redis if: ${{ matrix.os == 'ubuntu-latest' }} run: | export PYTHONUNBUFFERED=1 export REDIS_URL=localhost:6379 poetry run pytest tests --cov --no-cov-on-fail --cov-report= - run: poetry run coverage html