on: [push, pull_request]
name: build
jobs:

  test:
    strategy:
      matrix:
        go-version: [1.13.x, 1.14.x, 1.15.x, 1.16.x, 1.17.x, 1.18.x, 1.19.x, 1.20.x]
        os: [ubuntu-latest, macos-latest, windows-latest]
        targetplatform: [x86, x64]

    runs-on: ${{ matrix.os }}

    steps:

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

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

    - name: Get dependencies
      run: |
        env GO111MODULE=on go vet ./...
    - name: Build
      run: go build -v .

    - name: Test
      run: env GO111MODULE=on go test -v -timeout 30m -race -coverprofile='coverage.txt' -covermode=atomic

    - name: Codecov
      uses: codecov/codecov-action@v3
      with:
        file: coverage.txt
        flags: unittests
        name: codecov-umbrella
