name: ci

on:
  push:
    branches: [ main ]
  pull_request:
    branches: [ main ]

jobs:

  build:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        goVer: ['1.23', '1.24']
    steps:
    - name: Checkout Repo
      uses: actions/checkout@v4
  
    - name: Set up Go
      uses: actions/setup-go@v5
      with:
        go-version: ${{ matrix.goVer }}
       
    - name: Test with Coverage
      if: ${{ matrix.goVer == '1.23' }}
      run: go test -coverpkg=./... -v -short -race -coverprofile=coverage1.txt -covermode=atomic ./...
      env:
        GODEBUG: x509sha1=1

    - name: Test Generic with Coverage
      if: ${{ matrix.goVer == '1.23' }}
      run: go test -coverpkg=./... -v -short -tags purego  -coverprofile=coverage2.txt -covermode=atomic ./...      
      env:
        GODEBUG: x509sha1=1

    - name: Upload coverage to Codecov
      if: ${{ matrix.goVer == '1.23' }}
      uses: codecov/codecov-action@v5
      with:
        files: ./coverage1.txt,./coverage2.txt
      env:
        CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
  
    - name: Test Force SM4 Single Block with AES-NI
      run: go test -short ./sm4/...      
      env:
        FORCE_SM4BLOCK_AESNI: 1

    - name: Test only
      if: ${{ matrix.goVer != '1.23' }}
      run: go test -short ./...
      env:
        GODEBUG: x509sha1=1

    - name: Test Generic only
      if: ${{ matrix.goVer != '1.23' }}
      run: go test -short -tags purego ./...      
      env:
        GODEBUG: x509sha1=1

    - name: Test Plugin only
      if: ${{ matrix.goVer == '1.23' }}
      run: go test -short -tags plugin ./...      
      env:
        GODEBUG: x509sha1=1
