[Piglit] [PATCH 2/2] framework/test/base.py: Handle fail cases for tests.

Daniel Vetter daniel at ffwll.ch
Wed Dec 16 07:55:13 PST 2015


On Mon, Dec 14, 2015 at 05:14:18PM -0800, Mark Janes wrote:
> Reviewed-by: Mark Janes <mark.a.janes at intel.com>
> 
> baker.dylan.c at gmail.com writes:
> 
> > From: Dylan Baker <baker.dylan.c at gmail.com>
> >
> > I'm going to admit I'm a bit puzzled how this could have slipped through
> > without being caught (I'm guessing an unrelated change uncovered this).
> > But basically if a test doesn't raise an exception, and the returncode
> > is > 0, it should mark the test with a status of "fail", but it doesn't.
> > Instead the default status "notrun" is passed to the logger, which it
> > doesn't support, and an exception is raised.
> >
> > This patch corrects that problem.
> >
> > bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=93340
> > cc: mark.a.janes at intel.com
> > Signed-off-by: Dylan Baker <dylanx.c.baker at intel.com>

This seems to break igt badly, which uses special return codes (decoded in
the igt runner) to mark tests as skipped. CI is pretty red because of this
now here :(

Not sure what exactly needs to be fixed here ...
-Daniel

> > ---
> >
> > I'm not really sure this is exactly the right solution. I wonder if we'd
> > be better just to get rid of the "warn" and just say if the returncode
> > is 0 leave it alone, if it's crash/timeout (as defined by the function),
> > do that, otherwise mark it as "fail".
> >
> >  framework/test/base.py        |  7 +++++--
> >  framework/tests/base_tests.py | 15 +++++++++++++++
> >  2 files changed, 20 insertions(+), 2 deletions(-)
> >
> > diff --git a/framework/test/base.py b/framework/test/base.py
> > index 378f185..4232e6c 100644
> > --- a/framework/test/base.py
> > +++ b/framework/test/base.py
> > @@ -210,8 +210,11 @@ class Test(object):
> >                  self.result.result = 'timeout'
> >              else:
> >                  self.result.result = 'crash'
> > -        elif self.result.returncode != 0 and self.result.result == 'pass':
> > -            self.result.result = 'warn'
> > +        elif self.result.returncode != 0:
> > +            if self.result.result == 'pass':
> > +                self.result.result = 'warn'
> > +            else:
> > +                self.result.result = 'fail'
> >  
> >      def run(self):
> >          """
> > diff --git a/framework/tests/base_tests.py b/framework/tests/base_tests.py
> > index c005273..20bea87 100644
> > --- a/framework/tests/base_tests.py
> > +++ b/framework/tests/base_tests.py
> > @@ -260,3 +260,18 @@ class TestValgrindMixinRun(object):
> >          test.result.returncode = 1
> >          test.run()
> >          nt.eq_(test.result.result, 'fail')
> > +
> > +
> > +def test_interpret_result_greater_zero():
> > +    """test.base.Test.interpret_result: A test with status > 0 is fail"""
> > +    class _Test(Test):
> > +        def interpret_result(self):
> > +            super(_Test, self).interpret_result()
> > +
> > +    test = _Test(['foobar'])
> > +    test.result.returncode = 1
> > +    test.result.out = 'this is some\nstdout'
> > +    test.result.err = 'this is some\nerrors'
> > +    test.interpret_result()
> > +
> > +    nt.eq_(test.result.result, 'fail')
> > -- 
> > 2.6.4
> _______________________________________________
> Piglit mailing list
> Piglit at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/piglit

-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch


More information about the Piglit mailing list