From 54a1d28525c5232fe5c3aca37126355efddb1bc3 Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Fri, 3 May 2024 16:08:28 -0400 Subject: [PATCH] test: add inverse mode for Grep gadget Since sometimes we want to check for matches, and sometimes we want to check for a lack of match, we add one more option for the Grep gadget: inverse. This essentially replicates `grep -v`, and will succeed only if the regex provided did NOT match on the requested streams. --- test/gadgets_test.go | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/test/gadgets_test.go b/test/gadgets_test.go index abb2ead3b..9ad4819d8 100644 --- a/test/gadgets_test.go +++ b/test/gadgets_test.go @@ -1,6 +1,7 @@ package test import ( + "errors" "fmt" "reflect" "regexp" @@ -77,6 +78,7 @@ func (_ MustFail) Check(stdout, stderr string, err error) error { type Grep struct { streams Stream expect string + inverse bool } func (g Grep) Check(stdout, stderr string, err error) error { @@ -98,8 +100,11 @@ func (g Grep) Check(stdout, stderr string, err error) error { found = found || re.MatchString(stream) } - if !found { - return fmt.Errorf("streams %q did not match the expected regexp %q", g.streams, g.expect) + if g.inverse && found { + return errors.New("unexpectedly matched the regexp") + } + if !g.inverse && !found { + return errors.New("did not match the regexp") } return nil }