From: Dylan Baker <baker.dyla...@gmail.com> This makes the GLSLParserTest class only support str (unicode in python 2), and not bytes (str in python 2).
Signed-off-by: Dylan Baker <dylanx.c.ba...@intel.com> --- framework/test/glsl_parser_test.py | 27 +++++++++++++++++++-------- framework/test/shader_test.py | 9 ++++++--- unittests/glsl_parser_test_tests.py | 6 +++--- unittests/shader_test_tests.py | 10 +++++----- 4 files changed, 33 insertions(+), 19 deletions(-) diff --git a/framework/test/glsl_parser_test.py b/framework/test/glsl_parser_test.py index 73224c6..ce043a7 100644 --- a/framework/test/glsl_parser_test.py +++ b/framework/test/glsl_parser_test.py @@ -27,6 +27,8 @@ from __future__ import ( import os import re +import six + from framework import exceptions from .base import TestIsSkip from .opengl import FastSkipMixin @@ -48,7 +50,10 @@ _FORCE_DESKTOP_VERSION = os.environ.get('PIGLIT_FORCE_GLSLPARSER_DESKTOP', False def _is_gles_version(version): """Return True if version is es, otherwsie false.""" - if isinstance(version, basestring): + assert not isinstance(version, six.binary_type), \ + '{}({})'.format(version, type(version)) + + if isinstance(version, six.text_type): # GLES 3+ versions should have "es" appended, even though # glslparsertest doesn't require them. If the version ends in "es" then # it is a GLES test for sure. @@ -92,13 +97,19 @@ class GLSLParserTest(FastSkipMixin, PiglitBaseTest): # Parse the config file and get the config section, then write this # section to a StringIO and pass that to ConfigParser - with open(filepath, 'r') as testfile: - try: + try: + with open(filepath, 'r') as testfile: + # Python 2 returns a bytes instance, but python 3 returns str + # (unicode) instance. + if six.PY2: + testfile = testfile.read().decode('utf-8') + elif six.PY3: + testfile = testfile.read() config = self.__parser(testfile, filepath) - command = self.__get_command(config, filepath) - except GLSLParserInternalError as e: - raise exceptions.PiglitFatalError( - 'In file "{}":\n{}'.format(filepath, str(e))) + command = self.__get_command(config, filepath) + except GLSLParserInternalError as e: + raise exceptions.PiglitFatalError( + 'In file "{}":\n{}'.format(filepath, six.text_type(e))) super(GLSLParserTest, self).__init__(command, run_concurrent=True) @@ -200,7 +211,7 @@ class GLSLParserTest(FastSkipMixin, PiglitBaseTest): # This allows us to run the loop until we find the header, stop and # then run again looking for the config sections. # This reduces the need for if statements substantially - lines = (l.strip() for l in testfile) + lines = (l.strip() for l in testfile.split('\n')) is_header = re.compile(r'(//|/\*|\*)\s*\[config\]') for line in lines: diff --git a/framework/test/shader_test.py b/framework/test/shader_test.py index f5c26ba..4fb33a0 100644 --- a/framework/test/shader_test.py +++ b/framework/test/shader_test.py @@ -61,10 +61,13 @@ class ShaderTest(FastSkipMixin, PiglitBaseTest): # an exception. The second looks for the GL version or raises an # exception with open(filename, 'r') as shader_file: + # The mock in python 3.3 doesn't support readlines(), so use + # read().split() as a workaround if six.PY3: - lines = (l for l in shader_file.readlines()) + lines = (l for l in shader_file.read().split('\n')) elif six.PY2: - lines = (l.decode('utf-8') for l in shader_file.readlines()) + lines = (l.decode('utf-8') for l in + shader_file.read().split(b'\n')) # Find the config section for line in lines: @@ -72,7 +75,7 @@ class ShaderTest(FastSkipMixin, PiglitBaseTest): # soon as we do then we can move on to geting the # configuration. The first line needs to be parsed by the next # block. - if line.lstrip().startswith('[require]'): + if line.startswith('[require]'): break else: raise exceptions.PiglitFatalError( diff --git a/unittests/glsl_parser_test_tests.py b/unittests/glsl_parser_test_tests.py index de00d11..c732bec 100644 --- a/unittests/glsl_parser_test_tests.py +++ b/unittests/glsl_parser_test_tests.py @@ -417,7 +417,7 @@ def test_set_glsl_version(): '_GLSLParserTest__get_command', return_value=['foo']): with mock.patch('framework.test.glsl_parser_test.open', - mock.mock_open()): + mock.mock_open(), create=True): with mock.patch('framework.test.glsl_parser_test.os.stat', mock.mock_open()): test = glsl.GLSLParserTest('foo') @@ -433,7 +433,7 @@ def test_set_glsl_es_version(): '_GLSLParserTest__get_command', return_value=['foo']): with mock.patch('framework.test.glsl_parser_test.open', - mock.mock_open()): + mock.mock_open(), create=True): with mock.patch('framework.test.glsl_parser_test.os.stat', mock.mock_open()): test = glsl.GLSLParserTest('foo') @@ -449,7 +449,7 @@ def test_set_gl_required(): '_GLSLParserTest__get_command', return_value=['foo']): with mock.patch('framework.test.glsl_parser_test.open', - mock.mock_open()): + mock.mock_open(), create=True): with mock.patch('framework.test.glsl_parser_test.os.stat', mock.mock_open()): test = glsl.GLSLParserTest('foo') diff --git a/unittests/shader_test_tests.py b/unittests/shader_test_tests.py index 8d67511..b91cde6 100644 --- a/unittests/shader_test_tests.py +++ b/unittests/shader_test_tests.py @@ -132,7 +132,7 @@ def test_find_requirements_gl_version(): 'GL_ARB_ham_sandwhich\n') with mock.patch('framework.test.shader_test.open', - mock.mock_open(read_data=data)): + mock.mock_open(read_data=data), create=True): test = testm.ShaderTest('null') nt.eq_(test.gl_version, 2.0) @@ -144,7 +144,7 @@ def test_find_requirements_gles_version(): 'GL_ARB_ham_sandwhich\n') with mock.patch('framework.test.shader_test.open', - mock.mock_open(read_data=data)): + mock.mock_open(read_data=data), create=True): test = testm.ShaderTest('null') nt.eq_(test.gles_version, 2.0) @@ -157,7 +157,7 @@ def test_find_requirements_glsl_version(): 'GL_ARB_ham_sandwhich\n') with mock.patch('framework.test.shader_test.open', - mock.mock_open(read_data=data)): + mock.mock_open(read_data=data), create=True): test = testm.ShaderTest('null') nt.eq_(test.glsl_version, 1.0) @@ -170,7 +170,7 @@ def test_find_requirements_glsl_es_version(): 'GL_ARB_ham_sandwhich\n') with mock.patch('framework.test.shader_test.open', - mock.mock_open(read_data=data)): + mock.mock_open(read_data=data), create=True): test = testm.ShaderTest('null') nt.eq_(test.glsl_es_version, 2.0) @@ -187,7 +187,7 @@ def test_ignore_shader_runner_directives(): def test(config): with mock.patch('framework.test.shader_test.open', - mock.mock_open(read_data=config)): + mock.mock_open(read_data=config), create=True): test = testm.ShaderTest('null') nt.eq_(test.gl_required, {'GL_foobar'}) -- 2.7.0 _______________________________________________ Piglit mailing list Piglit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/piglit