summaryrefslogtreecommitdiff
path: root/tests/oglconform.py
diff options
context:
space:
mode:
authorKenneth Graunke <kenneth@whitecape.org>2014-01-31 13:10:43 -0800
committerKenneth Graunke <kenneth@whitecape.org>2014-01-31 13:12:02 -0800
commit4c0e8dd16faa5b17713988921c7a1563430ded34 (patch)
tree796b02398b00949d272c9c2b680bec9d48b49542 /tests/oglconform.py
parentaad806f88faa33f1ff730f360d86ebaa3447e757 (diff)
Rename oglconfirm.py to oglconform.py.
Diffstat (limited to 'tests/oglconform.py')
-rw-r--r--tests/oglconform.py77
1 files changed, 77 insertions, 0 deletions
diff --git a/tests/oglconform.py b/tests/oglconform.py
new file mode 100644
index 000000000..b9b79b8fd
--- /dev/null
+++ b/tests/oglconform.py
@@ -0,0 +1,77 @@
+#!/usr/bin/env python
+#
+# 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 framework.core import TestProfile, testBinDir
+from framework.exectest import ExecTest
+from os import path
+
+__all__ = ['profile']
+
+bin_oglconform = path.join(testBinDir, 'oglconform')
+
+if not os.path.exists(bin_oglconform):
+ sys.exit(0)
+
+profile = TestProfile()
+
+#############################################################################
+##### OGLCTest: Execute a sub-test of the Intel oglconform test suite.
+#####
+##### To use this, create an 'oglconform' symlink in piglit/bin. Piglit
+##### will obtain a list of tests from oglconform and add them all.
+#############################################################################
+class OGLCTest(ExecTest):
+ skip_re = re.compile(r'Total Not run: 1|no test in schedule is compat|GLSL [13].[345]0 is not supported|wont be scheduled due to lack of compatible fbconfig')
+
+ def __init__(self, category, subtest):
+ ExecTest.__init__(self, [bin_oglconform, '-minFmt', '-v', '4', '-test', category, subtest])
+
+ def interpretResult(self, out, returncode, results, dmesg):
+ if self.skip_re.search(out) is not None:
+ results['result'] = 'skip'
+ elif re.search('Total Passed : 1', out) is not None:
+ results['result'] = 'dmesg-warn' if dmesg != '' else 'pass'
+ else:
+ results['result'] = 'dmesg-fail' if dmesg != '' else 'fail'
+ return out
+
+# Create a new top-level 'oglconform' category
+
+testlist_file = '/tmp/oglc.tests'
+
+with open(os.devnull, "w") as devnull:
+ subprocess.call([bin_oglconform, '-generateTestList', testlist_file], stdout=devnull.fileno(), stderr=devnull.fileno())
+
+with open(testlist_file) as f:
+ testlist = f.read().splitlines()
+ for l in testlist:
+ try:
+ category, test = l.split()
+ profile.test_list[path.join('oglconform', category, test)] = OGLCTest(category, test)
+ except:
+ continue