name: 'Run go-redis tests'
description: 'Runs go-redis tests against different Redis versions and configurations'
inputs:
  go-version:
    description: 'Go version to use for running tests'
    default: '1.23'
  redis-version:
    description: 'Redis version to test against'
    required: true
runs:
  using: "composite"
  steps:
    - name: Set up ${{ inputs.go-version }}
      uses: actions/setup-go@v5
      with:
        go-version: ${{ inputs.go-version }}

    - name: Setup Test environment
      env:
        REDIS_VERSION: ${{ inputs.redis-version }}
        CLIENT_LIBS_TEST_IMAGE: "redislabs/client-libs-test:${{ inputs.redis-version }}"
      run: |
        set -e
        redis_version_np=$(echo "$REDIS_VERSION" | grep -oP '^\d+.\d+')
        
        # Mapping of redis version to redis testing containers
        declare -A redis_version_mapping=(
          ["8.0.x"]="8.0.2"
          ["7.4.x"]="rs-7.4.0-v5"
          ["7.2.x"]="rs-7.2.0-v17"
        )
        
        if [[ -v redis_version_mapping[$REDIS_VERSION] ]]; then
          echo "REDIS_VERSION=${redis_version_np}" >> $GITHUB_ENV
          echo "REDIS_IMAGE=redis:${{ inputs.redis-version }}" >> $GITHUB_ENV
          echo "CLIENT_LIBS_TEST_IMAGE=redislabs/client-libs-test:${redis_version_mapping[$REDIS_VERSION]}" >> $GITHUB_ENV
        else
          echo "Version not found in the mapping."
          exit 1
        fi
        sleep 10 # wait for redis to start
      shell: bash
    - name: Set up Docker Compose environment with redis ${{ inputs.redis-version }}
      run: |
        make docker.start
      shell: bash
    - name: Run tests
      env:
        RCE_DOCKER: "true"
        RE_CLUSTER: "false"
      run: |
        make test.ci
      shell: bash
