# Fuzz smoke, Go. Dispatched by hand when a change asks for it. # # Fuzzing is exploration, so it never belongs to the push pipeline; a 30 second # smoke per target on a hand dispatch checks a change without holding the # shared box. The targets run the seeds and whatever the corpus has gathered; a # failure leaves its crashing input in testdata/fuzz, which the ordinary suite # then reproduces on every push. # # Every step is one command, so the step that fails is the gate that failed. name: Fuzz on: workflow_dispatch: env: # One core: parallelism buys no speed here and costs memory the box does not have. GOFLAGS: -p=1 GOMAXPROCS: "2" jobs: fuzz: runs-on: fedora timeout-minutes: 10 steps: - uses: actions/checkout@v7 - uses: actions/setup-go@v6 with: go-version-file: go.mod cache: true - name: Fuzz the parser run: go test -run '^$' -fuzz FuzzParse -fuzztime=30s -timeout 10m . - name: Fuzz the encoder run: go test -run '^$' -fuzz FuzzMarshal -fuzztime=30s -timeout 10m .