[Piglit] [PATCH 00/13] Add shader and glslparser tests with loop

Dylan Baker baker.dylan.c at gmail.com
Thu Feb 12 10:38:36 PST 2015

This is a second set of patches from my rather lengthy RFC from a few
weeks ago.

This one removes the need for add_shader_test_dir and
import_glsl_parser_tests, and replaces them with a loop at the top of
all.py. As groundwork it replaces the TestProfile.tests dictionary with
a new Tree object, which is like a dictionary but it automatically
grows branches whenever they are used, removing the need for the very
common pattern:
foobar = {}
spec['foo'] = {}
spec['foo']['bar'] = {}
spec['foo']['bar']['foobar'] = foobar

And allowing it to be replaced with
foobar = spec['foo']['bar']['foobar']

This makes some additional changes to the json on disk format, which are
explained in the later patches, with the only really problem being that
in order to make all of this work clean the final 3 patches will need to
combine into one very large patch, or bisecting may not work.

If someone has a better idea for how to do this (other than introducing
multiple json version bumps), I'd be happy to make those changes.

ultimately this removes a lot of code from hot paths, and adds code for
updating the json results version, which isn't a particularly hot path
and should be missed the majority of the time.

Dylan Baker (13):
  profiles: add new profiles that only run specific test classes.
  profile.py: Use a Tree structure for Profile.tests
  profile.py: Lower all test keys before getting and setting.
  shader_test.py: Removed recursive keyword from add_shader_test_dir
  shader_test.py: remove add_shader_test
  shader_test.py: use os.path.splitext instead of rsplit('.')
  shader_test.py: use os.walk in add_shader_test_Dir
  shader_test.py: convert add_shader_test_dir to use a flat group
  all.py: Replace use of add_glsl_parser_test with import_glsl_parser_test
  glsl_parser_test.py: remove add_glsl_parser_test
  all.py: replace add_shader_test_dir with loop in all.py
  framework: update json version to v4 to fix test changes
  all.py: replace import_glsl_parser_test with loop search

 README                                    |   6 +
 framework/backends/json.py                |   2 +-
 framework/profile.py                      |  63 ++-
 framework/results.py                      |  55 ++
 framework/test/glsl_parser_test.py        |  69 +--
 framework/test/shader_test.py             |  34 --
 framework/tests/glsl_parser_test_tests.py |   4 +-
 framework/tests/profile_tests.py          |  70 ++-
 framework/tests/results_v2_tests.py       |  92 ++++
 framework/tests/results_v3_tests.py       | 134 +++++
 framework/tests/shader_test_tests.py      |  11 -
 framework/tests/utils.py                  |  48 ++
 tests/all.py                              | 873 ++++++++----------------------
 tests/cl.py                               |  25 +-
 tests/glslparser.py                       |   8 +
 tests/gpu.py                              |   6 +-
 tests/quick.py                            |   9 +-
 tests/shader.py                           |   8 +
 18 files changed, 701 insertions(+), 816 deletions(-)
 create mode 100644 framework/tests/results_v2_tests.py
 create mode 100644 framework/tests/results_v3_tests.py
 create mode 100644 tests/glslparser.py
 create mode 100644 tests/shader.py


More information about the Piglit mailing list