on: [push, pull_request]
name: Go Tests
jobs:
  test:
    strategy:
      matrix:
        # Modernizing Go versions for better 3.12+ compatibility and ARM stability
        go-version: ['1.21.x', '1.22.x', '1.23.x']
        platform: [ubuntu-latest, macos-latest, windows-latest]
    runs-on: ${{ matrix.platform }}
    steps:
    - name: Install Go
      uses: actions/setup-go@v5
      with:
        go-version: ${{ matrix.go-version }}
    - name: Set git on win to use LF
      run: |
        git config --global core.autocrlf false
        git config --global core.eol lf
    - name: Checkout code
      uses: actions/checkout@v4
    - name: Test
      run: go test -v ./...
      env:
        ENRY_DEBUG: 1

  test-oniguruma:
    strategy:
      matrix:
        go-version: ['1.21.x']
    runs-on: ubuntu-latest
    env:
      ONIGURUMA_VERSION: 6.9.4
    steps:
    - name: Install libonig5
      run: |
        wget "http://archive.ubuntu.com/ubuntu/pool/universe/libo/libonig/libonig5_${ONIGURUMA_VERSION}-1_amd64.deb"
        sudo dpkg -i "libonig5_${ONIGURUMA_VERSION}-1_amd64.deb"
        wget "http://archive.ubuntu.com/ubuntu/pool/universe/libo/libonig/libonig-dev_${ONIGURUMA_VERSION}-1_amd64.deb"
        sudo dpkg -i "libonig-dev_${ONIGURUMA_VERSION}-1_amd64.deb"

    - name: Install Go
      uses: actions/setup-go@v5
      with:
        go-version: ${{ matrix.go-version }}

    - name: Checkout code
      uses: actions/checkout@v4

    - name: Test
      run: go test -v -tags ${GO_TAGS} ./...
      env:
        GO_TAGS: oniguruma
