---
name: Tests

on:
  push:
    tags-ignore:
      - '**'
    branches:
      - main
  pull_request:
    branches:
      - main

jobs:
  build:
    name: Tests
    runs-on: ubuntu-latest
    steps:
    - name: Set up Go
      uses: actions/setup-go@v5
      with:
        go-version: stable

    - name: Check out code into the Go module directory
      uses: actions/checkout@v4

    - name: Build Go Code
      run: |
        go build ./...

    - name: Run Go Unit Tests
      run: |
        go install -mod=mod github.com/onsi/ginkgo/v2/ginkgo
        ginkgo run \
          --coverprofile=unit.coverprofile \
          --randomize-all \
          --randomize-suites \
          --fail-on-pending \
          --keep-going \
          --compilers=2 \
          --race \
          --trace \
          ./...

    - name: Upload Code Coverage Profile
      uses: codecov/codecov-action@v5
      env:
        CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
      with:
        files: unit.coverprofile
        flags: unittests
        fail_ci_if_error: true
        verbose: false
