Currently we blindly pass deqp extra args to each test case, and only to the test case.
There are two cases where this is problematic: 1) if the extra args need to be passed to the deqp command that generates the test list (it isn't before this patch) 2) if there are any --deqp-case options passed into the Test derived classes this will cause the tests to fail (conflicting options) Both of these are resolved by this patch. CC: Mark Janes <[email protected]> Signed-off-by: Dylan Baker <[email protected]> --- framework/test/deqp.py | 11 ++++++++--- tests/deqp_gles2.py | 12 +++++++----- tests/deqp_gles3.py | 11 +++++++---- tests/deqp_gles31.py | 12 +++++++----- 4 files changed, 29 insertions(+), 17 deletions(-) diff --git a/framework/test/deqp.py b/framework/test/deqp.py index 843cde8..1462ca2 100644 --- a/framework/test/deqp.py +++ b/framework/test/deqp.py @@ -61,8 +61,12 @@ def get_option(env_varname, config_option, default=None): return opt or default -def gen_caselist_txt(bin_, caselist): - """Generate a caselist.txt and return its path.""" +def gen_caselist_txt(bin_, caselist, extra_args): + """Generate a caselist.txt and return its path. + + Extra args should be a list of extra arguments to pass to deqp. + + """ # dEQP is stupid (2014-12-07): # 1. To generate the caselist file, dEQP requires that the process's # current directory must be that same as that of the executable. @@ -76,9 +80,10 @@ def gen_caselist_txt(bin_, caselist): # we must *dynamically* generate it during the testrun. basedir = os.path.dirname(bin_) caselist_path = os.path.join(basedir, caselist) + # TODO: need to catch some exceptions here... subprocess.check_call( - [bin_, '--deqp-runmode=txt-caselist'], cwd=basedir) + [bin_, '--deqp-runmode=txt-caselist'] + extra_args, cwd=basedir) assert os.path.exists(caselist_path) return caselist_path diff --git a/tests/deqp_gles2.py b/tests/deqp_gles2.py index b97cb5d..c4bacb2 100644 --- a/tests/deqp_gles2.py +++ b/tests/deqp_gles2.py @@ -24,20 +24,22 @@ from framework.test import deqp __all__ = ['profile'] - # Path to the deqp-gles2 executable. _DEQP_GLES2_BIN = deqp.get_option('PIGLIT_DEQP_GLES2_BIN', ('deqp-gles2', 'bin')) +_EXTRA_ARGS = deqp.get_option('PIGLIT_DEQP_GLES2_EXTRA_ARGS', + ('deqp-gles2', 'extra_args'), + default='').split() + class DEQPGLES2Test(deqp.DEQPBaseTest): deqp_bin = _DEQP_GLES2_BIN - extra_args = deqp.get_option('PIGLIT_DEQP_GLES2_EXTRA_ARGS', - ('deqp-gles2', 'extra_args'), - default='').split() + extra_args = [x for x in _EXTRA_ARGS if not x.startswith('--deqp-case')] profile = deqp.make_profile( # pylint: disable=invalid-name deqp.iter_deqp_test_cases( - deqp.gen_caselist_txt(_DEQP_GLES2_BIN, 'dEQP-GLES2-cases.txt')), + deqp.gen_caselist_txt(_DEQP_GLES2_BIN, 'dEQP-GLES2-cases.txt', + _EXTRA_ARGS)), DEQPGLES2Test) diff --git a/tests/deqp_gles3.py b/tests/deqp_gles3.py index dfb82c9..d353899 100644 --- a/tests/deqp_gles3.py +++ b/tests/deqp_gles3.py @@ -35,6 +35,10 @@ _DEQP_GLES3_EXE = deqp.get_option('PIGLIT_DEQP_GLES3_EXE', _DEQP_MUSTPASS = deqp.get_option('PIGLIT_DEQP_MUSTPASS', ('deqp-gles3', 'mustpasslist')) +_EXTRA_ARGS = deqp.get_option('PIGLIT_DEQP_GLES3_EXTRA_ARGS', + ('deqp-gles3', 'extra_args'), + default='').split() + def _get_test_case(root, root_group, outputfile): """Parser the test case list of Google Android CTS, @@ -73,9 +77,7 @@ def filter_mustpass(caselist_path): class DEQPGLES3Test(deqp.DEQPBaseTest): deqp_bin = _DEQP_GLES3_EXE - extra_args = deqp.get_option('PIGLIT_DEQP_GLES3_EXTRA_ARGS', - ('deqp-gles3', 'extra_args'), - default='').split() + extra_args = [x for x in _EXTRA_ARGS if not x.startswith('--deqp-case')] def __init__(self, *args, **kwargs): @@ -84,5 +86,6 @@ class DEQPGLES3Test(deqp.DEQPBaseTest): profile = deqp.make_profile( # pylint: disable=invalid-name deqp.iter_deqp_test_cases(filter_mustpass( - deqp.gen_caselist_txt(_DEQP_GLES3_EXE, 'dEQP-GLES3-cases.txt'))), + deqp.gen_caselist_txt(_DEQP_GLES3_EXE, 'dEQP-GLES3-cases.txt', + _EXTRA_ARGS))), DEQPGLES3Test) diff --git a/tests/deqp_gles31.py b/tests/deqp_gles31.py index 423c1bf..b98d2be 100644 --- a/tests/deqp_gles31.py +++ b/tests/deqp_gles31.py @@ -24,20 +24,22 @@ from framework.test import deqp __all__ = ['profile'] - # Path to the deqp-gles3 executable. _DEQP_GLES31_BIN = deqp.get_option('PIGLIT_DEQP_GLES31_BIN', ('deqp-gles31', 'bin')) +_EXTRA_ARGS = deqp.get_option('PIGLIT_DEQP_GLES31_EXTRA_ARGS', + ('deqp-gles31', 'extra_args'), + default='').split() + class DEQPGLES31Test(deqp.DEQPBaseTest): deqp_bin = _DEQP_GLES31_BIN - extra_args = deqp.get_option('PIGLIT_DEQP_GLES31_EXTRA_ARGS', - ('deqp-gles31', 'extra_args'), - default='').split() + extra_args = [x for x in _EXTRA_ARGS if not x.startsiwth('--deqp-case')] profile = deqp.make_profile( # pylint: disable=invalid-name deqp.iter_deqp_test_cases( - deqp.gen_caselist_txt(_DEQP_GLES31_BIN, 'dEQP-GLES31-cases.txt')), + deqp.gen_caselist_txt(_DEQP_GLES31_BIN, 'dEQP-GLES31-cases.txt', + _EXTRA_ARGS)), DEQPGLES31Test) -- 2.4.3 _______________________________________________ Piglit mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/piglit
