[Piglit] [PATCH 1/3] glsl_parser_test.py: Don't allow , or ; between require_extensions

Ilia Mirkin imirkin at alum.mit.edu
Tue Jun 24 17:18:00 PDT 2014


On Tue, Jun 24, 2014 at 7:54 PM, Dylan Baker <baker.dylan.c at gmail.com> wrote:
> This is not a valid input, require_extensions is a space delimited list
> of extensions, raise a exception if these are requested.
>
> Signed-off-by: Dylan Baker <baker.dylan.c at gmail.com>
> ---
>  framework/glsl_parser_test.py             |  7 +++++-
>  framework/tests/glsl_parser_test_tests.py | 36 +++++++++++++++++++++++++++++++
>  2 files changed, 42 insertions(+), 1 deletion(-)
>
> diff --git a/framework/glsl_parser_test.py b/framework/glsl_parser_test.py
> index 27fd2ca..52b87f1 100644
> --- a/framework/glsl_parser_test.py
> +++ b/framework/glsl_parser_test.py
> @@ -152,7 +152,12 @@ class GLSLParserTest(PiglitTest):
>                         config.get('config', 'glsl_version')]
>              if config.get('config', 'check_link').lower() == 'true':
>                  command.append('--check-link')
> -            command.extend(config.get('config', 'require_extensions').split())
> +            required = config.get('config', 'require_extensions').split()
> +            for x in required:
> +                if x[-1] in [';', ',']:

It might be safe to just say if there's anything that's not

[A-Za-z0-9_\s]

in there, then that's no good. (And if you're pre-splitting, without
the \s.) Otherwise someone will invariably write

require_extensions: a ,b

or something else equally silly. You can use a pre-compiled regex to
speed things up a bit.

> +                    raise GLSLParserException('require_extensions cannot be '
> +                                              'seperated with "," or ";"')
> +            command.extend(required)
>
>              super(GLSLParserTest, self).__init__(command, run_concurrent=True)
>
> diff --git a/framework/tests/glsl_parser_test_tests.py b/framework/tests/glsl_parser_test_tests.py
> index 5e083b8..9794331 100644
> --- a/framework/tests/glsl_parser_test_tests.py
> +++ b/framework/tests/glsl_parser_test_tests.py
> @@ -144,3 +144,39 @@ def test_blank_in_config():
>  def test_glslparser_initializer():
>      """ GLSLParserTest initializes """
>      glsl.GLSLParserTest('tests/spec/glsl-es-1.00/compiler/version-macro.frag')
> +
> +
> +def test_glslparser_require_trailing_comma():
> +    """ GLSLParserTest() asserts if ',' are used on extensions """
> +    content = ('// [config]\n'
> +               '// expect_result: pass\n'
> +               '// glsl_version: 1.00\n'
> +               '// require_extensions: ARB_ham_sandwhich, ARB_pb&j\n'
> +               '// [end config]\n')
> +
> +    with utils.with_tempfile(content) as tfile:
> +        with nt.assert_raises(glsl.GLSLParserException) as exc:
> +            glsl.GLSLParserTest(tfile)
> +            nt.assert_equal(
> +                exc.exception,
> +                'require_extensions cannot be seperated with "," or ";"',
> +                msg=("Exception not raised if ',' used to seperate"
> +                     "require_extensions"))
> +
> +
> +def test_glslparser_require_trailing_semicolon():
> +    """ GLSLParserTest() asserts if ';' are used on extensions """
> +    content = ('// [config]\n'
> +               '// expect_result: pass\n'
> +               '// glsl_version: 1.00\n'
> +               '// require_extensions: ARB_ham_sandwhich; ARB_pb&j\n'
> +               '// [end config]\n')
> +
> +    with utils.with_tempfile(content) as tfile:
> +        with nt.assert_raises(glsl.GLSLParserException) as exc:
> +            glsl.GLSLParserTest(tfile)
> +            nt.assert_equal(
> +                exc.exception,
> +                'require_extensions cannot be seperated with "," or ";"',
> +                msg=("Exception not raised if ';' used to seperate"
> +                     "require_extensions"))
> --
> 2.0.0
>
> _______________________________________________
> Piglit mailing list
> Piglit at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/piglit


More information about the Piglit mailing list