Add fuzzy testing for cfg param parser
Change-Id: I2cb118e46f99f61ee5e113c7f5f1b8393ba5c542
diff --git a/Makefile b/Makefile
index 0c5ed24..debd0f4 100644
--- a/Makefile
+++ b/Makefile
@@ -39,7 +39,8 @@
go vet ./...
fuzz:
- go test -fuzz=FuzzTransformEndpoint -fuzztime=1m ./cmd/koralmapper
+ # go test -fuzz=FuzzTransformEndpoint -fuzztime=1m ./cmd/koralmapper
+ go test -fuzz=FuzzParseCfgParam -fuzztime=1m ./cmd/koralmapper
docker:
docker build -f Dockerfile -t korap/koral-mapper:latest .
diff --git a/cmd/koralmapper/cfgparam_fuzz_test.go b/cmd/koralmapper/cfgparam_fuzz_test.go
new file mode 100644
index 0000000..c018a01
--- /dev/null
+++ b/cmd/koralmapper/cfgparam_fuzz_test.go
@@ -0,0 +1,34 @@
+package main
+
+import (
+ "reflect"
+ "testing"
+)
+
+func FuzzParseCfgParam(f *testing.F) {
+ f.Add("")
+ f.Add("stts-upos:atob")
+ f.Add("stts-upos:btoa:opennlp:p:upos:p")
+ f.Add("stts-upos:atob;other-mapper:btoa:stts:p:ud:pos")
+ f.Add("corpus-map:atob")
+ f.Add("unknown-id:atob")
+ f.Add("stts-upos:invalid")
+ f.Add("stts-upos:atob::::")
+
+ f.Fuzz(func(t *testing.T, raw string) {
+ parsed, err := ParseCfgParam(raw, cfgTestLists)
+ if err != nil {
+ return
+ }
+
+ rebuilt := BuildCfgParam(parsed)
+ reparsed, err := ParseCfgParam(rebuilt, cfgTestLists)
+ if err != nil {
+ t.Fatalf("reparse failed for rebuilt cfg %q from raw %q: %v", rebuilt, raw, err)
+ }
+
+ if !reflect.DeepEqual(parsed, reparsed) {
+ t.Fatalf("round-trip mismatch for raw %q: parsed=%#v reparsed=%#v rebuilt=%q", raw, parsed, reparsed, rebuilt)
+ }
+ })
+}