name: Tests BATS
on:
  push:
    branches:
      - master
      - main
    paths-ignore:
      - 'docs/**'
      - 'website/**'
      - 'assets/**'
      - 'backup/**'
      - '*.md'
  pull_request:
    types: [opened, synchronize, ready_for_review, reopened]
    paths-ignore:
      - 'docs/**'
      - 'website/**'
      - 'assets/**'
      - 'backup/**'
      - '*.md'

jobs:
  run-tests:
    if: github.event.pull_request.draft == false
    name: BATS test ${{ matrix.test-file }}
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        test-file: ["1-deploy", "2-deploy-with-more-options", "3-deploy-with-webhook"]
    steps:
      - name: Check out code
        uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4

      - name: Set up env vars
        run: |
          echo "GO111MODULE=on" >> $GITHUB_ENV
          echo "GO_VERSION=v$(sed -n 's/GO_VERSION=//p' config.base.env | tr -d '\n' | tr -d '"')" >> $GITHUB_ENV
          echo "HELM_VERSION=v$(sed -n 's/HELM_VERSION=//p' config.base.env | tr -d '\n' | tr -d '"')" >> $GITHUB_ENV
          echo "KIND_CLUSTER_NAME=$(sed -n 's/KIND_CLUSTER_NAME=//p' config.base.env | tr -d '\n' | tr -d '"')" >> $GITHUB_ENV
          echo "GOPATH=/home/runner/go" >> $GITHUB_ENV

      - name: Prepare go environment
        uses: actions/setup-go@0aaccfd150d50ccaeb58ebd88d36e91967a5f35b # v5
        with:
          go-version: ${{ env.GO_VERSION }}

      - name: Ensure Golang runtime dependencies
        run: make go-dependencies

      - name: Setup Bats and libs
        uses: bats-core/bats-action@e412797c46257a2dbf3775f6f6010b33ee6cb99f # 3.0.1
        with:
          support-path: "${{ github.workspace }}/.bats/bats-support"
          assert-path: "${{ github.workspace }}/.bats/bats-assert"
          detik-path: "${{ github.workspace }}/.bats/bats-detik"
          file-path: "${{ github.workspace }}/.bats/bats-file"

      - name: Kind setup
        uses: helm/kind-action@a1b0e391336a6ee6713a0583f8c6240d70863de3 # v1.12.0
        with:
          cluster_name: ${{env.KIND_CLUSTER_NAME}}

      - name: Jenkins Operator - bats tests
        env:
          BATS_LIB_PATH: "${{ github.workspace }}/.bats"
        run: BATS_TEST_PATH=${{matrix.test-file}}.bats make bats-tests
