...
1
2
3
4 package toml
5
6 import (
7 "bytes"
8 "testing"
9 )
10
11 func FuzzDecode(f *testing.F) {
12 buf := make([]byte, 0, 2048)
13
14 f.Add(`
15 # This is an example TOML document which shows most of its features.
16
17 # Simple key/value with a string.
18 title = "TOML example \U0001F60A"
19
20 desc = """
21 An example TOML document. \
22 """
23
24 # Array with integers and floats in the various allowed formats.
25 integers = [42, 0x42, 0o42, 0b0110]
26 floats = [1.42, 1e-02]
27
28 # Array with supported datetime formats.
29 times = [
30 2021-11-09T15:16:17+01:00, # datetime with timezone.
31 2021-11-09T15:16:17Z, # UTC datetime.
32 2021-11-09T15:16:17, # local datetime.
33 2021-11-09, # local date.
34 15:16:17, # local time.
35 ]
36
37 # Durations.
38 duration = ["4m49s", "8m03s", "1231h15m55s"]
39
40 # Table with inline tables.
41 distros = [
42 {name = "Arch Linux", packages = "pacman"},
43 {name = "Void Linux", packages = "xbps"},
44 {name = "Debian", packages = "apt"},
45 ]
46
47 # Create new table; note the "servers" table is created implicitly.
48 [servers.alpha]
49 # You can indent as you please, tabs or spaces.
50 ip = '10.0.0.1'
51 hostname = 'server1'
52 enabled = false
53 [servers.beta]
54 ip = '10.0.0.2'
55 hostname = 'server2'
56 enabled = true
57
58 # Start a new table array; note that the "characters" table is created implicitly.
59 [[characters.star-trek]]
60 name = "James Kirk"
61 rank = "Captain\u0012 \t"
62 [[characters.star-trek]]
63 name = "Spock"
64 rank = "Science officer"
65
66 [undecoded] # To show the MetaData.Undecoded() feature.
67 key = "This table intentionally left undecoded"
68 `)
69 f.Fuzz(func(t *testing.T, file string) {
70 var m map[string]interface{}
71 _, err := Decode(file, &m)
72 if err != nil {
73 t.Skip()
74 }
75
76 NewEncoder(bytes.NewBuffer(buf)).Encode(m)
77
78
79
80 })
81 }
82
View as plain text