Skip to content

Commit 080e335

Browse files
julianbrostyhabteab
authored andcommitted
spew.Sdump() filter & add some assertions in FuzzParser()
1 parent 172182c commit 080e335

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"
@@ -322,10 +323,35 @@ func FuzzParser(f *testing.F) {
322323
f.Add("col%29umn>val%29ue")
323324

324325
f.Fuzz(func(t *testing.T, expr string) {
325-
_, err := ParseFilter(expr)
326+
f, err := ParseFilter(expr)
326327

327328
if strings.Count(expr, "(") != strings.Count(expr, ")") {
328329
assert.Error(t, err)
329330
}
331+
332+
if err == nil {
333+
dump := spew.Sdump(f)
334+
335+
assertDumpContainsAny := func(substrs ...string) {
336+
for _, substr := range substrs {
337+
if strings.Contains(dump, substr) {
338+
return
339+
}
340+
}
341+
342+
assert.Failf(t, "Parsed expression dump did not contain any expected string",
343+
"Expression: %q\nExpected: %#v\n\n%s", expr, substrs, dump)
344+
}
345+
346+
if strings.Contains(expr, "&") {
347+
assertDumpContainsAny("All")
348+
}
349+
if strings.Contains(expr, "|") {
350+
assertDumpContainsAny("Any", "None")
351+
}
352+
if strings.Contains(expr, "!") {
353+
assertDumpContainsAny("None", "UnEqual", "Unlike")
354+
}
355+
}
330356
})
331357
}

0 commit comments

Comments
 (0)