From 200a01ff5589e2b8eb8cebeb4dcf6469aceaab27 Mon Sep 17 00:00:00 2001 From: Tobias Klauser Date: Wed, 10 May 2023 17:08:59 +0200 Subject: [PATCH] html: convert fuzz test to native Go fuzzing Convert the existing gofuzz based fuzz test to a testing.F based fuzz test. Change-Id: Ieae69ba7fb17bd54d95c7bb2f4ed04c323c9f15f Reviewed-on: https://go-review.googlesource.com/c/go/+/494195 TryBot-Result: Gopher Robot Reviewed-by: Ian Lance Taylor Reviewed-by: Cherry Mui Auto-Submit: Tobias Klauser Run-TryBot: Tobias Klauser --- src/html/fuzz.go | 31 ------------------------------- src/html/fuzz_test.go | 22 ++++++++++++++++++++++ 2 files changed, 22 insertions(+), 31 deletions(-) delete mode 100644 src/html/fuzz.go create mode 100644 src/html/fuzz_test.go diff --git a/src/html/fuzz.go b/src/html/fuzz.go deleted file mode 100644 index cd70f97106..0000000000 --- a/src/html/fuzz.go +++ /dev/null @@ -1,31 +0,0 @@ -// 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. - -//go:build gofuzz - -package html - -import ( - "fmt" -) - -func Fuzz(data []byte) int { - v := string(data) - - e := EscapeString(v) - u := UnescapeString(e) - if v != u { - fmt.Printf("v = %q\n", v) - fmt.Printf("e = %q\n", e) - fmt.Printf("u = %q\n", u) - panic("not equal") - } - - // As per the documentation, this isn't always equal to v, so it makes - // no sense to check for equality. It can still be interesting to find - // panics in it though. - EscapeString(UnescapeString(v)) - - return 0 -} diff --git a/src/html/fuzz_test.go b/src/html/fuzz_test.go new file mode 100644 index 0000000000..ed15d8f270 --- /dev/null +++ b/src/html/fuzz_test.go @@ -0,0 +1,22 @@ +// 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 html + +import "testing" + +func FuzzEscapeUnescape(f *testing.F) { + f.Fuzz(func(t *testing.T, v string) { + e := EscapeString(v) + u := UnescapeString(e) + if u != v { + t.Errorf("EscapeString(%q) = %q, UnescapeString(%q) = %q, want %q", v, e, e, u, v) + } + + // As per the documentation, this isn't always equal to v, so it makes + // no sense to check for equality. It can still be interesting to find + // panics in it though. + EscapeString(UnescapeString(v)) + }) +} -- 2.48.1