[Piglit] [PATCH 11/20] framework: Port from execfile to compile & exec (required by python 3.x)

Kenneth Graunke kenneth at whitecape.org
Wed Apr 17 02:35:52 PDT 2013


On 04/12/2013 04:39 PM, Jon Severinsson wrote:
> ---
>   framework/core.py |    2 +-
>   tests/all.tests   |    6 ++++++
>   2 filer ändrade, 7 tillägg(+), 1 borttagning(-)
>
> diff --git a/framework/core.py b/framework/core.py
> index 744fda4..62b2ed9 100644
> --- a/framework/core.py
> +++ b/framework/core.py
> @@ -608,7 +608,7 @@ def loadTestProfile(filename):
>   		'__file__': filename,
>   	}
>   	try:
> -		execfile(filename, ns)
> +		exec(compile(open(filename,"rb").read(), filename, 'exec'), ns)
>   	except:
>   		traceback.print_exc()
>   		raise Exception('Could not read tests profile')
> diff --git a/tests/all.tests b/tests/all.tests
> index 8334c7f..0e2bbaa 100644
> --- a/tests/all.tests
> +++ b/tests/all.tests
> @@ -58,6 +58,12 @@ def power_set(s):
>                   result.append(p + [s[-1]])
>           return result
>
> +try:
> +    def execfile(filename):
> +        exec(compile(open(filename,"rb").read(), filename, 'exec'))
> +except:
> +    pass
> +
>   ######
>   # Collecting all tests
>   profile = TestProfile()
>

Two problems here:

1. This leaves the file open...you ought to close it after you're done 
reading from it.  The easiest way to do this is by doing:

with open(filename, 'rb') as f:
     exec(compile(f.read(), filename, 'exec'))

2. You missed a bunch of tests/*.tests files, which all use execfile() 
as well.  I'm not sure the best way to handle this...perhaps create a 
framework/util.py that defines execfile for Python 3?  Then we'd need 
imports everywhere, though...

Thoughts?


More information about the Piglit mailing list