1package imapclient
2
3import (
4 "os"
5 "strings"
6 "testing"
7)
8
9func FuzzParser(f *testing.F) {
10 /*
11 Gathering all untagged responses and command completion results from the RFCs:
12
13 cd ../rfc
14 (
15 grep ' S: \* [A-Z]' * | sed 's/^.*S: //g'
16 grep -E ' S: [^ *]+ (OK|NO|BAD) ' * | sed 's/^.*S: //g'
17 ) | grep -v '\.\.\/' | sort | uniq >../testdata/imapclient/fuzzseed.txt
18 */
19 buf, err := os.ReadFile("../testdata/imapclient/fuzzseed.txt")
20 if err != nil {
21 f.Fatalf("reading seed: %v", err)
22 }
23 for _, s := range strings.Split(string(buf), "\n") {
24 f.Add(s + "\r\n")
25 }
26 f.Add("1:3")
27 f.Add("3:1")
28 f.Add("3,1")
29 f.Add("*")
30
31 f.Fuzz(func(t *testing.T, data string) {
32 ParseUntagged(data)
33 ParseCode(data)
34 ParseResult(data)
35 ParseNumSet(data)
36 ParseUIDRange(data)
37 })
38}
39