FuzzParseTriggerShorthand is a fuzz test for the ParseTriggerShorthand function. It validates that the parser handles arbitrary input gracefully without panicking, and that it produces consistent, valid output for recognized trigger patterns. The fuzzer validates that: 1. The parser never panics on
(f *testing.F)
| 20 | // 6. Additional events are properly formatted |
| 21 | // 7. Edge cases (empty strings, very long inputs, special characters) are handled |
| 22 | func FuzzParseTriggerShorthand(f *testing.F) { |
| 23 | // Seed corpus with valid trigger patterns |
| 24 | |
| 25 | // Source Control Patterns |
| 26 | f.Add("push to main") |
| 27 | f.Add("push to develop") |
| 28 | f.Add("push to feature/test") |
| 29 | f.Add("push tags v*") |
| 30 | f.Add("push tags v1.*") |
| 31 | f.Add("pull_request opened") |
| 32 | f.Add("pull_request synchronize") |
| 33 | f.Add("pull_request reopened") |
| 34 | f.Add("pull_request closed") |
| 35 | f.Add("pull_request merged") |
| 36 | f.Add("pull_request labeled") |
| 37 | f.Add("pull_request affecting src/**") |
| 38 | f.Add("pull_request affecting docs/*.md") |
| 39 | f.Add("pull_request opened affecting src/**.go") |
| 40 | f.Add("pull opened") |
| 41 | f.Add("pull synchronize") |
| 42 | |
| 43 | // Issue Patterns |
| 44 | f.Add("issue opened") |
| 45 | f.Add("issue edited") |
| 46 | f.Add("issue closed") |
| 47 | f.Add("issue reopened") |
| 48 | f.Add("issue assigned") |
| 49 | f.Add("issue unassigned") |
| 50 | f.Add("issue labeled") |
| 51 | f.Add("issue unlabeled") |
| 52 | f.Add("issue deleted") |
| 53 | f.Add("issue transferred") |
| 54 | f.Add("issue opened labeled bug") |
| 55 | f.Add("issue opened labeled enhancement") |
| 56 | |
| 57 | // Discussion Patterns |
| 58 | f.Add("discussion created") |
| 59 | f.Add("discussion edited") |
| 60 | f.Add("discussion deleted") |
| 61 | f.Add("discussion transferred") |
| 62 | f.Add("discussion pinned") |
| 63 | f.Add("discussion unpinned") |
| 64 | f.Add("discussion labeled") |
| 65 | f.Add("discussion unlabeled") |
| 66 | f.Add("discussion locked") |
| 67 | f.Add("discussion unlocked") |
| 68 | f.Add("discussion category_changed") |
| 69 | f.Add("discussion answered") |
| 70 | f.Add("discussion unanswered") |
| 71 | |
| 72 | // Manual Invocation Patterns |
| 73 | f.Add("manual") |
| 74 | f.Add("manual with input version") |
| 75 | f.Add("manual with input environment") |
| 76 | f.Add("manual with input tag") |
| 77 | f.Add("workflow completed ci-test") |
| 78 | f.Add("workflow completed build") |
| 79 | f.Add("workflow completed deploy-prod") |
nothing calls this directly
no test coverage detected