Fix CI: enable ICMP tests on Linux and fix gotestfmt on macOS/Windows

Three pre-existing issues prevented the Check workflow from passing:

1. Linux: ICMP tests fail because ping_group_range on GitHub Actions
   runners defaults to "1 0" (unprivileged ICMP disabled). Add sysctl
   step to allow unprivileged ICMP sockets.

2. macOS: go test -json emits linker warnings (LC_DYSYMTAB) as
   "Action":"build-output" JSON lines. gotestfmt v2.5.0 predates this
   action type (Go 1.21+) and panics in parseLine
   (gotesttools/gotestfmt#64). Filter build-output lines before piping
   to gotestfmt.

3. Windows: GO_TEST_LOG_OUTPUT pointed to /tmp/gotest.log which does
   not resolve through the MSYS2-to-native-Go boundary. Use relative
   path instead.

These failures were masked by fail-fast: Linux failed first (ICMP),
cancelling macOS and Windows before they reached gotestfmt.
This commit is contained in:
mannie-exe 2026-02-22 15:07:23 -08:00
parent 839b874cad
commit 556d6bafa2
3 changed files with 6 additions and 2 deletions

View File

@ -14,5 +14,8 @@ jobs:
go-version: ${{ matrix.go-version }}
- name: Checkout code
uses: actions/checkout@v4
- name: Allow unprivileged ICMP (Linux)
if: runner.os == 'Linux'
run: sudo sysctl -w net.ipv4.ping_group_range="0 2147483647"
- name: Test
run: make test

1
.gitignore vendored
View File

@ -14,6 +14,7 @@ cscope.*
/packaging
.DS_Store
*-session.log
gotest.log
ssh_server_tests/.env
/.cover
built_artifacts/

View File

@ -128,7 +128,7 @@ endif
#for FIPS compliance, FPM defaults to MD5.
RPM_DIGEST := --rpm-digest sha256
GO_TEST_LOG_OUTPUT = /tmp/gotest.log
GO_TEST_LOG_OUTPUT = gotest.log
.PHONY: all
all: cloudflared test
@ -164,7 +164,7 @@ generate-docker-version:
test: vet
$Q go test -json -v -mod=vendor -race $(LDFLAGS) ./... 2>&1 | tee $(GO_TEST_LOG_OUTPUT)
ifneq ($(FIPS), true)
@go run -mod=readonly github.com/gotesttools/gotestfmt/v2/cmd/gotestfmt@latest -input $(GO_TEST_LOG_OUTPUT)
@grep -v '"Action":"build-output"' $(GO_TEST_LOG_OUTPUT) | go run -mod=readonly github.com/gotesttools/gotestfmt/v2/cmd/gotestfmt@latest
endif
.PHONY: cover