From ebb84b848922a4d94d0dccfd5e6231e0c041f377 Mon Sep 17 00:00:00 2001 From: Nuno Cruces Date: Fri, 1 Apr 2022 00:42:59 +0100 Subject: [PATCH] Fuzzing. --- internal/strftime/strftime_test.go | 52 ++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/internal/strftime/strftime_test.go b/internal/strftime/strftime_test.go index 4dd85e6..8a78464 100644 --- a/internal/strftime/strftime_test.go +++ b/internal/strftime/strftime_test.go @@ -324,3 +324,55 @@ func TestFormat_lestrrat(t *testing.T) { } } } + +func FuzzFormat(f *testing.F) { + for _, test := range timeTests { + f.Add(test.format) + } + + f.Fuzz(func(t *testing.T, fmt string) { + s := Format(fmt, reference) + if s == "" && fmt != "" { + t.Errorf("Format(%q) = %q", fmt, s) + } + }) +} + +func FuzzParse(f *testing.F) { + for _, test := range timeTests { + f.Add(test.format, Format(test.format, reference)) + } + + f.Fuzz(func(t *testing.T, format, value string) { + tm, err := Parse(format, value) + if tm.IsZero() && err == nil { + t.Errorf("Parse(%q, %q) = (%v, %v)", format, value, tm, err) + } + }) +} + +func FuzzLayout(f *testing.F) { + for _, test := range timeTests { + f.Add(test.format) + } + + f.Fuzz(func(t *testing.T, format string) { + layout, err := Layout(format) + if format != "" && layout == "" && err == nil { + t.Errorf("Layout(%q) = (%q, %v)", format, layout, err) + } + }) +} + +func FuzzUTS35(f *testing.F) { + for _, test := range timeTests { + f.Add(test.format) + } + + f.Fuzz(func(t *testing.T, format string) { + pattern, err := UTS35(format) + if format != "" && pattern == "" && err == nil { + t.Errorf("UTS35(%q) = (%q, %v)", format, pattern, err) + } + }) +}