name: test
on:
  pull_request:
    paths-ignore:
      - '*.md'
      - '.examples/**'
  push:
    branches:
      - master
    paths-ignore:
      - '*.md'
      - '.github/**'
      - '.examples/**'
jobs:
  test:
    runs-on: ubuntu-latest
    timeout-minutes: 10
    steps:
      - uses: actions/setup-go@v5
        with:
          go-version: 1.21
      - uses: actions/checkout@v4
      - name: Build binary to make sure it works
        run: go build
      - name: Test
        # We're using "sudo" because one of the tests leverages ping, which requires super-user privileges.
        # As for the 'env "PATH=$PATH" "GOROOT=$GOROOT"', we need it to use the same "go" executable that
        # was configured by the "Set up Go" step (otherwise, it'd use sudo's "go" executable)
        run: sudo env "PATH=$PATH" "GOROOT=$GOROOT" go test ./... -race -coverprofile=coverage.txt -covermode=atomic
      - name: Codecov
        uses: codecov/codecov-action@v4.4.1
        with:
          files: ./coverage.txt
          token: ${{ secrets.CODECOV_TOKEN }}
