[Piglit] [PATCH 1/3] framework/backends/junit.py: restore time for stderr
Dylan Baker
baker.dylan.c at gmail.com
Mon Oct 19 15:38:02 PDT 2015
On Thu, Oct 15, 2015 at 05:13:38PM -0700, Mark Janes wrote:
> baker.dylan.c at gmail.com writes:
>
> > From: Dylan Baker <baker.dylan.c at gmail.com>
> >
> > This allows time to be fully restored.
> > ---
> > framework/backends/junit.py | 12 ++++++++++++
> > framework/tests/junit_backends_tests.py | 22 +++++++++++++++++-----
> > 2 files changed, 29 insertions(+), 5 deletions(-)
> >
> > diff --git a/framework/backends/junit.py b/framework/backends/junit.py
> > index 11fb09e..ce6a27a 100644
> > --- a/framework/backends/junit.py
> > +++ b/framework/backends/junit.py
> > @@ -255,6 +255,9 @@ def _load(results_file):
> > name = name[:-1]
> >
> > result.result = test.attrib['status']
> > +
> > + # This is the fallback path, we'll try to overwrite this with the value
> > + # in stderr
> > result.time = results.TimeAttribute(end=float(test.attrib['time']))
> > result.err = test.find('system-err').text
> >
>
> I noticed that a few lines above this hunk, there is this:
>
> # Take the class name minus the 'piglit.' element, replace junit's '.'
> # separator with piglit's separator, and join the group and test names
>
> The transformation is not reversible, eg:
>
> test/foo.bar/baz -> test.foo.bar.baz -> test/foo/bar/baz
Not exactly. '.' is first replaced with '_':
test/foo.bar/baz -> test/foo_bar/baz
test/foo_bar/baz -> test.foo_bar.baz
So the '.' is reversible, but the '_' is not because piglit uses '_' in
it's names.
>
> This doesn't affect my use case, though.
>
> Reviewed-by: Mark Janes <mark.a.janes at intel.com>
Thanks for the review
>
> > @@ -264,6 +267,15 @@ def _load(results_file):
> > result.command = out[0]
> > result.out = '\n'.join(out[1:])
> >
> > + # Try to get the values in stderr for time
> > + if 'time start' in result.err:
> > + for line in result.err.split('\n'):
> > + if line.startswith('time start:'):
> > + result.time.start = float(line[len('time start: '):])
> > + elif line.startswith('time end:'):
> > + result.time.end = float(line[len('time end: '):])
> > + break
> > +
> > run_result.tests[name] = result
> >
> > return run_result
> > diff --git a/framework/tests/junit_backends_tests.py b/framework/tests/junit_backends_tests.py
> > index 96335f3..1a4be0e 100644
> > --- a/framework/tests/junit_backends_tests.py
> > +++ b/framework/tests/junit_backends_tests.py
> > @@ -47,7 +47,11 @@ _XML = """\
> > <testsuite name="piglit" tests="1">
> > <testcase classname="piglit.foo.bar" name="a-test" status="pass" time="1.12345">
> > <system-out>this/is/a/command\nThis is stdout</system-out>
> > - <system-err>this is stderr</system-err>
> > + <system-err>this is stderr
> > +
> > +time start: 1.0
> > +time end: 4.5
> > + </system-err>
> > </testcase>
> > </testsuite>
> > </testsuites>
> > @@ -234,11 +238,17 @@ class TestJUnitLoad(utils.StaticDirectory):
> > nt.assert_is_instance(self.xml().tests[self.testname].result,
> > status.Status)
> >
> > - def test_time(self):
> > - """backends.junit._load: Time is loaded correctly."""
> > + def test_time_start(self):
> > + """backends.junit._load: Time.start is loaded correctly."""
> > time = self.xml().tests[self.testname].time
> > nt.assert_is_instance(time, results.TimeAttribute)
> > - nt.assert_equal(time.total, 1.12345)
> > + nt.eq_(time.start, 1.0)
> > +
> > + def test_time_end(self):
> > + """backends.junit._load: Time.end is loaded correctly."""
> > + time = self.xml().tests[self.testname].time
> > + nt.assert_is_instance(time, results.TimeAttribute)
> > + nt.eq_(time.end, 4.5)
> >
> > def test_command(self):
> > """backends.junit._load: command is loaded correctly."""
> > @@ -253,7 +263,9 @@ class TestJUnitLoad(utils.StaticDirectory):
> > def test_err(self):
> > """backends.junit._load: stderr is loaded correctly."""
> > test = self.xml().tests[self.testname].err
> > - nt.assert_equal(test, 'this is stderr')
> > + nt.eq_(
> > + test, 'this is stderr\n\ntime start: 1.0\ntime end: 4.5\n ')
> > +
> >
> > @utils.no_error
> > def test_load_file(self):
> > --
> > 2.6.1
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 473 bytes
Desc: not available
URL: <http://lists.freedesktop.org/archives/piglit/attachments/20151019/8dfae095/attachment.sig>
More information about the Piglit
mailing list