From 8c79770317389fe7a31f689da94523d43e8e6da7 Mon Sep 17 00:00:00 2001 From: Dylan Baker Date: Tue, 27 Mar 2018 11:20:02 -0700 Subject: framework/test: Split multishader too Tested-by: Rafael Antognolli --- framework/test/shader_test.py | 63 +++++++++++++++++++++++++++++-------------- 1 file changed, 43 insertions(+), 20 deletions(-) (limited to 'framework') diff --git a/framework/test/shader_test.py b/framework/test/shader_test.py index 64edb58c5..3dc2c3987 100644 --- a/framework/test/shader_test.py +++ b/framework/test/shader_test.py @@ -201,11 +201,22 @@ class MultiShaderTest(ReducedProcessMixin, PiglitBaseTest): filenames -- a list of absolute paths to shader test files """ - def __init__(self, filenames): + def __init__(self, prog, files, subtests, skips): + super(MultiShaderTest, self).__init__( + [prog] + files, + subtests=subtests, + run_concurrent=True) + + self.prog = prog + self.files = files + self.subtests = subtests + self.skips = [FastSkip(**s) for s in skips] + + @classmethod + def new(cls, filenames): # TODO assert filenames prog = None - files = [] subtests = [] skips = [] @@ -215,7 +226,7 @@ class MultiShaderTest(ReducedProcessMixin, PiglitBaseTest): for each in filenames: parser = Parser(each) parser.parse() - subtest = os.path.basename(os.path.splitext(each)[0]).lower() + subtests.append(os.path.basename(os.path.splitext(each)[0]).lower()) if prog is not None: # This allows mixing GLES2 and GLES3 shader test files @@ -236,30 +247,42 @@ class MultiShaderTest(ReducedProcessMixin, PiglitBaseTest): else: prog = parser.prog + skips.append({ + 'gl_required': parser.gl_required, + 'gl_version': parser.gl_version, + 'glsl_version': parser.glsl_version, + 'gles_version': parser.gles_version, + 'glsl_es_version': parser.glsl_es_version, + }) + + return cls(prog, filenames, subtests, skips) + + def _process_skips(self): + r_files = [] + r_subtests = [] + r_skips = [] + for f, s, k in zip(self.files, self.subtests, self.skips): try: - skipper = FastSkip(gl_required=parser.gl_required, - gl_version=parser.gl_version, - gles_version=parser.gles_version, - glsl_version=parser.glsl_version, - glsl_es_version=parser.glsl_es_version) - skipper.test() + k.test() except TestIsSkip: - skips.append(subtest) - continue - files.append(parser.filename) - subtests.append(subtest) + r_skips.append(s) + else: + r_files.append(f) + r_subtests.append(s) - assert len(subtests) + len(skips) == len(filenames), \ + assert len(r_subtests) + len(r_skips) == len(self.files), \ 'not all tests accounted for' - super(MultiShaderTest, self).__init__( - [prog] + files, - subtests=subtests, - run_concurrent=True) - - for name in skips: + for name in r_skips: self.result.subtests[name] = status.SKIP + self._expected = r_subtests + self._command = [self._command[0]] + r_files + + def run(self): + self._process_skips() + super(MultiShaderTest, self).run() + @PiglitBaseTest.command.getter # pylint: disable=no-member def command(self): """Add -auto to the test command.""" -- cgit v1.2.3