[Piglit] [PATCH] framework/test/deqp: handle deqp extra args properly in more cases

Mark Janes mark.a.janes at intel.com
Mon Jun 22 18:28:54 PDT 2015


Reviewed-by: Mark Janes <mark.a.janes at intel.com>

Dylan Baker <baker.dylan.c at gmail.com> writes:

> 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 <mark.a.janes at intel.com>
> Signed-off-by: Dylan Baker <dylanx.c.baker at intel.com>
> ---
>  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


More information about the Piglit mailing list