Skip to content

Commit 92afbd4

Browse files
julianbrostyhabteab
authored andcommitted
spew.Sdump() filter & add some assertions in FuzzParser()
1 parent d876d00 commit 92afbd4

File tree

1 file changed

+27
-1
lines changed

1 file changed

+27
-1
lines changed

internal/filter/parser_test.go

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package filter
22

33
import (
4+
"github.com/davecgh/go-spew/spew"
45
"github.com/stretchr/testify/assert"
56
"strings"
67
"testing"
@@ -398,10 +399,35 @@ func FuzzParser(f *testing.F) {
398399
f.Add("col%29umn>val%29ue")
399400

400401
f.Fuzz(func(t *testing.T, expr string) {
401-
_, err := ParseFilter(expr)
402+
f, err := ParseFilter(expr)
402403

403404
if strings.Count(expr, "(") != strings.Count(expr, ")") {
404405
assert.Error(t, err)
405406
}
407+
408+
if err == nil {
409+
dump := spew.Sdump(f)
410+
411+
assertDumpContainsAny := func(substrs ...string) {
412+
for _, substr := range substrs {
413+
if strings.Contains(dump, substr) {
414+
return
415+
}
416+
}
417+
418+
assert.Failf(t, "Parsed expression dump did not contain any expected string",
419+
"Expression: %q\nExpected: %#v\n\n%s", expr, substrs, dump)
420+
}
421+
422+
if strings.Contains(expr, "&") {
423+
assertDumpContainsAny("All")
424+
}
425+
if strings.Contains(expr, "|") {
426+
assertDumpContainsAny("Any", "None")
427+
}
428+
if strings.Contains(expr, "!") {
429+
assertDumpContainsAny("None", "UnEqual", "Unlike")
430+
}
431+
}
406432
})
407433
}

0 commit comments

Comments
 (0)