Piglit as a testrunner is _so_ much better than automake's make check. Based upon a quick patch from Kenneth Graunke.
Signed-off-by: Daniel Vetter <[email protected]> --- tests/igt.tests | 99 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 99 insertions(+) create mode 100644 tests/igt.tests diff --git a/tests/igt.tests b/tests/igt.tests new file mode 100644 index 0000000..863000a --- /dev/null +++ b/tests/igt.tests @@ -0,0 +1,99 @@ +# +# Permission is hereby granted, free of charge, to any person +# obtaining a copy of this software and associated documentation +# files (the "Software"), to deal in the Software without +# restriction, including without limitation the rights to use, +# copy, modify, merge, publish, distribute, sublicense, and/or +# sell copies of the Software, and to permit persons to whom the +# Software is furnished to do so, subject to the following +# conditions: +# +# This permission notice shall be included in all copies or +# substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY +# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE +# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR +# PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHOR(S) BE +# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF +# OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +# DEALINGS IN THE SOFTWARE. + +import os +import re +import sys +import subprocess + +from os import path +from framework.core import * +from framework.exectest import * + +############################################################################# +##### IGTTest: Execute an intel-gpu-tools test +##### +##### To use this, create an igt symlink in piglit/bin which points to the root +##### of the intel-gpu-tools sources with the compiled tests. Piglit will +##### automatically add all tests into the 'igt' category. +############################################################################# + +if not os.path.exists(os.path.join(testBinDir, 'igt')): + sys.exit(0) + +# Chase the piglit/bin/igt symlink to find where the tests really live. +igtTestRoot = path.join(path.realpath(path.join(testBinDir, 'igt')), 'tests') + +profile = TestProfile() + +class IGTTest(ExecTest): + def __init__(self, binary): + ExecTest.__init__(self, [path.join(igtTestRoot, binary)]) + + def interpretResult(self, out, returncode, results): + if returncode == 0: + results['result'] = 'pass' + elif returncode == 77: + results['result'] = 'skip' + else: + results['result'] = 'fail' + return out + +def listTests(listname): + oldDir = os.getcwd() + try: + os.chdir(igtTestRoot) + proc = subprocess.Popen( + ['make', listname ], + stdout=subprocess.PIPE, + stderr=subprocess.PIPE, + env=os.environ.copy(), + universal_newlines=True + ) + out, err = proc.communicate() + returncode = proc.returncode + finally: + os.chdir(oldDir) + + lines = out.split('\n') + found_header = False + progs = "" + + for line in lines: + if found_header: + progs = line.split(" ") + break + + if "TESTLIST" in line: + found_header = True; + + return progs + +singleTests = listTests("list-single-tests") + +for test in singleTests: + profile.test_list['igt/' + test] = IGTTest(test) + +multiTests = listTests("list-multi-tests") + +for test in singleTests: + profile.test_list['igt/' + test] = IGTTest(test) -- 1.7.11.7 _______________________________________________ Piglit mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/piglit
