Skip to content

Fuzz Testing

Fuzz Testing #34

Workflow file for this run

name: Fuzz Testing
on:
schedule:
- cron: '0 0 * * *' # Nightly at midnight UTC
workflow_dispatch: # Allow manual triggering
permissions:
contents: read
actions: read
jobs:
fuzz:
runs-on: ubuntu-latest
strategy:
matrix:
target:
- {package: "./cbor/...", fuzz: "FuzzDecode$"}
- {package: "./cbor/...", fuzz: "FuzzDecodeStruct$"}
- {package: "./ledger/...", fuzz: "FuzzNewBlockFromCbor"}
- {package: "./ledger/...", fuzz: "FuzzNewTransactionFromCbor"}
- {package: "./ledger/common/...", fuzz: "FuzzMultiAsset"}
- {package: "./ledger/common/...", fuzz: "FuzzValue"}
- {package: "./ledger/common/...", fuzz: "FuzzNewAddressFromBytes"}
- {package: "./ledger/common/...", fuzz: "FuzzNewAddress$"}
- {package: "./ledger/common/...", fuzz: "FuzzNewScriptHashFromBech32"}
- {package: "./kes/...", fuzz: "FuzzVerifySignedKES"}
- {package: "./kes/...", fuzz: "FuzzNewSumKesFromBytes"}
- {package: "./vrf/...", fuzz: "FuzzVerify$"}
- {package: "./vrf/...", fuzz: "FuzzVerifyAndHash$"}
- {package: "./vrf/...", fuzz: "FuzzProofToHash"}
steps:
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 https://github.com/actions/checkout/releases/tag/v6.0.3
- uses: actions/setup-go@4a3601121dd01d1626a1e23e37211e3254c1c06c # v6.4.0 https://github.com/actions/setup-go/releases/tag/v6.4.0
with:
go-version: 1.26.x
- name: Run fuzz test
run: |
go test -fuzz=${{ matrix.target.fuzz }} \
-fuzztime=5m \
${{ matrix.target.package }}
- name: Upload crash artifacts
if: failure()
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 https://github.com/actions/upload-artifact/releases/tag/v7.0.1
with:
name: fuzz-crashes-${{ matrix.target.fuzz }}
path: "**/testdata/fuzz/**"
retention-days: 30