[Piglit] [PATCH 1/3] framework/backends/junit.py: restore time for stderr
Mark Janes
mark.a.janes at intel.com
Thu Oct 15 17:13:38 PDT 2015
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
This doesn't affect my use case, though.
Reviewed-by: Mark Janes <mark.a.janes at intel.com>
> @@ -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
More information about the Piglit
mailing list