[Piglit] [PATCH] deqp: Add test profile for external dEQP-GLES3 tests
Dylan Baker
baker.dylan.c at gmail.com
Mon Dec 8 09:36:43 PST 2014
On Monday, December 08, 2014 07:42:18 AM Chad Versace wrote:
> On 12/08/2014 03:45 AM, Dylan Baker wrote:
> > Hi Chad,
> >
> > I have a few comments below for you, mostly relating to the use of the
> > global keyword.
>
> I admit that I had trouble with the global variables in this patch.
> Python wasn't behaving like C, and that confused me.
>
>
>
>
> >> diff --git a/piglit.conf.example b/piglit.conf.example
> >> index a864c01..0ac0f4f 100644
> >> --- a/piglit.conf.example
> >> +++ b/piglit.conf.example
> >> @@ -33,6 +33,13 @@ bindir=/home/usr/oclconform
> >> testA
> >> testB
> >>
> >> +;[deqp-gles3]
> >> +;
> >> +; Path to the deqp-gles3 executable. You can also set this with the environment
> >> +; variable PIGLIT_DEQP_GLES3_EXE. Piglit will run the dEQP-GLES3 tests if and
> >> +; only if this option is set.
> >> +;exe=/home/knuth/deqp/modules/gles3/deqp-gles3
> >
> > nit: bin over exe? (feel free to ignore, not a strong opinion)
>
> 'bin' does feel more Linuxy than 'exe'. I'll change it.
>
>
>
>
> >> +import ConfigParser
> >> +import os
> >> +import shutil
> >
> > unused
> >
> >> +import subprocess
> >> +import sys
> >
> > unused
> >
> >> +import tempfile
> >
> > unused
>
> You found the breadcrumbs of the patch's evolution ;) I'll remove the
> unused imports.
>
>
>
> >> +
> >> +import framework.profile
> >> +
> >> +
> >
> > You can lose a newline here if you want
> >
> >> +__all__ = ['profile']
> >> +
> >> +
> >
> > And here
>
> I thought the PEP8 tools complained if toplevel objects were not
> separated by two newlines... I'll squash the space as you suggest.
>
two lines between toplevel functions and classes, one between imports
and constants.
Since you use vim, may I suggest Syntastic + pylint? This plus the
missing imports was generated by that tool.
>
>
> >> +_deqp_gles3_exe = None
> >> +
> >> +
> >> +def get_option(env_varname, config_option):
> >> + """Query the given environment variable and then piglit.conf for the
> >> + option. Return None if the option is unset.
> >> + """
> >
> > newline before the closing """ not after
>
> Ok.
>
>
>
> >> +
> >> + opt = os.environ.get(env_varname, None)
> >> + if opt is not None:
> >> + return opt
> >> +
> >> + try:
> >> + opt = framework.core.PIGLIT_CONFIG.get(config_option[0],
> >> + config_option[1])
> >> + except ConfigParser.NoSectionError, ConfigParser.NoOptionError:
> >> + pass
> >> +
> >> + return opt
> >> +
> >> +
> >> +def get_deqp_gles3_exe():
> >> + """Get path to the deqp-gles3 executable. Idempotent."""
> >> + global _deqp_gles3_exe
> >
> > No global please.
> >
> > I'd use a pattern like this:
> >
> > ```python
> > def _set_deqp_gles3_exe():
> > ...
> >
> > _DEQP_GLES3_EXE = _set_deqp_gles3_exe()
> >
> > [rest of module]
> > ```
> >
> > Then you can simply rely on the constant at that point.
>
> Ok, I'll initialize the global constant near the top of file.
>
> By the way, does GMail properly syntax-highlight your email when you
> write "```python"? Or is that just a habit of yours?
I was just looking for a good way to differentiate python code from the
rest of the comment. Although, since I use gvim to write emails I'm
pretty sure I could code something up...
>
>
>
> >> + assert(os.path.exists(caselist_path))
> >
> > assert is a keyword not a function, it doesn't need parentheses. It's
> > also advisable not to use them, because assert + a tuple doesn't do what
> > you would expect.
>
> Good to know. Will fix.
>
>
>
> >> +class DEQPTest(framework.profile.Test):
> >> +
> >> + def __init__(self, case_name):
> >> + command = [
> >> + get_deqp_gles3_exe(),
> >> + '--deqp-case=' + case_name,
> >> + '--deqp-visibility=hidden',
> >> + ]
> >> + framework.profile.Test.__init__(self, command)
> >
> > Please use super instead an explicit call to Test.__init__.
>
> Ok.
>
>
>
> >> +def add_tests():
> >> + global profile
> >
> > eww... global. Please don't use global.
> >
> > I think you could solve this by moving the profile declaration to the
> > top of the module, or you could use a pattern like xts.py does, where
> > the populate_profile() function returns a framework.profile.TestProfile
> > object.
>
> Oh... you've solved my mystery: add_tests() believed 'profile' was a
> local variable because 'profile' was declared after add_tests(). I'll
> fix the patch to remove the global keywords and resubmit.
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 473 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.freedesktop.org/archives/piglit/attachments/20141208/3ea06448/attachment-0001.sig>
More information about the Piglit
mailing list