diff options
author | Daniel Vetter <daniel.vetter@ffwll.ch> | 2012-11-27 20:40:07 +0100 |
---|---|---|
committer | Daniel Vetter <daniel.vetter@ffwll.ch> | 2012-11-28 09:51:42 +0100 |
commit | 7196b0fe4feef178755b4cbf1d91e879e8e01cac (patch) | |
tree | d502d82f1da915e6552a5414c02072cdd511327b | |
parent | ac686c40ad4173f52f144120b6e212b2a6afa8e9 (diff) |
igt: new testinfrastructure to support drm/i915 kernel tests
Piglit as a testrunner is _so_ much better than automake's make check.
Based upon a quick patch from Kenneth Graunke.
v2: Add copyright header.
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
-rw-r--r-- | tests/igt.tests | 101 |
1 files changed, 101 insertions, 0 deletions
diff --git a/tests/igt.tests b/tests/igt.tests new file mode 100644 index 00000000..d576cd19 --- /dev/null +++ b/tests/igt.tests @@ -0,0 +1,101 @@ +# +# Copyright (c) 2012 Intel Corporation +# +# 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) |