[Piglit] [PATCH 08/11] all.tests: Add all .shader_test files in tests and generated_tests.

Kenneth Graunke kenneth at whitecape.org
Wed Feb 1 16:06:35 PST 2012


This avoids the fuss of adding more add_shader_test_dir calls every time
you add a new folder with shader runner tests in it.  Presumably, if you
drop a new .shader_test file into tests or generated_tests, you've added
a new shader runner test and want it to be run.  If not, you can rename
it to have a different extension.

Signed-off-by: Kenneth Graunke <kenneth at whitecape.org>
---
 tests/all.tests |   78 ++++++++++--------------------------------------------
 1 files changed, 15 insertions(+), 63 deletions(-)

diff --git a/tests/all.tests b/tests/all.tests
index 3211016..b48ef9a 100644
--- a/tests/all.tests
+++ b/tests/all.tests
@@ -320,22 +320,19 @@ add_fbo_depthstencil_tests(general, 'default_fb')
 
 shaders = Group()
 
-def add_shader_test_dir(group, dirpath, recursive=False):
-	"""Add all shader tests in a directory to the given group."""
-	for filename in os.listdir(dirpath):
-		filepath = path.join(dirpath, filename)
-		if path.isdir(filepath):
-			if not recursive:
-				continue
-			if not filename in group:
-				group[filename] = Group()
-			add_shader_test_dir(group[filename], filepath, recursive)
-		else:
-			ext = filename.rsplit('.')[-1]
-			if ext != 'shader_test':
-				continue
-			testname = filename[0:-(len(ext) + 1)] # +1 for '.'
-			group[testname] = concurrent_test('shader_runner ' + filepath)
+def find_files_with_extension(top, ext_list):
+	"""Recursively find files in `top' with a matching file extension."""
+	files = []
+	for dirpath, dirnames, filenames in os.walk(top):
+		matching = filter(lambda f: f.rsplit('.')[-1] in ext_list, filenames)
+		files.extend(map(lambda f: path.join(dirpath, f), matching))
+	return files
+
+# Add all .shader_test files as tests.
+for dir in (testsDir, generatedTestDir):
+	for test in find_files_with_extension(dir, ['shader_test']):
+		name = path.splitext(path.relpath(test, dir))[0]
+		profile.test_list[name] = concurrent_test('shader_runner ' + test)
 
 def add_getactiveuniform_count(group, name, expected):
 	path = 'shaders/'
@@ -344,9 +341,6 @@ def add_getactiveuniform_count(group, name, expected):
 								   path + name + '.vert',
 								   expected])
 
-add_shader_test_dir(shaders,
-                    testsDir + '/shaders',
-                    recursive=True)
 add_plain_test(shaders, 'activeprogram-bad-program')
 add_plain_test(shaders, 'activeprogram-get')
 add_plain_test(shaders, 'ati-fs-bad-delete')
