name: Unit Tests

on:
  workflow_dispatch:
  push:
    branches:
      - main
      - "release/**"
    paths:
      - "**.go"
      - "**/go.mod"
      - "**/go.sum"
  pull_request:
    paths:
      - "**.go"
      - "**/go.mod"
      - "**/go.sum"

jobs:
  test-linux:
    runs-on: ubuntu-22.04
    env:
      CTEST_OUTPUT_ON_FAILURE: True
    steps:
      - name: Checkout
        uses: actions/checkout@755da8c3cf115ac066823e79a1e1788f8940201b # v3.2.0
        with:
          ref: ${{ !github.event.pull_request.head.repo.fork && github.head_ref || '' }}

      - name: Setup Go environment
        uses: actions/setup-go@6edd4406fa81c3da01a34fa6f6343087c207a568 # v3.5.0
        with:
          go-version: "1.19.4"
          cache: true

      - name: Install Dependencies
        run: sudo apt-get update && sudo apt-get install -y libcryptsetup12 libcryptsetup-dev libvirt-dev

      - name: Create and populate build folder
        run: mkdir build && cd build && cmake ..

      - name: Unit Tests
        run: ctest -R unit
        working-directory: build
        env:
          TMPDIR: ${{ runner.temp }}

  test-darwin:
    runs-on: macos-12
    env:
      CTEST_OUTPUT_ON_FAILURE: True
    steps:
      - name: Checkout
        uses: actions/checkout@755da8c3cf115ac066823e79a1e1788f8940201b # v3.2.0
        with:
          ref: ${{ !github.event.pull_request.head.repo.fork && github.head_ref || '' }}

      - name: Setup Go environment
        uses: actions/setup-go@6edd4406fa81c3da01a34fa6f6343087c207a568 # v3.5.0
        with:
          go-version: "1.19.4"
          cache: true

      - name: CLI Unit Tests
        run: go test -race -count=3 ./cli/...

      - name: cdbg/debugd Unit Tests
        run: go test -race -count=3 ./debugd/...
