[Piglit] [PATCH 00/44] Port framework to run on both python 2.7 and 3.3+

Jose Fonseca jfonseca at vmware.com
Mon Feb 1 15:35:25 PST 2016


Dylan,


I tried to build your branch.  With Python 2.7 for starters (just for 
conveniency, then my plan was to build with Python 3.)

But I get this failure, both on Windows and Linux:

[21/3075] Generating tests/util/piglit-dispatch-gen.c, 
tests/util/piglit-dispatch-gen.h, tests/util/piglit-util-gl-enum-gen.c
FAILED: cd /home/jfonseca/work/vmware/tests/piglit/build/lin64 && 
/usr/bin/python2.7 
/home/jfonseca/work/vmware/tests/piglit/tests/util/gen_dispatch.py 
--out-dir /home/jfonseca/work/vmware/tests/piglit/build/lin64/tests/util
Traceback (most recent call last):
   File 
"/home/jfonseca/work/vmware/tests/piglit/tests/util/gen_dispatch.py", 
line 195, in <module>
     main()
   File 
"/home/jfonseca/work/vmware/tests/piglit/tests/util/gen_dispatch.py", 
line 68, in main
     gl_registry = registry.gl.parse()
   File 
"/home/jfonseca/work/vmware/tests/piglit/tests/util/../../registry/gl.py", 
line 62, in parse
     return Registry(xml_registry)
   File 
"/home/jfonseca/work/vmware/tests/piglit/tests/util/../../registry/gl.py", 
line 363, in __init__
     self.commands.add(command)
   File 
"/home/jfonseca/work/vmware/tests/piglit/tests/util/../../registry/gl.py", 
line 220, in add
     key = self.__key_func(value)
TypeError: 'unicode' object is not callable


Jose

