Sv/test ut debug #145
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Checks | |
| on: | |
| pull_request: | |
| branches: [master] | |
| # This workflow runs for not-yet-reviewed external contributions and so it | |
| # intentionally has no write access and only limited read access to the | |
| # repository. | |
| permissions: | |
| contents: read | |
| jobs: | |
| lint: | |
| name: "Run golangci-lint" | |
| runs-on: ubuntu-latest | |
| strategy: | |
| matrix: | |
| GO_VERSION: | |
| - '1.24' # named in go.mod | |
| - 'oldstable' | |
| - 'stable' | |
| steps: | |
| - name: "Fetch source code" | |
| uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0 | |
| - name: Install Go toolchain | |
| uses: actions/setup-go@93397bea11091df50f3d7e59dc26a7711a8bcfbe # v4.1.0 | |
| with: | |
| go-version: ${{ matrix.GO_VERSION }} | |
| - name: Cache Go modules | |
| uses: actions/cache@1bd1e32a3bdc45362d1e726936510720a7c30a57 # v4.2.0 | |
| with: | |
| path: | | |
| ~/.cache/go-build | |
| ~/go/pkg/mod | |
| key: go-mod-${{ matrix.GO_VERSION }}-${{ hashFiles('go.sum') }} | |
| restore-keys: | | |
| go-mod-${{ matrix.GO_VERSION }} | |
| - name: "lint" | |
| uses: golangci/golangci-lint-action@4afd733a84b1f43292c63897423277bb7f4313a9 # v8.0.0 | |
| unit-tests: | |
| name: "Unit Tests" | |
| runs-on: ubuntu-latest | |
| strategy: | |
| matrix: | |
| GO_VERSION: | |
| - '1.24' # named in go.mod | |
| - 'oldstable' | |
| - 'stable' | |
| steps: | |
| - name: "Fetch source code" | |
| uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0 | |
| - name: Install Go toolchain | |
| uses: actions/setup-go@93397bea11091df50f3d7e59dc26a7711a8bcfbe # v4.1.0 | |
| with: | |
| go-version: ${{ matrix.GO_VERSION }} | |
| # NOTE: This cache is shared so the following step must always be | |
| # identical across the unit-tests, e2e-tests, and consistency-checks | |
| # jobs, or else weird things could happen. | |
| - name: Cache Go modules | |
| uses: actions/cache@1bd1e32a3bdc45362d1e726936510720a7c30a57 # v4.2.0 | |
| with: | |
| path: | | |
| ~/.cache/go-build | |
| ~/go/pkg/mod | |
| key: go-mod-${{ matrix.GO_VERSION }}-${{ hashFiles('go.sum') }} | |
| restore-keys: | | |
| go-mod-${{ matrix.GO_VERSION }} | |
| - name: "Unit tests and generate coverage report" | |
| run: | | |
| echo "Step 1: Environment variables" && printenv | |
| echo "Step 2: Network interfaces" && ip addr | |
| echo "Step 3: Ulimit values" && ulimit -a | |
| echo "Step 4: UDP connectivity test" && (echo test | nc -u -w1 127.0.0.2 9999 & sleep 1) | |
| echo "Step 5: Go version" && go version | |
| echo "Step 6: Current user" && whoami | |
| go test -v -run ^TestMemberlist_PingDelegate$ | |
| make cov | |
| - name: Upload coverage report | |
| uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 | |
| with: | |
| path: coverage.out | |
| name: Coverage-report-${{matrix.GO_VERSION}} | |
| - name: Display Coverage report | |
| run: go tool cover -func=coverage.out | |
| - name: Build go | |
| run: go build ./... | |
| unit-tests-race: | |
| name: "Unit Tests Race" | |
| runs-on: ubuntu-latest | |
| strategy: | |
| matrix: | |
| GO_VERSION: | |
| - '1.24' # named in go.mod | |
| - 'oldstable' | |
| - 'stable' | |
| steps: | |
| - name: "Fetch source code" | |
| uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0 | |
| - name: Install Go toolchain | |
| uses: actions/setup-go@93397bea11091df50f3d7e59dc26a7711a8bcfbe # v4.1.0 | |
| with: | |
| go-version: ${{ matrix.GO_VERSION }} | |
| # NOTE: This cache is shared so the following step must always be | |
| # identical across the unit-tests, e2e-tests, and consistency-checks | |
| # jobs, or else weird things could happen. | |
| - name: Cache Go modules | |
| uses: actions/cache@1bd1e32a3bdc45362d1e726936510720a7c30a57 # v4.2.0 | |
| with: | |
| path: | | |
| ~/.cache/go-build | |
| ~/go/pkg/mod | |
| key: go-mod-${{ matrix.GO_VERSION }}-${{ hashFiles('go.sum') }} | |
| restore-keys: | | |
| go-mod-${{ matrix.GO_VERSION }} | |
| - name: "Race Unit tests" | |
| run: | | |
| go test -race ./... | |
| - name: Race Build | |
| run: go build -race ./... | |
| consistency-checks: | |
| name: "Code Consistency Checks" | |
| runs-on: ubuntu-latest | |
| strategy: | |
| matrix: | |
| GO_VERSION: | |
| - '1.24' # named in go.mod | |
| - 'oldstable' | |
| - 'stable' | |
| steps: | |
| - name: "Fetch source code" | |
| uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0 | |
| - name: Install Go toolchain | |
| uses: actions/setup-go@93397bea11091df50f3d7e59dc26a7711a8bcfbe # v4.1.0 | |
| with: | |
| go-version: ${{ matrix.GO_VERSION }} | |
| # NOTE: This cache is shared so the following step must always be | |
| # identical across the unit-tests and consistency-checks | |
| # jobs, or else weird things could happen. | |
| - name: Cache Go modules | |
| uses: actions/cache@1bd1e32a3bdc45362d1e726936510720a7c30a57 # v4.2.0 | |
| with: | |
| path: | | |
| ~/.cache/go-build | |
| ~/go/pkg/mod | |
| key: go-mod-${{ matrix.GO_VERSION }}-${{ hashFiles('go.sum') }} | |
| restore-keys: | | |
| go-mod-${{ matrix.GO_VERSION }} | |
| - name: "go.mod and go.sum consistency check" | |
| run: | | |
| go mod tidy | |
| if [[ -n "$(git status --porcelain)" ]]; then | |
| echo >&2 "ERROR: go.mod/go.sum are not up-to-date. Run 'go mod tidy' and then commit the updated files." | |
| exit 1 | |
| fi | |
| - name: "go vet" | |
| run: | | |
| go vet ./... | |
| - name: "go fmt check" | |
| run: | | |
| files=$(go fmt ./...) | |
| if [ -n "$files" ]; then | |
| echo "The following file(s) do not conform to go fmt:" | |
| echo "$files" | |
| exit 1 | |
| fi |