Skip to content

Commit 0ed6ab3

Browse files
julianbrostyhabteab
authored andcommitted
spew.Sdump() filter & add some assertions in FuzzParser()
1 parent dec3f96 commit 0ed6ab3

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"
@@ -353,10 +354,35 @@ func FuzzParser(f *testing.F) {
353354
f.Add("col%29umn>val%29ue")
354355

355356
f.Fuzz(func(t *testing.T, expr string) {
356-
_, err := ParseFilter(expr)
357+
f, err := ParseFilter(expr)
357358

358359
if strings.Count(expr, "(") != strings.Count(expr, ")") {
359360
assert.Error(t, err)
360361
}
362+
363+
if err == nil {
364+
dump := spew.Sdump(f)
365+
366+
assertDumpContainsAny := func(substrs ...string) {
367+
for _, substr := range substrs {
368+
if strings.Contains(dump, substr) {
369+
return
370+
}
371+
}
372+
373+
assert.Failf(t, "Parsed expression dump did not contain any expected string",
374+
"Expression: %q\nExpected: %#v\n\n%s", expr, substrs, dump)
375+
}
376+
377+
if strings.Contains(expr, "&") {
378+
assertDumpContainsAny("All")
379+
}
380+
if strings.Contains(expr, "|") {
381+
assertDumpContainsAny("Any", "None")
382+
}
383+
if strings.Contains(expr, "!") {
384+
assertDumpContainsAny("None", "UnEqual", "Unlike")
385+
}
386+
}
361387
})
362388
}

0 commit comments

Comments
 (0)