[Piglit] [PATCH 10/13] results.py: Simplify TestrunResult.write()

Ilia Mirkin imirkin at alum.mit.edu
Sat Jun 21 07:04:58 PDT 2014


On Sat, Jun 21, 2014 at 8:06 AM, Dylan Baker <baker.dylan.c at gmail.com> wrote:
> This simplifies TestrunResult.write() to use a generator expression.
> This method isn't currently used, but it will be useful in a patch later
> in this series.
>
> This also adds a testcase for this function to ensure that what it
> writes is equivalent to what it reads.
>
> Signed-off-by: Dylan Baker <baker.dylan.c at gmail.com>

Reviewed-by: Ilia Mirkin <imirkin at alum.mit.edu>

> ---
>  framework/results.py             |  9 +++++----
>  framework/tests/results_tests.py | 18 ++++++++++++++++++
>  2 files changed, 23 insertions(+), 4 deletions(-)
>
> diff --git a/framework/results.py b/framework/results.py
> index ab736fc..9823fc5 100644
> --- a/framework/results.py
> +++ b/framework/results.py
> @@ -291,10 +291,11 @@ class TestrunResult(object):
>          return new_file
>
>      def write(self, file_):
> -        # Serialize only the keys in serialized_keys.
> -        keys = set(self.__dict__.keys()).intersection(self.serialized_keys)
> -        raw_dict = dict([(k, self.__dict__[k]) for k in keys])
> -        json.dump(raw_dict, file_, indent=JSONWriter.INDENT)
> +        """ Write only values of the serialized_keys out to file """
> +        with open(file_, 'w') as f:
> +            json.dump(dict((k, v) for k, v in self.__dict__.iteritems()
> +                           if k in self.serialized_keys),
> +                      f, default=_piglit_encoder, indent=JSONWriter.INDENT)
>
>
>  def load_results(filename):
> diff --git a/framework/tests/results_tests.py b/framework/tests/results_tests.py
> index d4be74c..b31c505 100644
> --- a/framework/tests/results_tests.py
> +++ b/framework/tests/results_tests.py
> @@ -24,6 +24,7 @@
>  import os
>  import tempfile
>  import json
> +import nose.tools as nt
>  import framework.tests.utils as utils
>  import framework.results as results
>  import framework.status as status
> @@ -89,3 +90,20 @@ def test_testresult_to_status():
>      result = results.TestResult({'result': 'pass'})
>      assert isinstance(result['result'], status.Status), \
>          "Result key not converted to a status object"
> +
> +
> +def test_testrunresult_write():
> +    """ TestrunResult.write() works
> +
> +    This tests for a bug where TestrunResult.write() wrote a file containing
> +    {}, essentially if it dumps a file that is equal to what was provided then
> +    it's probably working
> +
> +    """
> +    with utils.resultfile() as f:
> +        result = results.load_results(f.name)
> +        with utils.tempdir() as tdir:
> +            result.write(os.path.join(tdir, 'results.json'))
> +            new = results.load_results(os.path.join(tdir, 'results.json'))
> +
> +    nt.assert_dict_equal(result.__dict__, new.__dict__)
> --
> 2.0.0
>
> _______________________________________________
> Piglit mailing list
> Piglit at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/piglit


More information about the Piglit mailing list