name: unit-tests
on:
  push:
  pull_request:
  schedule:
  - cron: 0 4 * * MON,FRI
jobs:
  OS:
    runs-on: ubuntu-24.04
    permissions:
      contents: read
    strategy:
      fail-fast: false
      matrix:
        scenario:
          - apt-docker.io/amd64/ubuntu:devel
          - apt-docker.io/amd64/ubuntu:latest
          - apt-docker.io/amd64/ubuntu:rolling
          - apt-docker.io/i386/debian:testing
          - apt-docker.io/amd64/debian:testing
          - dnf-registry.fedoraproject.org/fedora:latest
          - dnf-registry.fedoraproject.org/fedora:rawhide
          - dnf-quay.io/centos/centos:stream10-development
          - alpine-docker.io/alpine
          - alpine-docker.io/i386/alpine
          - alpine@gudev-docker.io/alpine
          - nix-docker.io/nixos/nix
          # https://github.com/martinpitt/umockdev/issues/276
          # - gentoo-
        include:
          - scenario: alpine@gudev-alpine
            env: EXTRA_PACKAGES=libgudev-dev
          - scenario: dnf-registry.fedoraproject.org/fedora:latest
            env: SYSTEMD_MAIN=1

    timeout-minutes: 30
    steps:
      - name: Clone repository
        uses: actions/checkout@v5
        with:
          # need this to also fetch tags
          fetch-depth: 0

      - name: Run unit tests
        run: |
          set -eux
          scenario=${{ matrix.scenario }}
          script=${scenario%%-*}
          script=${script%@*}
          image=${scenario#*-}

          ${{ matrix.env }} BRITTLE_TESTS=1 tests/run-${script} $image
