This finds the following additional tests: spec/arb_seperate_shader_objects/compiler/1.10/layout-location.frag spec/arb_seperate_shader_objects/compiler/1.10/layout-location.vert spec/arb_seperate_shader_objects/compiler/1.20/layout-location.frag spec/arb_seperate_shader_objects/compiler/1.20/layout-location.vert spec/arb_seperate_shader_objects/compiler/1.30/layout-location.frag spec/arb_seperate_shader_objects/compiler/1.30/layout-location.vert spec/arb_seperate_shader_objects/compiler/1.40/layout-location.frag spec/arb_seperate_shader_objects/compiler/1.40/layout-location.vert spec/arb_seperate_shader_objects/compiler/1.50/layout-location.frag spec/arb_seperate_shader_objects/compiler/1.50/layout-location.vert spec/arb_seperate_shader_objects/compiler/1.50/layout-location.geom
spec/arb_seperate_shader_objects/compiler/1.50/layout-location.geom fails on my Ivybridge This also needs to be merged back into the previous two commits to create a clean, linear history with no regressions. Fore review purposes it makes sense not to merge them. Signed-off-by: Dylan Baker <[email protected]> --- framework/data/results_v3_to_v4.json | 189 +++++++++++++++++++++++++++++- framework/test/glsl_parser_test.py | 67 ++++------- framework/tests/glsl_parser_test_tests.py | 4 +- tests/all.py | 160 ++++--------------------- 4 files changed, 236 insertions(+), 184 deletions(-) diff --git a/framework/data/results_v3_to_v4.json b/framework/data/results_v3_to_v4.json index 6605e5f..da84bb5 100644 --- a/framework/data/results_v3_to_v4.json +++ b/framework/data/results_v3_to_v4.json @@ -3,5 +3,192 @@ ["spec/arb_texture_rg/fs-shadow2d-red-02", "spec/arb_texture_rg/execution/fs-shadow2d-red-02"], ["spec/arb_texture_rg/fs-shadow2d-red-03", "spec/arb_texture_rg/execution/fs-shadow2d-red-03"], ["spec/arb_draw_instanced/draw-non-instanced", "spec/arb_draw_instanced/execution/draw-non-instanced"], - ["spec/arb_draw_instanced/instance-array-dereference", "spec/arb_draw_instanced/execution/instance-array-dereference"] + ["spec/arb_draw_instanced/instance-array-dereference", "spec/arb_draw_instanced/execution/instance-array-dereference"], + ["glslparsertest/array01.vert", "glslparsertest/shaders/array01.vert"], + ["glslparsertest/array02.vert", "glslparsertest/shaders/array02.vert"], + ["glslparsertest/array1.frag", "glslparsertest/shaders/array1.frag"], + ["glslparsertest/array2.frag", "glslparsertest/shaders/array2.frag"], + ["glslparsertest/array3.frag", "glslparsertest/shaders/array3.frag"], + ["glslparsertest/array4.frag", "glslparsertest/shaders/array4.frag"], + ["glslparsertest/array5.frag", "glslparsertest/shaders/array5.frag"], + ["glslparsertest/array6.frag", "glslparsertest/shaders/array6.frag"], + ["glslparsertest/array7.frag", "glslparsertest/shaders/array7.frag"], + ["glslparsertest/array8.frag", "glslparsertest/shaders/array8.frag"], + ["glslparsertest/array9.frag", "glslparsertest/shaders/array9.frag"], + ["glslparsertest/array10.frag", "glslparsertest/shaders/array10.frag"], + ["glslparsertest/array11.frag", "glslparsertest/shaders/array11.frag"], + ["glslparsertest/array12.frag", "glslparsertest/shaders/array12.frag"], + ["glslparsertest/array13.frag", "glslparsertest/shaders/array13.frag"], + ["glslparsertest/attribute.frag", "glslparsertest/shaders/attribute.frag"], + ["glslparsertest/attribute.vert", "glslparsertest/shaders/attribute.vert"], + ["glslparsertest/attribute1.vert", "glslparsertest/shaders/attribute1.vert"], + ["glslparsertest/attribute2.vert", "glslparsertest/shaders/attribute2.vert"], + ["glslparsertest/break.frag", "glslparsertest/shaders/break.frag"], + ["glslparsertest/cgdatatypes.frag", "glslparsertest/shaders/cgdatatypes.frag"], + ["glslparsertest/cgstandardlibrary.frag", "glslparsertest/shaders/cgstandardlibrary.frag"], + ["glslparsertest/comma1.vert", "glslparsertest/shaders/comma1.vert"], + ["glslparsertest/comma2.frag", "glslparsertest/shaders/comma2.frag"], + ["glslparsertest/comma2.vert", "glslparsertest/shaders/comma2.vert"], + ["glslparsertest/comma3.vert", "glslparsertest/shaders/comma3.vert"], + ["glslparsertest/comment.frag", "glslparsertest/shaders/comment.frag"], + ["glslparsertest/conditional1.frag", "glslparsertest/shaders/conditional1.frag"], + ["glslparsertest/conditional2.frag", "glslparsertest/shaders/conditional2.frag"], + ["glslparsertest/conditional3.frag", "glslparsertest/shaders/conditional3.frag"], + ["glslparsertest/constantconversions.frag", "glslparsertest/shaders/constantconversions.frag"], + ["glslparsertest/constfunc.frag", "glslparsertest/shaders/constfunc.frag"], + ["glslparsertest/constructor1.frag", "glslparsertest/shaders/constructor1.frag"], + ["glslparsertest/constructor2.frag", "glslparsertest/shaders/constructor2.frag"], + ["glslparsertest/constructor3.v110.frag", "glslparsertest/shaders/constructor3.v110.frag"], + ["glslparsertest/continue.frag", "glslparsertest/shaders/continue.frag"], + ["glslparsertest/correctbuiltinoveride.frag", "glslparsertest/shaders/correctbuiltinoveride.frag"], + ["glslparsertest/correctcomma.frag", "glslparsertest/shaders/correctcomma.frag"], + ["glslparsertest/correctconstfolding1.vert", "glslparsertest/shaders/correctconstfolding1.vert"], + ["glslparsertest/correctconstfolding2.vert", "glslparsertest/shaders/correctconstfolding2.vert"], + ["glslparsertest/correctconstruct.vert", "glslparsertest/shaders/correctconstruct.vert"], + ["glslparsertest/correctextension1.v110.frag", "glslparsertest/shaders/correctextension1.v110.frag"], + ["glslparsertest/correctextension10.v110.frag", "glslparsertest/shaders/correctextension10.v110.frag"], + ["glslparsertest/correctextension4.v110.frag", "glslparsertest/shaders/correctextension4.v110.frag"], + ["glslparsertest/correctfull.frag", "glslparsertest/shaders/correctfull.frag"], + ["glslparsertest/correctfull.vert", "glslparsertest/shaders/correctfull.vert"], + ["glslparsertest/correctfuncoverload.frag", "glslparsertest/shaders/correctfuncoverload.frag"], + ["glslparsertest/correctfuncoverload.vert", "glslparsertest/shaders/correctfuncoverload.vert"], + ["glslparsertest/correctfunction.vert", "glslparsertest/shaders/correctfunction.vert"], + ["glslparsertest/correctfunction1.vert", "glslparsertest/shaders/correctfunction1.vert"], + ["glslparsertest/correctmatcomma.frag", "glslparsertest/shaders/correctmatcomma.frag"], + ["glslparsertest/correctmatcomma2.frag", "glslparsertest/shaders/correctmatcomma2.frag"], + ["glslparsertest/correctmodule.frag", "glslparsertest/shaders/correctmodule.frag"], + ["glslparsertest/correctparse1.frag", "glslparsertest/shaders/correctparse1.frag"], + ["glslparsertest/correctparse2.frag", "glslparsertest/shaders/correctparse2.frag"], + ["glslparsertest/correctparse2.vert", "glslparsertest/shaders/correctparse2.vert"], + ["glslparsertest/correctparsetest.frag", "glslparsertest/shaders/correctparsetest.frag"], + ["glslparsertest/correctparsetest1.frag", "glslparsertest/shaders/correctparsetest1.frag"], + ["glslparsertest/correctpreprocess5.frag", "glslparsertest/shaders/correctpreprocess5.frag"], + ["glslparsertest/correctpreprocess8.frag", "glslparsertest/shaders/correctpreprocess8.frag"], + ["glslparsertest/correctpreprocess9.frag", "glslparsertest/shaders/correctpreprocess9.frag"], + ["glslparsertest/correctreservedwords.frag", "glslparsertest/shaders/correctreservedwords.frag"], + ["glslparsertest/correctscalarvectorexpressions.frag", "glslparsertest/shaders/correctscalarvectorexpressions.frag"], + ["glslparsertest/correctswizzle1.frag", "glslparsertest/shaders/correctswizzle1.frag"], + ["glslparsertest/correctswizzle1.vert", "glslparsertest/shaders/correctswizzle1.vert"], + ["glslparsertest/correctswizzle2.frag", "glslparsertest/shaders/correctswizzle2.frag"], + ["glslparsertest/correctswizzle2.vert", "glslparsertest/shaders/correctswizzle2.vert"], + ["glslparsertest/correctswizzle3.frag", "glslparsertest/shaders/correctswizzle3.frag"], + ["glslparsertest/correctunsizedarray.frag", "glslparsertest/shaders/correctunsizedarray.frag"], + ["glslparsertest/correctversion.v110.frag", "glslparsertest/shaders/correctversion.v110.frag"], + ["glslparsertest/correctversion1.v110.frag", "glslparsertest/shaders/correctversion1.v110.frag"], + ["glslparsertest/datatype1.frag", "glslparsertest/shaders/datatype1.frag"], + ["glslparsertest/datatype10.frag", "glslparsertest/shaders/datatype10.frag"], + ["glslparsertest/datatype13.frag", "glslparsertest/shaders/datatype13.frag"], + ["glslparsertest/datatype19.frag", "glslparsertest/shaders/datatype19.frag"], + ["glslparsertest/datatype2.frag", "glslparsertest/shaders/datatype2.frag"], + ["glslparsertest/datatype3.frag", "glslparsertest/shaders/datatype3.frag"], + ["glslparsertest/datatype4.frag", "glslparsertest/shaders/datatype4.frag"], + ["glslparsertest/datatype5.frag", "glslparsertest/shaders/datatype5.frag"], + ["glslparsertest/datatype6.frag", "glslparsertest/shaders/datatype6.frag"], + ["glslparsertest/datatype7.frag", "glslparsertest/shaders/datatype7.frag"], + ["glslparsertest/datatype8.frag", "glslparsertest/shaders/datatype8.frag"], + ["glslparsertest/datatype9.frag", "glslparsertest/shaders/datatype9.frag"], + ["glslparsertest/dowhile.frag", "glslparsertest/shaders/dowhile.frag"], + ["glslparsertest/dvec2.frag", "glslparsertest/shaders/dvec2.frag"], + ["glslparsertest/dvec3.frag", "glslparsertest/shaders/dvec3.frag"], + ["glslparsertest/dvec4.frag", "glslparsertest/shaders/dvec4.frag"], + ["glslparsertest/extension2.v110.frag", "glslparsertest/shaders/extension2.v110.frag"], + ["glslparsertest/extension3.v110.frag", "glslparsertest/shaders/extension3.v110.frag"], + ["glslparsertest/extension5.v110.frag", "glslparsertest/shaders/extension5.v110.frag"], + ["glslparsertest/extension6.v110.frag", "glslparsertest/shaders/extension6.v110.frag"], + ["glslparsertest/extension7.v110.frag", "glslparsertest/shaders/extension7.v110.frag"], + ["glslparsertest/extension8.v110.frag", "glslparsertest/shaders/extension8.v110.frag"], + ["glslparsertest/extension9.v110.frag", "glslparsertest/shaders/extension9.v110.frag"], + ["glslparsertest/float2.frag", "glslparsertest/shaders/float2.frag"], + ["glslparsertest/float3.frag", "glslparsertest/shaders/float3.frag"], + ["glslparsertest/float4.frag", "glslparsertest/shaders/float4.frag"], + ["glslparsertest/fragmentonly.vert", "glslparsertest/shaders/fragmentonly.vert"], + ["glslparsertest/fragmentonly1.vert", "glslparsertest/shaders/fragmentonly1.vert"], + ["glslparsertest/fragmentonly2.vert", "glslparsertest/shaders/fragmentonly2.vert"], + ["glslparsertest/fragmentonly3.vert", "glslparsertest/shaders/fragmentonly3.vert"], + ["glslparsertest/fragmentonly4.vert", "glslparsertest/shaders/fragmentonly4.vert"], + ["glslparsertest/function1.frag", "glslparsertest/shaders/function1.frag"], + ["glslparsertest/function2.v110.frag", "glslparsertest/shaders/function2.v110.frag"], + ["glslparsertest/function3.frag", "glslparsertest/shaders/function3.frag"], + ["glslparsertest/function4.frag", "glslparsertest/shaders/function4.frag"], + ["glslparsertest/function5.frag", "glslparsertest/shaders/function5.frag"], + ["glslparsertest/function6.frag", "glslparsertest/shaders/function6.frag"], + ["glslparsertest/function7.frag", "glslparsertest/shaders/function7.frag"], + ["glslparsertest/function8.frag", "glslparsertest/shaders/function8.frag"], + ["glslparsertest/function9.frag", "glslparsertest/shaders/function9.frag"], + ["glslparsertest/function10.frag", "glslparsertest/shaders/function10.frag"], + ["glslparsertest/functionparam.vert", "glslparsertest/shaders/functionparam.vert"], + ["glslparsertest/hvec2.frag", "glslparsertest/shaders/hvec2.frag"], + ["glslparsertest/hvec3.frag", "glslparsertest/shaders/hvec3.frag"], + ["glslparsertest/hvec4.frag", "glslparsertest/shaders/hvec4.frag"], + ["glslparsertest/identifier1.frag", "glslparsertest/shaders/identifier1.frag"], + ["glslparsertest/identifier2.frag", "glslparsertest/shaders/identifier2.frag"], + ["glslparsertest/identifier3.frag", "glslparsertest/shaders/identifier3.frag"], + ["glslparsertest/if1.frag", "glslparsertest/shaders/if1.frag"], + ["glslparsertest/if2.frag", "glslparsertest/shaders/if2.frag"], + ["glslparsertest/includedirective.frag", "glslparsertest/shaders/includedirective.frag"], + ["glslparsertest/increment1.frag", "glslparsertest/shaders/increment1.frag"], + ["glslparsertest/increment2.frag", "glslparsertest/shaders/increment2.frag"], + ["glslparsertest/increment3.frag", "glslparsertest/shaders/increment3.frag"], + ["glslparsertest/increment4.frag", "glslparsertest/shaders/increment4.frag"], + ["glslparsertest/increment6.frag", "glslparsertest/shaders/increment6.frag"], + ["glslparsertest/main1.vert", "glslparsertest/shaders/main1.vert"], + ["glslparsertest/main2.vert", "glslparsertest/shaders/main2.vert"], + ["glslparsertest/main3.vert", "glslparsertest/shaders/main3.vert"], + ["glslparsertest/mainparameters.vert", "glslparsertest/shaders/mainparameters.vert"], + ["glslparsertest/matrix.v110.frag", "glslparsertest/shaders/matrix.v110.frag"], + ["glslparsertest/normal.vert", "glslparsertest/shaders/normal.vert"], + ["glslparsertest/parser1.vert", "glslparsertest/shaders/parser1.vert"], + ["glslparsertest/parser10.frag", "glslparsertest/shaders/parser10.frag"], + ["glslparsertest/parser3.frag", "glslparsertest/shaders/parser3.frag"], + ["glslparsertest/parser4.frag", "glslparsertest/shaders/parser4.frag"], + ["glslparsertest/parser5.frag", "glslparsertest/shaders/parser5.frag"], + ["glslparsertest/parser6.frag", "glslparsertest/shaders/parser6.frag"], + ["glslparsertest/parser7.frag", "glslparsertest/shaders/parser7.frag"], + ["glslparsertest/parser8.frag", "glslparsertest/shaders/parser8.frag"], + ["glslparsertest/parser9.frag", "glslparsertest/shaders/parser9.frag"], + ["glslparsertest/parsetest3.frag", "glslparsertest/shaders/parsetest3.frag"], + ["glslparsertest/parsetest4.frag", "glslparsertest/shaders/parsetest4.frag"], + ["glslparsertest/preprocess0.frag", "glslparsertest/shaders/preprocess0.frag"], + ["glslparsertest/preprocess1.frag", "glslparsertest/shaders/preprocess1.frag"], + ["glslparsertest/preprocess2.frag", "glslparsertest/shaders/preprocess2.frag"], + ["glslparsertest/preprocess3.frag", "glslparsertest/shaders/preprocess3.frag"], + ["glslparsertest/preprocess4.frag", "glslparsertest/shaders/preprocess4.frag"], + ["glslparsertest/preprocess6.frag", "glslparsertest/shaders/preprocess6.frag"], + ["glslparsertest/preprocess7.frag", "glslparsertest/shaders/preprocess7.frag"], + ["glslparsertest/preprocess10.frag", "glslparsertest/shaders/preprocess10.frag"], + ["glslparsertest/scoping1.frag", "glslparsertest/shaders/scoping1.frag"], + ["glslparsertest/scoping2.frag", "glslparsertest/shaders/scoping2.frag"], + ["glslparsertest/struct1.frag", "glslparsertest/shaders/struct1.frag"], + ["glslparsertest/struct2.frag", "glslparsertest/shaders/struct2.frag"], + ["glslparsertest/struct3.frag", "glslparsertest/shaders/struct3.frag"], + ["glslparsertest/struct4.frag", "glslparsertest/shaders/struct4.frag"], + ["glslparsertest/struct5.frag", "glslparsertest/shaders/struct5.frag"], + ["glslparsertest/struct6.frag", "glslparsertest/shaders/struct6.frag"], + ["glslparsertest/struct7.frag", "glslparsertest/shaders/struct7.frag"], + ["glslparsertest/struct8.frag", "glslparsertest/shaders/struct8.frag"], + ["glslparsertest/struct9.frag", "glslparsertest/shaders/struct9.frag"], + ["glslparsertest/struct10.frag", "glslparsertest/shaders/struct10.frag"], + ["glslparsertest/struct11.frag", "glslparsertest/shaders/struct11.frag"], + ["glslparsertest/swizzle1.frag", "glslparsertest/shaders/swizzle1.frag"], + ["glslparsertest/swizzle2.frag", "glslparsertest/shaders/swizzle2.frag"], + ["glslparsertest/swizzle3.frag", "glslparsertest/shaders/swizzle3.frag"], + ["glslparsertest/ternaryop.frag", "glslparsertest/shaders/ternaryop.frag"], + ["glslparsertest/texturerectanglesamplers.frag", "glslparsertest/shaders/texturerectanglesamplers.frag"], + ["glslparsertest/typecast.frag", "glslparsertest/shaders/typecast.frag"], + ["glslparsertest/uniform.frag", "glslparsertest/shaders/uniform.frag"], + ["glslparsertest/uniform1.frag", "glslparsertest/shaders/uniform1.frag"], + ["glslparsertest/varying.frag", "glslparsertest/shaders/varying.frag"], + ["glslparsertest/varying1.frag", "glslparsertest/shaders/varying1.frag"], + ["glslparsertest/varying2.frag", "glslparsertest/shaders/varying2.frag"], + ["glslparsertest/varying3.frag", "glslparsertest/shaders/varying3.frag"], + ["glslparsertest/vector.frag", "glslparsertest/shaders/vector.frag"], + ["glslparsertest/version2.v110.frag", "glslparsertest/shaders/version2.v110.frag"], + ["glslparsertest/version3.v110.frag", "glslparsertest/shaders/version3.v110.frag"], + ["glslparsertest/vertex.vert", "glslparsertest/shaders/vertex.vert"], + ["glslparsertest/vertexonly.frag", "glslparsertest/shaders/vertexonly.frag"], + ["glslparsertest/vertexonly1.frag", "glslparsertest/shaders/vertexonly1.frag"], + ["glslparsertest/vertexonly2.frag", "glslparsertest/shaders/vertexonly2.frag"], + ["glslparsertest/while.frag", "glslparsertest/shaders/while.frag"], + ["glslparsertest/while1.frag", "glslparsertest/shaders/while1.frag"], + ["glslparsertest/while2.frag", "glslparsertest/shaders/while2.frag"] ] diff --git a/framework/test/glsl_parser_test.py b/framework/test/glsl_parser_test.py index 4ee2794..0ab3b0e 100644 --- a/framework/test/glsl_parser_test.py +++ b/framework/test/glsl_parser_test.py @@ -23,47 +23,28 @@ from __future__ import print_function, absolute_import import os -import os.path as path import re import sys -import framework.grouptools as grouptools from .piglit_test import PiglitBaseTest __all__ = [ 'GLSLParserTest', - 'import_glsl_parser_tests', + 'GLSLParserError', + 'GLSLParserNoConfigError', ] -def import_glsl_parser_tests(group, basepath, subdirectories): - """ - Recursively register each shader source file in the given - ``subdirectories`` as a GLSLParserTest . +class GLSLParserError(Exception): + pass - :subdirectories: A list of subdirectories under the basepath. - The name with which each test is registered into the given group is - the shader source file's path relative to ``basepath``. For example, - if:: - import_glsl_parser_tests(group, 'a', ['b1', 'b2']) - is called and the file 'a/b1/c/d.frag' exists, then the test is - registered into the group as ``group['b1/c/d.frag']``. - """ - for d in subdirectories: - walk_dir = path.join(basepath, d) - for (dirpath, dirnames, filenames) in os.walk(walk_dir): - # Ignore dirnames. - for f in filenames: - # Add f as a test if its file extension is good. - ext = f.rsplit('.')[-1] - if ext in ['vert', 'tesc', 'tese', 'geom', 'frag', 'comp']: - filepath = path.join(dirpath, f) - # testname := filepath relative to - # basepath. - testname = grouptools.from_path( - os.path.relpath(filepath, basepath)) - group[testname] = GLSLParserTest(filepath) +class GLSLParserNoConfigError(GLSLParserError): + pass + + +class GLSLParserInternalError(GLSLParserError): + pass class GLSLParserTest(PiglitBaseTest): @@ -92,12 +73,12 @@ class GLSLParserTest(PiglitBaseTest): # section to a StringIO and pass that to ConfigParser with open(filepath, 'r') as testfile: try: - config = self.__parser(testfile, filepath) - except GLSLParserException as e: + command = self.__get_command(self.__parser(testfile, filepath), + filepath) + except GLSLParserInternalError as e: print(e.message, file=sys.stderr) sys.exit(1) - command = self.__get_command(config, filepath) super(GLSLParserTest, self).__init__(command, run_concurrent=True) def __get_command(self, config, filepath): @@ -112,8 +93,8 @@ class GLSLParserTest(PiglitBaseTest): """ for opt in ['expect_result', 'glsl_version']: if not config.get(opt): - raise GLSLParserException("Missing required section {} " - "from config".format(opt)) + raise GLSLParserInternalError("Missing required section {} " + "from config".format(opt)) # Create the command and pass it into a PiglitTest() command = [ @@ -135,7 +116,7 @@ class GLSLParserTest(PiglitBaseTest): This method parses the lines of text file, and then returns a StrinIO instance suitable to be parsed by a configparser class. - It will raise GLSLParserExceptions if any part of the parsing + It will raise GLSLParserInternalError if any part of the parsing fails. """ @@ -153,7 +134,7 @@ class GLSLParserTest(PiglitBaseTest): if is_header.match(line): break else: - raise GLSLParserException("No [config] section found!") + raise GLSLParserNoConfigError("No [config] section found!") is_header = re.compile(r'(//|/\*|\*)\s*\[end config\]') is_metadata = re.compile( @@ -172,14 +153,14 @@ class GLSLParserTest(PiglitBaseTest): match = is_metadata.match(line) if match: if match.group('key') not in GLSLParserTest._CONFIG_KEYS: - raise GLSLParserException( + raise GLSLParserInternalError( "Key {0} in file {1} is not a valid key for a " "glslparser test config block".format( match.group('key'), filepath)) elif match.group('key') in self.__found_keys: # If this key has already been encountered throw an error, # there are no duplicate keys allows - raise GLSLParserException( + raise GLSLParserInternalError( 'Duplicate entry for key {0} in file {1}'.format( match.group('key'), filepath)) else: @@ -187,7 +168,7 @@ class GLSLParserTest(PiglitBaseTest): # XXX: this always seems to return a match object, even # when the match is '' if bad.group(): - raise GLSLParserException( + raise GLSLParserInternalError( 'Bad character "{0}" in file: "{1}", ' 'line: "{2}". Only alphanumerics, _, and space ' 'are allowed'.format( @@ -198,14 +179,10 @@ class GLSLParserTest(PiglitBaseTest): self.__found_keys.add(match.group('key')) keys[match.group('key')] = match.group('value') else: - raise GLSLParserException( + raise GLSLParserInternalError( "The config section is malformed." "Check file {0} for line {1}".format(filepath, line)) else: - raise GLSLParserException("No [end config] section found!") + raise GLSLParserInternalError("No [end config] section found!") return keys - - -class GLSLParserException(Exception): - pass diff --git a/framework/tests/glsl_parser_test_tests.py b/framework/tests/glsl_parser_test_tests.py index 37bcc3e..eb0f9bd 100644 --- a/framework/tests/glsl_parser_test_tests.py +++ b/framework/tests/glsl_parser_test_tests.py @@ -48,7 +48,7 @@ def test_no_config_start(): '// glsl_version: 1.00\n' '// [end config]\n') with utils.with_tempfile(content) as tfile: - with nt.assert_raises(SystemExit) as exc: + with nt.assert_raises(glsl.GLSLParserNoConfigError) as exc: glsl.GLSLParserTest(tfile) nt.assert_equal( exc.exception, 'No [config] section found!', @@ -94,7 +94,7 @@ def test_no_expect_result(): def test_no_glsl_version(): """ glsl_version section is required """ - content = ('//\n' + content = ('// [config]\n' '// expect_result: pass\n' '// [end config]\n') with utils.with_tempfile(content) as tfile: diff --git a/tests/all.py b/tests/all.py index c81507b..b8d9435 100644 --- a/tests/all.py +++ b/tests/all.py @@ -10,7 +10,7 @@ import platform from framework import grouptools from framework.profile import TestProfile from framework.test import (PiglitGLTest, GleanTest, ShaderTest, - import_glsl_parser_tests) + GLSLParserTest, GLSLParserNoConfigError) from py_modules.constants import TESTS_DIR, GENERATED_TESTS_DIR @@ -51,11 +51,29 @@ for basedir in [TESTS_DIR, GENERATED_TESTS_DIR]: for filename in filenames: testname, ext = os.path.splitext(filename) if ext == '.shader_test': - group = grouptools.join( - grouptools.from_path(os.path.relpath(dirpath, basedir)), - testname) - profile.test_list[group] = ShaderTest( - os.path.join(dirpath, filename)) + test = ShaderTest(os.path.join(dirpath, filename)) + elif ext in ['.vert', '.tesc', '.tese', '.geom', '.frag', '.comp']: + try: + test = GLSLParserTest(os.path.join(dirpath, filename)) + except GLSLParserNoConfigError: + # In the event that there is no config assume that it is a + # legacy test, and continue + continue + + # For glslparser tests you can have multiple tests with the + # same name, but a different stage, so keep the extension. + testname = filename + else: + continue + + group = grouptools.join( + grouptools.from_path(os.path.relpath(dirpath, basedir)), + testname) + assert group not in profile.test_list, group + + profile.test_list[group] = test + + # List of all of the MSAA sample counts we wish to test MSAA_SAMPLE_COUNTS = (2, 4, 6, 8, 16, 32) @@ -1066,18 +1084,12 @@ spec[grouptools.join('!OpenGL 4.4', 'gl-max-vertex-attrib-stride')] = PiglitGLTe spec[grouptools.join('!OpenGL 4.4', 'tex-errors')] = PiglitGLTest(['tex-errors'], run_concurrent=True) # Group spec/glsl-es-1.00 -import_glsl_parser_tests(spec['glsl-es-1.00'], - os.path.join(TESTS_DIR, 'spec', 'glsl-es-1.00'), - ['compiler']) spec['glsl-es-1.00']['built-in constants'] = PiglitGLTest( ['built-in-constants_gles2', os.path.join(TESTS_DIR, 'spec', 'glsl-es-1.00', 'minimum-maximums.txt')], run_concurrent=True) # Group spec/glsl-1.10 -import_glsl_parser_tests(spec['glsl-1.10'], - os.path.join(TESTS_DIR, 'spec', 'glsl-1.10'), - ['preprocessor', 'compiler']) add_concurrent_test(spec['glsl-1.10']['execution'], ['glsl-render-after-bad-attach']) add_concurrent_test(spec['glsl-1.10']['execution'], ['glsl-1.10-fragdepth']) for mode in ['fixed', 'pos_clipvert', 'clipvert_pos']: @@ -1100,13 +1112,6 @@ add_concurrent_test(spec['glsl-1.10']['api'], ['getactiveattrib', '110']) # Group spec/glsl-1.20 add_concurrent_test(spec['glsl-1.20'], ['glsl-1.20-getactiveuniform-constant']) -import_glsl_parser_tests(spec['glsl-1.20'], - os.path.join(TESTS_DIR, 'spec', 'glsl-1.20'), - ['preprocessor', 'compiler']) -import_glsl_parser_tests(spec['glsl-1.20'], - os.path.join(TESTS_DIR, 'spec', 'glsl-1.20'), - ['compiler']) - def add_recursion_test(group, name): # When the recursion tests fail it is usually because the GLSL # compiler tries to recursively inline the function until the process @@ -1166,10 +1171,6 @@ add_concurrent_test(spec['glsl-1.20']['execution'], ['tex-miplevel-selection', ' # Group spec/glsl-1.30 -import_glsl_parser_tests(spec['glsl-1.30'], - os.path.join(TESTS_DIR, 'spec', 'glsl-1.30'), - ['preprocessor', 'compiler']) - textureSize_samplers_130 = ['sampler1D', 'sampler2D', 'sampler3D', 'samplerCube', 'sampler1DShadow', 'sampler2DShadow', 'samplerCubeShadow', 'sampler1DArray', 'sampler2DArray', 'sampler1DArrayShadow', 'sampler2DArrayShadow', 'isampler1D', 'isampler2D', 'isampler3D', 'isamplerCube', 'isampler1DArray', 'isampler2DArray', 'usampler1D', 'usampler2D', 'usampler3D', 'usamplerCube', 'usampler1DArray', 'usampler2DArray'] for stage in ['vs', 'gs', 'fs']: if stage == 'gs': @@ -1414,9 +1415,6 @@ add_concurrent_test(spec['glsl-1.30']['execution'], ['tex-miplevel-selection', ' add_concurrent_test(spec['glsl-1.30']['execution'], ['tex-miplevel-selection', 'textureProjGradOffset', '2DShadow']) # Group spec/glsl-1.40 -import_glsl_parser_tests(spec['glsl-1.40'], - os.path.join(TESTS_DIR, 'spec', 'glsl-1.40'), - ['compiler']) spec['glsl-1.40']['execution']['tf-no-position'] = PiglitGLTest(['glsl-1.40-tf-no-position'], run_concurrent=True) spec['glsl-1.40']['built-in constants'] = PiglitGLTest( ['built-in-constants', @@ -1449,9 +1447,6 @@ for stage in ['vs', 'gs', 'fs']: ['texelFetch', 'offset', '140', stage, sampler], run_concurrent=True) -import_glsl_parser_tests(spec['glsl-1.50'], - os.path.join(TESTS_DIR, 'spec', 'glsl-1.50'), - ['compiler']) spec['glsl-1.50']['execution']['interface-blocks-api-access-members'] = PiglitGLTest(['glsl-1.50-interface-blocks-api-access-members'], run_concurrent=True) spec['glsl-1.50']['execution']['get-active-attrib-array'] = PiglitGLTest(['glsl-1.50-get-active-attrib-array'], run_concurrent=True) spec['glsl-1.50']['execution']['vs-input-arrays'] = PiglitGLTest(['glsl-1.50-vs-input-arrays'], run_concurrent=True) @@ -1524,14 +1519,7 @@ spec['glsl-3.30']['built-in constants'] = PiglitGLTest( ['built-in-constants', os.path.join(TESTS_DIR, 'spec', 'glsl-3.30', 'minimum-maximums.txt')], run_concurrent=True) -import_glsl_parser_tests(spec['glsl-3.30'], - os.path.join(TESTS_DIR, 'spec', 'glsl-3.30'), - ['compiler']) - # Group spec/glsl-es-3.00 -import_glsl_parser_tests(spec['glsl-es-3.00'], - os.path.join(TESTS_DIR, 'spec', 'glsl-es-3.00'), - ['compiler']) add_concurrent_test(spec['glsl-es-3.00']['execution'], ['varying-struct-centroid_gles3']) spec['glsl-es-3.00']['built-in constants'] = PiglitGLTest( ['built-in-constants_gles3', @@ -1541,22 +1529,6 @@ spec['glsl-es-3.00']['built-in constants'] = PiglitGLTest( profile.test_list[grouptools.join('spec', 'AMD_performance_monitor', 'api')] = PiglitGLTest(['amd_performance_monitor_api']) profile.test_list[grouptools.join('spec', 'AMD_performance_monitor', 'measure')] = PiglitGLTest(['amd_performance_monitor_measure']) -# Group AMD_conservative_depth -import_glsl_parser_tests(spec['AMD_conservative_depth'], - os.path.join(TESTS_DIR, 'spec', 'amd_conservative_depth'), - ['']) - -# Group ARB_arrays_of_arrays -arb_arrays_of_arrays = spec['ARB_arrays_of_arrays'] -import_glsl_parser_tests(arb_arrays_of_arrays, - os.path.join(TESTS_DIR, 'spec', 'arb_arrays_of_arrays'), - ['compiler']) - -# Group AMD_shader_trinary_minmax -import_glsl_parser_tests(spec['AMD_shader_trinary_minmax'], - os.path.join(TESTS_DIR, 'spec', 'amd_shader_trinary_minmax'), - ['']) - # Group ARB_point_sprite arb_point_sprite = spec['ARB_point_sprite'] add_plain_test(arb_point_sprite, ['point-sprite']) @@ -1573,9 +1545,6 @@ arb_tessellation_shader['built-in-constants'] = PiglitGLTest( ['built-in-constants', os.path.join(TESTS_DIR, 'spec', 'arb_tessellation_shader', 'minimum-maximums.txt')], run_concurrent=True) add_concurrent_test(arb_tessellation_shader, ['arb_tessellation_shader-minmax']) -import_glsl_parser_tests(arb_tessellation_shader, - os.path.join(TESTS_DIR, 'spec', - 'arb_tessellation_shader'), ['compiler']) # Group ARB_texture_multisample samplers_atm = ['sampler2DMS', 'isampler2DMS', 'usampler2DMS', @@ -1643,16 +1612,6 @@ for stage in ['vs', 'fs']: comps, swiz, type, sampler] arb_texture_gather[testname] = PiglitGLTest(cmd, run_concurrent=True) -# Group AMD_shader_stencil_export -import_glsl_parser_tests(spec['AMD_shader_stencil_export'], - os.path.join(TESTS_DIR, 'spec', 'amd_shader_stencil_export'), - ['']) - -# Group ARB_shader_stencil_export -import_glsl_parser_tests(spec['ARB_shader_stencil_export'], - os.path.join(TESTS_DIR, 'spec', 'arb_shader_stencil_export'), - ['']) - profile.test_list[grouptools.join('spec', 'ARB_stencil_texturing', 'draw')] = PiglitGLTest(['arb_stencil_texturing-draw'], run_concurrent=True) # Group ARB_sync @@ -1710,10 +1669,6 @@ add_plain_test(arb_draw_elements_base_vertex, ['arb_draw_elements_base_vertex-mu # Group ARB_draw_instanced arb_draw_instanced = spec['ARB_draw_instanced'] -import_glsl_parser_tests(arb_draw_instanced, - os.path.join(TESTS_DIR, 'spec', 'arb_draw_instanced'), - ['']) - arb_draw_instanced['dlist'] = PiglitGLTest(['arb_draw_instanced-dlist'], run_concurrent=True) arb_draw_instanced['elements'] = PiglitGLTest(['arb_draw_instanced-elements'], run_concurrent=True) arb_draw_instanced['negative-arrays-first-negative'] = PiglitGLTest(['arb_draw_instanced-negative-arrays-first-negative'], run_concurrent=True) @@ -1773,11 +1728,6 @@ add_plain_test(nv_fragment_program_option, ['fp-unpack-01']) arb_fragment_coord_conventions = spec['ARB_fragment_coord_conventions'] add_vpfpgeneric(arb_fragment_coord_conventions, 'fp-arb-fragment-coord-conventions-none') add_vpfpgeneric(arb_fragment_coord_conventions, 'fp-arb-fragment-coord-conventions-integer') -import_glsl_parser_tests(arb_fragment_coord_conventions, - os.path.join(TESTS_DIR, 'spec', - 'arb_fragment_coord_conventions'), - ['compiler']) - ati_fragment_shader = spec['ATI_fragment_shader'] add_plain_test(ati_fragment_shader, ['ati-fs-bad-delete']) @@ -1850,9 +1800,6 @@ add_plain_test(arb_framebuffer_srgb, ['framebuffer-srgb']) # must not be concurr add_concurrent_test(arb_framebuffer_srgb, ['arb_framebuffer_srgb-clear']) arb_gpu_shader5 = spec['ARB_gpu_shader5'] -import_glsl_parser_tests(arb_gpu_shader5, - os.path.join(TESTS_DIR, 'spec', 'arb_gpu_shader5'), - ['']) for stage in ['vs', 'fs']: for type in ['unorm', 'float', 'int', 'uint']: for comps in ['r', 'rg', 'rgb', 'rgba']: @@ -1906,21 +1853,8 @@ add_concurrent_test(arb_gpu_shader5, ['arb_gpu_shader5-interpolateAtOffset']) add_concurrent_test(arb_gpu_shader5, ['arb_gpu_shader5-interpolateAtOffset-nonconst']) arb_shader_subroutine = spec['ARB_shader_subroutine'] -import_glsl_parser_tests(arb_shader_subroutine, - os.path.join(TESTS_DIR, 'spec', 'arb_shader_subroutine'), - ['']) add_concurrent_test(arb_shader_subroutine, ['arb_shader_subroutine-minmax']) -arb_gpu_shader_fp64 = spec['ARB_gpu_shader_fp64'] -import_glsl_parser_tests(arb_gpu_shader_fp64, - os.path.join(TESTS_DIR, 'spec', 'arb_gpu_shader_fp64'), - ['']) - -arb_texture_query_levels = spec['ARB_texture_query_levels'] -import_glsl_parser_tests(arb_texture_query_levels, - os.path.join(TESTS_DIR, 'spec', 'arb_texture_query_levels'), - ['']) - arb_occlusion_query = spec['ARB_occlusion_query'] add_concurrent_test(arb_occlusion_query, ['occlusion_query']) add_concurrent_test(arb_occlusion_query, ['occlusion_query_lifetime']) @@ -1990,10 +1924,6 @@ for num_samples in MSAA_SAMPLE_COUNTS: executable = 'arb_sample_shading-{0}'.format(test_name).split() arb_sample_shading[test_name] = PiglitGLTest(executable) -import_glsl_parser_tests(spec['ARB_sample_shading'], - os.path.join(TESTS_DIR, 'spec', 'arb_sample_shading'), - ['compiler']) - # Group ARB_debug_output arb_debug_output = spec['ARB_debug_output'] add_plain_test(arb_debug_output, ['arb_debug_output-api_error']) @@ -2091,9 +2021,6 @@ arb_shader_objects['clear-with-deleted'] = PiglitGLTest(['arb_shader_objects-cle arb_shader_objects['delete-repeat'] = PiglitGLTest(['arb_shader_objects-delete-repeat'], run_concurrent=True) arb_shading_language_420pack = spec['ARB_shading_language_420pack'] -import_glsl_parser_tests(arb_shading_language_420pack, - os.path.join(TESTS_DIR, 'spec', 'arb_shading_language_420pack'), - ['compiler']) spec['ARB_shading_language_420pack']['built-in constants'] = PiglitGLTest( ['built-in-constants', os.path.join(TESTS_DIR, 'spec', 'arb_shading_language_420pack', 'minimum-maximums.txt')], @@ -2102,10 +2029,6 @@ spec['ARB_shading_language_420pack']['multiple layout qualifiers'] = PiglitGLTes # Group ARB_explicit_attrib_location arb_explicit_attrib_location = spec['ARB_explicit_attrib_location'] -import_glsl_parser_tests(arb_explicit_attrib_location, - os.path.join(TESTS_DIR, - 'spec', 'arb_explicit_attrib_location'), - ['']) add_plain_test(arb_explicit_attrib_location, ['glsl-explicit-location-01']) add_plain_test(arb_explicit_attrib_location, ['glsl-explicit-location-02']) add_plain_test(arb_explicit_attrib_location, ['glsl-explicit-location-03']) @@ -2117,9 +2040,6 @@ for test_type in ('shader', 'api'): # Group ARB_explicit_uniform_location arb_explicit_uniform_location = spec['ARB_explicit_uniform_location'] -import_glsl_parser_tests(arb_explicit_uniform_location, - os.path.join(TESTS_DIR, 'spec', 'arb_explicit_uniform_location'), - ['']) add_plain_test(arb_explicit_uniform_location, ['arb_explicit_uniform_location-minmax']) add_plain_test(arb_explicit_uniform_location, ['arb_explicit_uniform_location-boundaries']) add_plain_test(arb_explicit_uniform_location, ['arb_explicit_uniform_location-array-elements']) @@ -2767,9 +2687,6 @@ add_concurrent_test(arb_texture_cube_map_array, ['fbo-generatemipmap-cubemap', ' add_concurrent_test(arb_texture_cube_map_array, ['fbo-generatemipmap-cubemap', 'array', 'S3TC_DXT1']) add_concurrent_test(arb_texture_cube_map_array, ['texsubimage', 'cube_map_array']) -import_glsl_parser_tests(arb_texture_cube_map_array, - os.path.join(TESTS_DIR, 'spec', 'arb_texture_cube_map_array'), - ['compiler']) for stage in ['vs', 'gs', 'fs']: # textureSize(): for sampler in textureSize_samplers_atcma: @@ -3115,9 +3032,6 @@ arb_transform_feedback3['arb_transform_feedback3-ext_interleaved_two_bufs_gs'] = arb_transform_feedback3['arb_transform_feedback3-ext_interleaved_two_bufs_gs_max'] = PiglitGLTest(['arb_transform_feedback3-ext_interleaved_two_bufs', 'gs_max']) arb_uniform_buffer_object = spec['ARB_uniform_buffer_object'] -import_glsl_parser_tests(spec['ARB_uniform_buffer_object'], - os.path.join(TESTS_DIR, 'spec', 'arb_uniform_buffer_object'), - ['']) arb_uniform_buffer_object['bindbuffer-general-point'] = PiglitGLTest(['arb_uniform_buffer_object-bindbuffer-general-point'], run_concurrent=True) arb_uniform_buffer_object['buffer-targets'] = PiglitGLTest(['arb_uniform_buffer_object-buffer-targets'], run_concurrent=True) arb_uniform_buffer_object['bufferstorage'] = PiglitGLTest(['arb_uniform_buffer_object-bufferstorage'], run_concurrent=True) @@ -3234,10 +3148,6 @@ oes_matrix_get['All queries'] = PiglitGLTest(['oes_matrix_get-api'], run_concurr oes_fixed_point = spec['OES_fixed_point'] oes_fixed_point['attribute-arrays'] = PiglitGLTest(['oes_fixed_point-attribute-arrays'], run_concurrent=True) -import_glsl_parser_tests(spec['OES_standard_derivatives'], - os.path.join(TESTS_DIR, 'spec', 'oes_standard_derivatives'), - ['compiler']) - arb_clear_buffer_object = spec['ARB_clear_buffer_object'] add_concurrent_test(arb_clear_buffer_object, ['arb_clear_buffer_object-formats']) add_concurrent_test(arb_clear_buffer_object, ['arb_clear_buffer_object-invalid-internal-format']) @@ -3455,30 +3365,17 @@ add_concurrent_test(arb_geometry_shader4, ['arb_geometry_shader4-program-paramet add_concurrent_test(arb_geometry_shader4, ['arb_geometry_shader4-vertices-in']) for mode in ['1', 'tf 1', 'max', 'tf max']: add_concurrent_test(arb_geometry_shader4, ['arb_geometry_shader4-program-parameter-vertices-out', mode]) -import_glsl_parser_tests(spec['ARB_geometry_shader4'], - os.path.join(TESTS_DIR, 'spec', 'arb_geometry_shader4'), - ['compiler']) arb_compute_shader = spec['ARB_compute_shader'] arb_compute_shader['api_errors'] = PiglitGLTest(['arb_compute_shader-api_errors'], run_concurrent=True) arb_compute_shader['minmax'] = PiglitGLTest(['arb_compute_shader-minmax'], run_concurrent=True) arb_compute_shader[grouptools.join('compiler', 'work_group_size_too_large')] = \ PiglitGLTest(['arb_compute_shader-work_group_size_too_large'], run_concurrent=True) -import_glsl_parser_tests(spec['ARB_compute_shader'], - os.path.join(TESTS_DIR, 'spec', 'arb_compute_shader'), - ['compiler']) arb_compute_shader['built-in constants'] = PiglitGLTest( ['built-in-constants', os.path.join(TESTS_DIR, 'spec', 'arb_compute_shader', 'minimum-maximums.txt')], run_concurrent=True) -import_glsl_parser_tests(profile.tests['glslparsertest']['glsl2'], - os.path.join(TESTS_DIR, 'glslparsertest', 'glsl2'), - ['']) -import_glsl_parser_tests(profile.tests['glslparsertest'], - os.path.join(TESTS_DIR, 'glslparsertest', 'shaders'), - ['']) - hiz = profile.tests['hiz'] add_plain_test(hiz, ['hiz-depth-stencil-test-fbo-d0-s8']) add_plain_test(hiz, ['hiz-depth-stencil-test-fbo-d24-s0']) @@ -4051,12 +3948,7 @@ for tex_format in ('rgb8', 'srgb8', 'rgba8', 'srgb8-alpha8', 'r11', 'rg11', 'rgb add_concurrent_test(arb_es3_compatibility, ['es3-primrestart-fixedindex']) add_concurrent_test(arb_es3_compatibility, ['es3-drawarrays-primrestart-fixedindex']) -import_glsl_parser_tests(profile.tests, GENERATED_TESTS_DIR, ['spec']) - arb_shader_atomic_counters = spec['ARB_shader_atomic_counters'] -import_glsl_parser_tests(spec['ARB_shader_atomic_counters'], - os.path.join(TESTS_DIR, 'spec', 'arb_shader_atomic_counters'), - ['']) arb_shader_atomic_counters['active-counters'] = PiglitGLTest(['arb_shader_atomic_counters-active-counters'], run_concurrent=True) arb_shader_atomic_counters['array-indexing'] = PiglitGLTest(['arb_shader_atomic_counters-array-indexing'], run_concurrent=True) arb_shader_atomic_counters['buffer-binding'] = PiglitGLTest(['arb_shader_atomic_counters-buffer-binding'], run_concurrent=True) @@ -4072,10 +3964,6 @@ arb_shader_atomic_counters['unused-result'] = PiglitGLTest(['arb_shader_atomic_c arb_shader_atomic_counters['respecify-buffer'] = PiglitGLTest(['arb_shader_atomic_counters-respecify-buffer'], run_concurrent=True) arb_derivative_control = spec['ARB_derivative_control'] -import_glsl_parser_tests(arb_derivative_control, - os.path.join(TESTS_DIR, 'spec', 'arb_derivative_control'), - ['']) - spec['ARB_direct_state_access'] = spec['ARB_direct_state_access']['dsa-textures'] spec['ARB_direct_state_access']['texturesubimage'] = PiglitGLTest(['arb_direct_state_access-texturesubimage'], run_concurrent=True) spec['ARB_direct_state_access']['bind-texture-unit'] = PiglitGLTest(['arb_direct_state_access-bind-texture-unit'], run_concurrent=True) -- 2.2.2 _______________________________________________ Piglit mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/piglit
