sumdb/tlog: fuzz tests for parsers
Future fuzz tests could test round trip properties
Change-Id: If195b82998ebedaeca68a7723c2558369e68f716
GitHub-Last-Rev: 6fff4e678380610ecb5f34e494cec04a9a462f62
GitHub-Pull-Request: golang/mod#18
Reviewed-on: https://go-review.googlesource.com/c/mod/+/470155
Run-TryBot: Matthew Hickford <hickford@google.com>
Auto-Submit: Bryan Mills <bcmills@google.com>
Reviewed-by: Bryan Mills <bcmills@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Matthew Hickford <hickford@google.com>
Run-TryBot: Bryan Mills <bcmills@google.com>
diff --git a/sumdb/tlog/note_test.go b/sumdb/tlog/note_test.go
index a32d6d2..3373a0c 100644
--- a/sumdb/tlog/note_test.go
+++ b/sumdb/tlog/note_test.go
@@ -115,3 +115,19 @@
}
}
}
+
+// FuzzParseTree tests that ParseTree never crashes
+func FuzzParseTree(f *testing.F) {
+ f.Add([]byte("go.sum database tree\n123456789012\nTszzRgjTG6xce+z2AG31kAXYKBgQVtCSCE40HmuwBb0=\n"))
+ f.Fuzz(func(t *testing.T, text []byte) {
+ ParseTree(text)
+ })
+}
+
+// FuzzParseRecord tests that ParseRecord never crashes
+func FuzzParseRecord(f *testing.F) {
+ f.Add([]byte("12345\nhello\n\n"))
+ f.Fuzz(func(t *testing.T, msg []byte) {
+ ParseRecord(msg)
+ })
+}
diff --git a/sumdb/tlog/tile_test.go b/sumdb/tlog/tile_test.go
new file mode 100644
index 0000000..e451a63
--- /dev/null
+++ b/sumdb/tlog/tile_test.go
@@ -0,0 +1,24 @@
+// Copyright 2019 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package tlog
+
+import (
+ "testing"
+)
+
+// FuzzParseTilePath tests that ParseTilePath never crashes
+func FuzzParseTilePath(f *testing.F) {
+ f.Add("tile/4/0/001")
+ f.Add("tile/4/0/001.p/5")
+ f.Add("tile/3/5/x123/x456/078")
+ f.Add("tile/3/5/x123/x456/078.p/2")
+ f.Add("tile/1/0/x003/x057/500")
+ f.Add("tile/3/5/123/456/078")
+ f.Add("tile/3/-1/123/456/078")
+ f.Add("tile/1/data/x003/x057/500")
+ f.Fuzz(func(t *testing.T, path string) {
+ ParseTilePath(path)
+ })
+}