2 """A profile that runs only GLSLParserTest instances."""
6 from framework
import grouptools
7 from framework
.profile
import TestProfile
8 from framework
.test
.glsl_parser_test
import GLSLParserTest
, GLSLParserNoConfigError
9 from framework
.test
.piglit_test
import ASMParserTest
, ROOT_DIR
10 from .py_modules
.constants
import GENERATED_TESTS_DIR
, TESTS_DIR
14 profile
= TestProfile()
16 # Find and add all shader tests.
17 basepath
= os
.path
.normpath(os
.path
.join(TESTS_DIR
, '..'))
18 gen_basepath
= os
.path
.relpath(os
.path
.join(GENERATED_TESTS_DIR
, '..'), basepath
)
20 for basedir
in [TESTS_DIR
, GENERATED_TESTS_DIR
]:
21 isgenerated
= basedir
== GENERATED_TESTS_DIR
22 for dirpath
, _
, filenames
in os
.walk(basedir
):
23 groupname
= grouptools
.from_path(os
.path
.relpath(dirpath
, basedir
))
24 for filename
in filenames
:
25 testname
, ext
= os
.path
.splitext(filename
)
26 if ext
in ['.vert', '.tesc', '.tese', '.geom', '.frag', '.comp']:
27 dirname
= os
.path
.relpath(dirpath
, basepath
)
28 filepath
= os
.path
.join(dirname
, filename
)
30 installpath
= os
.path
.relpath(filepath
, gen_basepath
)
35 test
= GLSLParserTest
.new(filepath
, installpath
)
36 except GLSLParserNoConfigError
:
37 # In the event that there is no config assume that it is a
38 # legacy test, and continue
41 # For glslparser tests you can have multiple tests with the
42 # same name, but a different stage, so keep the extension.
47 group
= grouptools
.join(groupname
, testname
)
48 assert group
not in profile
.test_list
, group
50 profile
.test_list
[group
] = test
52 # Collect and add all asmparsertests
53 for basedir
in [TESTS_DIR
, GENERATED_TESTS_DIR
]:
54 _basedir
= os
.path
.join(basedir
, 'asmparsertest', 'shaders')
55 for dirpath
, _
, filenames
in os
.walk(_basedir
):
56 base_group
= grouptools
.from_path(os
.path
.join(
57 'asmparsertest', os
.path
.relpath(dirpath
, _basedir
)))
58 type_
= os
.path
.basename(dirpath
)
60 dirname
= os
.path
.relpath(dirpath
, os
.path
.join(basedir
, '..'))
61 for filename
in filenames
:
62 if not os
.path
.splitext(filename
)[1] == '.txt':
65 group
= grouptools
.join(base_group
, filename
)
66 profile
.test_list
[group
] = ASMParserTest(
67 type_
, os
.path
.join(dirname
, filename
))