@@ -862,17 +856,8 @@ import_glsl_parser_tests(spec['glsl-1.10'],
 import_glsl_parser_tests(spec['glsl-1.10'],
 			 os.path.join(generatedTestDir, 'spec', 'glsl-1.10'),
 			 ['preprocessor', 'compiler'])
-spec['glsl-1.10']['linker'] = Group()
-add_shader_test_dir(spec['glsl-1.10']['linker'],
-	            os.path.join(testsDir, 'spec', 'glsl-1.10', 'linker'),
-		    recursive=True)
 spec['glsl-1.10']['execution'] = Group()
-add_shader_test_dir(spec['glsl-1.10']['execution'],
-	            os.path.join(testsDir, 'spec', 'glsl-1.10', 'execution'),
-		    recursive=True)
-add_shader_test_dir(spec['glsl-1.10']['execution'],
-		    os.path.join(generatedTestDir, 'spec', 'glsl-1.10', 'execution'),
-		    recursive=True)
+spec['glsl-1.10']['execution']['clipping'] = Group()
 for mode in ['fixed', 'pos_clipvert', 'clipvert_pos']:
 	cmdline = 'clip-plane-transformation ' + mode
 	spec['glsl-1.10']['execution']['clipping'][cmdline] = concurrent_test(cmdline)
@@ -889,12 +874,6 @@ import_glsl_parser_tests(spec['glsl-1.20'],
 			 os.path.join(generatedTestDir, 'spec', 'glsl-1.20'),
 			 ['compiler'])
 spec['glsl-1.20']['execution'] = Group()
-add_shader_test_dir(spec['glsl-1.20']['execution'],
-	            os.path.join(testsDir, 'spec', 'glsl-1.20', 'execution'),
-		    recursive=True)
-add_shader_test_dir(spec['glsl-1.20']['execution'],
-		    os.path.join(generatedTestDir, 'spec', 'glsl-1.20', 'execution'),
-		    recursive=True)
 
 def add_recursion_test(group, name):
 	# When the recursion tests fail it is usually because the GLSL
@@ -932,6 +911,7 @@ import_glsl_parser_tests(spec['glsl-1.30'],
 			 os.path.join(generatedTestDir, 'spec', 'glsl-1.30'),
 			 ['compiler'])
 spec['glsl-1.30']['execution'] = Group()
+spec['glsl-1.30']['execution']['clipping'] = Group()
 spec['glsl-1.30']['execution']['textureSize'] = Group()
 spec['glsl-1.30']['execution']['texelFetch'] = Group()
 for stage in ['vs', 'fs']:
@@ -947,12 +927,6 @@ for stage in ['vs', 'fs']:
 
 add_plain_test(spec['glsl-1.30']['execution'], 'fs-texelFetch-2D')
 add_plain_test(spec['glsl-1.30']['execution'], 'fs-texelFetchOffset-2D')
-add_shader_test_dir(spec['glsl-1.30']['execution'],
-	            os.path.join(testsDir, 'spec', 'glsl-1.30', 'execution'),
-		    recursive=True)
-add_shader_test_dir(spec['glsl-1.30']['execution'],
-		    os.path.join(generatedTestDir, 'spec', 'glsl-1.30', 'execution'),
-		    recursive=True)
 spec['glsl-1.30']['linker'] = Group()
 spec['glsl-1.30']['linker']['clipping'] = Group()
 add_plain_test(spec['glsl-1.30']['linker']['clipping'], 'mixing-clip-distance-and-clip-vertex-disallowed')
@@ -1020,24 +994,14 @@ import_glsl_parser_tests(arb_draw_instanced,
                         testsDir + '/spec/arb_draw_instanced',
                         [''])
 
-add_shader_test_dir(arb_draw_instanced,
-                    testsDir + '/spec/arb_draw_instanced/execution',
-                    recursive=True)
-
 # Group ARB_fragment_program
 arb_fragment_program = Group()
 spec['ARB_fragment_program'] = arb_fragment_program
-add_shader_test_dir(spec['ARB_fragment_program'],
-	            os.path.join(testsDir, 'spec', 'arb_fragment_program'),
-		    recursive=True)
 arb_fragment_program['minmax'] = concurrent_test('arb_fragment_program-minmax')
 
 # Group ARB_fragment_program_shadow
 arb_fragment_program_shadow = Group()
 spec['ARB_fragment_program_shadow'] = arb_fragment_program_shadow
-add_shader_test_dir(spec['ARB_fragment_program_shadow'],
-	            os.path.join(testsDir, 'spec', 'arb_fragment_program_shadow'),
-		    recursive=True)
 
 # Group ARB_framebuffer_object
 arb_framebuffer_object = Group()
@@ -1064,9 +1028,6 @@ import_glsl_parser_tests(arb_shader_texture_lod,
 			 os.path.join(testsDir, 'spec', 'arb_shader_texture_lod'),
 			 ['compiler'])
 arb_shader_texture_lod['execution'] = Group()
-add_shader_test_dir(arb_shader_texture_lod['execution'],
-	            os.path.join(testsDir, 'spec', 'arb_shader_texture_lod', 'execution'),
-		    recursive=True)
 add_plain_test(arb_shader_texture_lod['execution'], 'arb_shader_texture_lod-texgrad')
 arb_shader_texture_lod['execution']['tex-miplevel-selection-texture2DLod'] = PlainExecTest(['tex-miplevel-selection', '-auto', '-nobias', '-nolod', '-GL_ARB_shader_texture_lod'])
 arb_shader_texture_lod['execution']['tex-miplevel-selection-texture2DLod-lod'] = PlainExecTest(['tex-miplevel-selection', '-auto', '-nobias', '-GL_ARB_shader_texture_lod'])
@@ -1100,9 +1061,6 @@ arb_texture_rectangle = Group()
 spec['ARB_texture_rectangle'] = arb_texture_rectangle
 add_texwrap_test1(arb_texture_rectangle, 'RECT')
 add_texwrap_test2(arb_texture_rectangle, 'RECT', 'proj')
-add_shader_test_dir(arb_texture_rectangle,
-                    testsDir + '/spec/arb_texture_rectangle',
-                    recursive=True)
 
 arb_texture_storage = Group()
 spec['ARB_texture_storage'] = arb_texture_storage
@@ -1257,9 +1215,6 @@ ext_texture_array = Group()
 spec['EXT_texture_array'] = ext_texture_array
 add_plain_test(ext_texture_array, 'fbo-generatemipmap-array')
 spec['EXT_texture_array']['maxlayers'] = concurrent_test('ext_texture_array-maxlayers')
-add_shader_test_dir(ext_texture_array,
-                    testsDir + '/spec/ext_texture_array',
-                    recursive=True)
 
 ext_texture_compression_latc = Group()
 spec['EXT_texture_compression_latc'] = ext_texture_compression_latc
@@ -1353,9 +1308,6 @@ ext_texture_integer['texture_integer_glsl130'] = concurrent_test('ext_texture_in
 
 arb_texture_rg = Group()
 spec['ARB_texture_rg'] = arb_texture_rg
-add_shader_test_dir(arb_texture_rg,
-                    testsDir + '/spec/arb_texture_rg/execution',
-                    recursive=True)
 add_fbo_generatemipmap_extension(arb_texture_rg, 'GL_ARB_texture_rg', 'fbo-generatemipmap-formats')
 add_fbo_generatemipmap_extension(arb_texture_rg, 'GL_ARB_texture_rg-float', 'fbo-generatemipmap-formats-float')
 add_fbo_clear_extension(arb_texture_rg, 'GL_ARB_texture_rg', 'fbo-clear-formats')
-- 
1.7.7.6



More information about the Piglit mailing list