name: Tests

on:
  - push
  - pull_request

jobs:
  test:
    name: Go tests
    runs-on: ubuntu-latest
    container:
      image: node:16-bookworm-slim
    steps:
      - name: Enable backports
        run: >-
          echo 'deb http://deb.debian.org/debian bookworm-backports main' >> /etc/apt/sources.list.d/backports.list
        if: ${{ runner.os == 'Linux' }}

      - name: Ensure environment
        run: >-
          apt-get update && apt-get install -y curl wget sudo libxml2
        if: ${{ runner.os == 'Linux' }}

      - name: Get dependencies
        uses: awalsh128/cache-apt-pkgs-action@latest
        with:
          packages: acl git gcc pkg-config libwayland-dev wayland-protocols/bookworm-backports libxcb1-dev libacl1-dev
          version: 1.0
          #execute_install_scripts: true
        if: ${{ runner.os == 'Linux' }}

      - name: Checkout
        uses: actions/checkout@v4
        with:
          fetch-depth: 0

      - name: Setup go
        uses: https://github.com/actions/setup-go@v5
        with:
          go-version: '>=1.23.0'

      - name: Go generate
        run: >-
          go generate ./...

      - name: Run tests
        run: >-
          go test ./...

      - name: Build for test
        id: build-test
        run: >-
          FORTIFY_VERSION="$(git rev-parse --short HEAD)"
          bash -c './dist/release.sh &&
          echo "rev=$FORTIFY_VERSION" >> $GITHUB_OUTPUT'

      - name: Upload test build
        uses: actions/upload-artifact@v3
        with:
          name: "fortify-${{ steps.build-test.outputs.rev }}"
          path: dist/fortify-*
          retention-days: 1