[Piglit] [PATCH 1/2] framework/dmesg.py: add a filtering mechanism

Dylan Baker baker.dylan.c at gmail.com
Wed Apr 30 11:28:18 PDT 2014


On Wednesday, April 30, 2014 12:20:31 Ilia Mirkin wrote:
> On Wed, Apr 30, 2014 at 12:12 PM, Thomas Wood <thomas.wood at intel.com> wrote:
> > Only update the test status if at least one of the lines in the dmesg
> > output matches the given regular expression.
> 
> Would be nice to provide a mechanism to set this on the cmdline too,
> but not required as part of this change. Just a thought.
> 
> >
> > Signed-off-by: Thomas Wood <thomas.wood at intel.com>
> > ---
> >  framework/dmesg.py | 11 +++++++++++
> >  1 file changed, 11 insertions(+)
> >
> > diff --git a/framework/dmesg.py b/framework/dmesg.py
> > index 3af8496..78b8d46 100644
> > --- a/framework/dmesg.py
> > +++ b/framework/dmesg.py
> > @@ -53,6 +53,7 @@ class LinuxDmesg(object):
> >          """ Create a dmesg instance """
> >          self._last_message = None
> >          self._new_messages = []
> > +        self.regex = None;

remove the semicolon, this isn't C :)

> >
> >          # Populate self.dmesg initially, otherwise the first test will always
> >          # be full of dmesg crud.
> > @@ -101,6 +102,16 @@ class LinuxDmesg(object):
> >          # if update_dmesg() found new entries replace the results of the test
> >          # and subtests
> >          if self._new_messages:
> > +
> > +            if (self.regex is not None):
> 
> No need for parens. Also, you can just do
> 
> if self.regex:
> 
> Since RE objects will implicitly evaluate to true
> 
> > +                found = False
> > +                for line in self._new_messages:
> > +                    if self.regex.search(line) is not None:
> 
> Same deal here -- no need for "is not None" -- match objects are
> implicitly true. (Which is what .search() returns IIRC.)
> 
> > +                        found = True
> > +                        break
> > +                if not found:
> > +                    return result
> 
> If you're a fan of "fancy" python, you can use the for/else construct
> and write this as:
> 
> for line in self._new_messages:
>   if self.regex.search(line):
>     break
> else:
>   return result

I am a fan of "fancy" python, we use this construct in piglit a lot.

> 
> > +
> >              result['result'] = replace(result['result'])
> >
> >              # Replace any subtests
> > --
> > 1.9.0
> >
> > _______________________________________________
> > Piglit mailing list
> > Piglit at lists.freedesktop.org
> > http://lists.freedesktop.org/mailman/listinfo/piglit
> _______________________________________________
> Piglit mailing list
> Piglit at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/piglit

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/piglit/attachments/20140430/6dcfadf9/attachment.html>


More information about the Piglit mailing list