On 28/01/16 00:06, baker.dylan.c at gmail.com wrote:
> From: Dylan Baker <baker.dylan.c at gmail.com>
>
> This rather lengthy series incrementally ports the framework from
> running only on python 2.7 to running on python 2.7 and 3.3+ (3.2 might
> already work, but I haven't tested it. If there is interest in 3.2
> support I'd rather worry about that after landing this series).
>
> This approach uses six, which has already been used to hybrize the
> generators to run under python 2 and 3. This is a compatibility library,
> and should provide a fairly straight forward path to remove python 2.x
> support when piglit is ready to make the transition to a pure 3.x
> codebase.
>
> I have made every effort to ensure that python 2.7 does not break
> across the series for core piglit functionality. I've tested running,
> aggregating, console and html summary, as well as both the JUnit and
> JSON backends. All unittests also pass across the whole of the series.
> Python 3 does not work fully until the end of the series.
>
> As far as I can tell the dEQP based tests also work, at least by the end
> of the series. I have not tested some of the external suites: igt, xts,
> and opencv opencl have not been tested.
>
> I'll admit that the series is a bit of a smattering of "fix this thing,
> fix that thing" I've tried to organize some of the changes together,
> particularly the six related changes. However, the series is big, and a
> few of the patches (particularly the unicode/byte/str one) are very
> invasive and moving them or anything from one side or the other is a
> non-trivial amount of work.
>
> Everything should continue to work as it did before, I've tried to
> ensure that for Windows no new features (namely timeouts) get enabled in
> python 3.x (I'll leave it up to someone using Windows to add that if
> they want it), but I don't have a Windows system to test on.
>
> This is available at my github:
> https://github.com/dcbaker/piglit submit/hybrid-python
>
> Dylan Baker (44):
>    tox.ini: drop explicit coverage generation
>    python: use future print, division, and absolute_import
>    python: use six.moves.range
>    framework: use six.moves.configparser
>    framework: use six.moves.BaseHTTPServer shim
>    unittests: use six.moves.getcwd
>    framework: use six.moves.zip
>    python: use six.moves.cStringIO
>    framework/test/base.py: fix class/__slots__ conflict in python3
>    framework: use six.add_metaclass
>    python: use six unicode/bytes/str handling
>    framework/compat.py: Add a small module with some extra compat
>    framework/results.py: use compat
>    python: use six.{iter,view}{items,keys,values}
>    framework/profile.py: replace dictionary-comprehension with dict()
>    framework/programs/run.py: use PIGLIT_CONFIG.safe_get
>    unittests: try to import mock from unittest
>    base_tests.py: make tests for timeout run on python 3.x
>    framework/test/base.py: Make timeout work in python 3.x
>    base_tests.py: Add tests for an exception in Test.execute
>    unittests/results_tests.py: Add traceback tests
>    framework,unittests: use __future__ unicode_literals
>    opengl.py: fix bytes returned from wflinfo.
>    compression.py: use the proper read and write modes for python
>      versions
>    unittest/utils.py: fix tempfile modes for python3
>    framework/status.py: Add __hash__ method to NoChangeStatus
>    dmesg.py: Fix str/bytes/unicode for python 2/3 compatibility
>    status_tests.py: drop bytes tests, status doesn't support bytes
>      anymore
>    framework/results.py: fix StringDescriptor handling of bytes
>    framework/test/base.py: fix compare to None in python 3
>    framework/log.py: fix next() call
>    log_tests.py: fix incompatible seek for python 3
>    Framework/backends/junit.py: fix bytes/unicode handling on python3
>    framework/backends/json.py: use text_type instead for str
>    framework/core.py: make collect_system_info return unicode
>    framework/test/glsl_parser_test.py: stop supporting bytes
>    unittests/options_tests.py: fix mocking for python 3.x
>    unittests/opengl_tests.py: stop mock leakage
>    options_tests.py: Fix test that happened to work on python 2
>    gen_dispatch.py: don't use tabs
>    summary/html: fix python 3 encoding issues.
>    CMake: Enable python 3.x for building
>    piglit: change piglit command to python 3
>    tox.ini: add python 3.3-3.5 for standard tests.
>
>   CMakeLists.txt                                     |   4 +-
>   framework/backends/__init__.py                     |   9 +-
>   framework/backends/abstract.py                     |  11 +-
>   framework/backends/compression.py                  | 238 +++++++++++----------
>   framework/backends/json.py                         |  20 +-
>   framework/backends/junit.py                        |  18 +-
>   framework/backends/register.py                     |   5 +-
>   .../summary_html_tests.py => framework/compat.py   |  32 +--
>   framework/core.py                                  |  23 +-
>   framework/dmesg.py                                 |  22 +-
>   framework/exceptions.py                            |   8 +-
>   framework/grouptools.py                            |  13 +-
>   framework/log.py                                   |  18 +-
>   framework/options.py                               |  10 +-
>   framework/profile.py                               |  28 +--
>   framework/programs/parsers.py                      |   6 +-
>   framework/programs/run.py                          |  40 ++--
>   framework/programs/summary.py                      |   8 +-
>   framework/results.py                               |  32 +--
>   framework/status.py                                |  38 ++--
>   framework/summary/__init__.py                      |   6 +-
>   framework/summary/common.py                        |  16 +-
>   framework/summary/console_.py                      |  12 +-
>   framework/summary/feature.py                       |   6 +-
>   framework/summary/html_.py                         |  11 +-
>   framework/test/__init__.py                         |   6 +-
>   framework/test/base.py                             | 122 +++++++----
>   framework/test/deqp.py                             |  12 +-
>   framework/test/gleantest.py                        |   4 +-
>   framework/test/glsl_parser_test.py                 |  31 ++-
>   framework/test/gtest.py                            |   5 +-
>   framework/test/oclconform.py                       |   5 +-
>   framework/test/opencv.py                           |   5 +-
>   framework/test/opengl.py                           |  10 +-
>   framework/test/piglit_test.py                      |   4 +-
>   framework/test/shader_test.py                      |  18 +-
>   piglit                                             |   2 +-
>   registry/gl.py                                     |   5 +-
>   templates/feature.mako                             |   4 +-
>   templates/index.mako                               |  10 +-
>   templates/testrun_info.mako                        |   7 +-
>   tests/all.py                                       |   8 +-
>   tests/cl.py                                        |   4 +-
>   tests/cpu.py                                       |   3 +
>   tests/cts.py                                       |   4 +-
>   tests/deqp_gles2.py                                |   4 +
>   tests/deqp_gles3.py                                |   4 +
>   tests/deqp_gles31.py                               |   4 +
>   tests/es3conform.py                                |   4 +
>   tests/glslparser.py                                |   4 +
>   tests/gpu.py                                       |   4 +
>   tests/igt.py                                       |   5 +-
>   tests/llvmpipe.py                                  |   4 +
>   tests/oglconform.py                                |   3 +
>   tests/quick.py                                     |   4 +
>   tests/quick_cl.py                                  |   4 +
>   tests/sanity.py                                    |   4 +
>   tests/shader.py                                    |   4 +
>   tests/util/gen_dispatch.py                         |   6 +-
>   tests/xts-render.py                                |   3 +
>   tests/xts.py                                       |   4 +-
>   tox.ini                                            |  16 +-
>   unittests/backends_tests.py                        |   7 +-
>   unittests/base_tests.py                            |  77 ++++++-
>   unittests/compressed_backend_tests.py              |  12 +-
>   unittests/core_tests.py                            |  11 +-
>   unittests/deqp_tests.py                            |  11 +-
>   unittests/dmesg_tests.py                           |  29 ++-
>   unittests/exceptions_tests.py                      |   4 +-
>   unittests/gleantest_tests.py                       |  10 +-
>   unittests/glsl_parser_test_tests.py                |  16 +-
>   unittests/grouptools_tests.py                      |   4 +-
>   unittests/gtest_tests.py                           |   4 +-
>   unittests/integration_tests.py                     |   4 +-
>   unittests/json_backend_tests.py                    |   4 +-
>   unittests/json_results_update_tests.py             |  12 +-
>   unittests/json_tests.py                            |   4 +-
>   unittests/junit_backends_tests.py                  |   4 +-
>   unittests/log_tests.py                             |   6 +-
>   unittests/oglconform_tests.py                      |  16 +-
>   unittests/opencv_tests.py                          |   4 +-
>   unittests/opengl_tests.py                          | 164 +++++++-------
>   unittests/options_tests.py                         |  17 +-
>   unittests/piglit_test_tests.py                     |  10 +-
>   unittests/profile_tests.py                         |  10 +-
>   unittests/results_tests.py                         |  52 +++--
>   unittests/run_parser_tests.py                      |   4 +-
>   unittests/shader_test_tests.py                     |  20 +-
>   unittests/status_tests.py                          |  11 +-
>   unittests/summary_common_tests.py                  |   7 +-
>   unittests/summary_console_tests.py                 |   9 +-
>   unittests/summary_html_tests.py                    |   7 +-
>   unittests/test_lists.py                            |   4 +-
>   unittests/utils.py                                 |  27 ++-
>   94 files changed, 1017 insertions(+), 548 deletions(-)
>   copy unittests/summary_html_tests.py => framework/compat.py (61%)
>



More information about the Piglit mailing list