[Piglit] [Patch v2] generated_tests: Actually catch exception in os.makedirs

Dylan Baker baker.dylan.c at gmail.com
Fri Dec 19 12:46:14 PST 2014


Sigh.  

Well, the good news is I just forgot to check it in and it's sitting
safe and sound in my tree.

I'll send a v3.

On Friday, December 19, 2014 12:42:11 PM Mark Janes wrote:
> It looks like this patch omits the utils.py module which is being
> called.
> 
> This would have been hard to spot in a build-test, because the pyc from
> your previous patch was still in place.
> 
> -Mark
> Dylan Baker <baker.dylan.c at gmail.com> writes:
> 
> > Patch b59ff71eb was supposed to fix os.makedirs exceptions, but falls
> > short because of a missing else statement that causes all of the caught
> > exceptions to fall back to raise.
> >
> > This corrects, it also pulls the duplicate functions out into a shared
> > module.
> >
> > v2: - remove accidentally included hunk (Mark)
> >
> > Signed-off-by: Dylan Baker <dylanx.c.baker at intel.com>
> > ---
> >  generated_tests/gen_builtin_packing_tests.py                 |  9 ++-------
> >  generated_tests/gen_builtin_uniform_tests.py                 | 12 +++---------
> >  generated_tests/gen_builtin_uniform_tests_fp64.py            | 12 +++---------
> >  generated_tests/gen_const_builtin_equal_tests.py             |  9 ++-------
> >  generated_tests/gen_constant_array_size_tests.py             | 11 ++---------
> >  generated_tests/gen_constant_array_size_tests_fp64.py        | 11 ++---------
> >  generated_tests/gen_interpolation_tests.py                   | 11 ++---------
> >  generated_tests/gen_non-lvalue_tests.py                      |  4 ++--
> >  generated_tests/gen_outerproduct_invalid_params.py           |  9 ++-------
> >  generated_tests/gen_outerproduct_tests.py                    | 10 +++-------
> >  generated_tests/gen_shader_bit_encoding_tests.py             |  9 ++-------
> >  generated_tests/gen_shader_image_load_store_tests.py         | 10 +++-------
> >  generated_tests/gen_texture_lod_tests.py                     |  9 ++-------
> >  generated_tests/gen_texture_query_lod_tests.py               |  9 ++-------
> >  generated_tests/gen_uniform_initializer_tests.py             | 12 +++---------
> >  generated_tests/generate-cl-store-tests.py                   | 10 +++-------
> >  generated_tests/interpolation-qualifier-built-in-variable.py |  9 ++-------
> >  17 files changed, 40 insertions(+), 126 deletions(-)
> >
> > diff --git a/generated_tests/gen_builtin_packing_tests.py b/generated_tests/gen_builtin_packing_tests.py
> > index 5ca727a..901f493 100644
> > --- a/generated_tests/gen_builtin_packing_tests.py
> > +++ b/generated_tests/gen_builtin_packing_tests.py
> > @@ -43,6 +43,7 @@ from math import copysign, fabs, fmod, frexp, isinf, isnan, modf
> >  from numpy import int8, int16, uint8, uint16, uint32, float32
> >  
> >  from templates import template_dir
> > +from modules import utils
> >  
> >  TEMPLATES = template_dir(os.path.basename(os.path.splitext(__file__)[0]))
> >  
> > @@ -1027,13 +1028,7 @@ class ShaderTest(object):
> >  
> >      def write_file(self):
> >          dirname = os.path.dirname(self.filename)
> > -        if not os.path.exists(dirname):
> > -            try:
> > -                os.makedirs(dirname)
> > -            except OSError as e:
> > -                if e.errno == 17:  # file exists
> > -                    pass
> > -                raise
> > +        utils.safe_makedirs(dirname)
> >  
> >          with open(self.filename, "w") as f:
> >              f.write(self.__template.render(func=self.__func_info))
> > diff --git a/generated_tests/gen_builtin_uniform_tests.py b/generated_tests/gen_builtin_uniform_tests.py
> > index d3a7816..9bb3075 100644
> > --- a/generated_tests/gen_builtin_uniform_tests.py
> > +++ b/generated_tests/gen_builtin_uniform_tests.py
> > @@ -52,6 +52,8 @@ import os
> >  import os.path
> >  import sys
> >  
> > +from modules import utils
> > +
> >  
> >  def compute_offset_and_scale(test_vectors):
> >      """Compute scale and offset values such that for each result in
> > @@ -537,15 +539,7 @@ class ShaderTest(object):
> >          shader_test += self.make_test()
> >          filename = self.filename()
> >          dirname = os.path.dirname(filename)
> > -
> > -        if not os.path.exists(dirname):
> > -            try:
> > -                os.makedirs(dirname)
> > -            except OSError as e:
> > -                if e.errno == 17:  # file exists
> > -                    pass
> > -                raise
> > -
> > +        utils.safe_makedirs(dirname)
> >          with open(filename, 'w') as f:
> >              f.write(shader_test)
> >  
> > diff --git a/generated_tests/gen_builtin_uniform_tests_fp64.py b/generated_tests/gen_builtin_uniform_tests_fp64.py
> > index cf10c85..23032bd 100644
> > --- a/generated_tests/gen_builtin_uniform_tests_fp64.py
> > +++ b/generated_tests/gen_builtin_uniform_tests_fp64.py
> > @@ -52,6 +52,8 @@ import os
> >  import os.path
> >  import sys
> >  
> > +from modules import utils
> > +
> >  
> >  def compute_offset_and_scale(test_vectors):
> >      """Compute scale and offset values such that for each result in
> > @@ -507,15 +509,7 @@ class ShaderTest(object):
> >          shader_test += self.make_test()
> >          filename = self.filename()
> >          dirname = os.path.dirname(filename)
> > -
> > -        if not os.path.exists(dirname):
> > -            try:
> > -                os.makedirs(dirname)
> > -            except OSError as e:
> > -                if e.errno == 17:  # file exists
> > -                    pass
> > -                raise
> > -
> > +        utils.safe_makedirs(dirname)
> >          with open(filename, 'w') as f:
> >              f.write(shader_test)
> >  
> > diff --git a/generated_tests/gen_const_builtin_equal_tests.py b/generated_tests/gen_const_builtin_equal_tests.py
> > index 490a591..47a238c 100644
> > --- a/generated_tests/gen_const_builtin_equal_tests.py
> > +++ b/generated_tests/gen_const_builtin_equal_tests.py
> > @@ -25,6 +25,7 @@ import re
> >  import os
> >  
> >  from templates import template_file
> > +from modules import utils
> >  
> >  TEMPLATE = template_file(os.path.basename(os.path.splitext(__file__)[0]),
> >                           'template.shader_test.mako')
> > @@ -73,13 +74,7 @@ def main():
> >      """ Main function """
> >      dirname = os.path.join('spec', 'glsl-1.20', 'execution',
> >                             'built-in-functions')
> > -    if not os.path.exists(dirname):
> > -        try:
> > -            os.makedirs(dirname)
> > -        except OSError as e:
> > -            if e.errno == 17:  # file exists
> > -                pass
> > -            raise
> > +    utils.safe_makedirs(dirname)
> >  
> >      for test_id, x in enumerate(TEST_VECTORS, start=2):
> >          # make equal tests
> > diff --git a/generated_tests/gen_constant_array_size_tests.py b/generated_tests/gen_constant_array_size_tests.py
> > index 906f7c4..c6f75ab 100644
> > --- a/generated_tests/gen_constant_array_size_tests.py
> > +++ b/generated_tests/gen_constant_array_size_tests.py
> > @@ -40,6 +40,7 @@ import optparse
> >  import os
> >  import os.path
> >  
> > +from modules import utils
> >  
> >  class ParserTest(object):
> >      """Class used to build a test of a single built-in.  This is an
> > @@ -198,15 +199,7 @@ class ParserTest(object):
> >          parser_test += self.make_shader()
> >          filename = self.filename()
> >          dirname = os.path.dirname(filename)
> > -
> > -        if not os.path.exists(dirname):
> > -            try:
> > -                os.makedirs(dirname)
> > -            except OSError as e:
> > -                if e.errno == 17:  # file exists
> > -                    pass
> > -                raise
> > -
> > +        utils.safe_makedirs(dirname)
> >          with open(filename, 'w') as f:
> >              f.write(parser_test)
> >  
> > diff --git a/generated_tests/gen_constant_array_size_tests_fp64.py b/generated_tests/gen_constant_array_size_tests_fp64.py
> > index be1fe09..8d4a785 100644
> > --- a/generated_tests/gen_constant_array_size_tests_fp64.py
> > +++ b/generated_tests/gen_constant_array_size_tests_fp64.py
> > @@ -40,6 +40,7 @@ import optparse
> >  import os
> >  import os.path
> >  
> > +from modules import utils
> >  
> >  class ParserTest(object):
> >      """Class used to build a test of a single built-in.  This is an
> > @@ -199,15 +200,7 @@ class ParserTest(object):
> >          parser_test += self.make_shader()
> >          filename = self.filename()
> >          dirname = os.path.dirname(filename)
> > -
> > -        if not os.path.exists(dirname):
> > -            try:
> > -                os.makedirs(dirname)
> > -            except OSError as e:
> > -                if e.errno == 17:  # file exists
> > -                    pass
> > -                raise
> > -
> > +        utils.safe_makedirs(dirname)
> >          with open(filename, 'w') as f:
> >              f.write(parser_test)
> >  
> > diff --git a/generated_tests/gen_interpolation_tests.py b/generated_tests/gen_interpolation_tests.py
> > index e839bbc..1700a20 100644
> > --- a/generated_tests/gen_interpolation_tests.py
> > +++ b/generated_tests/gen_interpolation_tests.py
> > @@ -71,6 +71,7 @@ from __future__ import print_function
> >  import os
> >  
> >  from templates import template_file
> > +from modules import utils
> >  
> >  TEMPLATE = template_file(os.path.basename(os.path.splitext(__file__)[0]),
> >                           'template.shader_test.mako')
> > @@ -267,15 +268,7 @@ class Test(object):
> >      def generate(self):
> >          filename = self.filename()
> >          dirname = os.path.dirname(filename)
> > -
> > -        if not os.path.exists(dirname):
> > -            try:
> > -                os.makedirs(dirname)
> > -            except OSError as e:
> > -                if e.errno == 17:  # file exists
> > -                    pass
> > -                raise
> > -
> > +        utils.safe_makedirs(dirname)
> >          with open(filename, 'w') as f:
> >              f.write(TEMPLATE.render(args=self))
> >  
> > diff --git a/generated_tests/gen_non-lvalue_tests.py b/generated_tests/gen_non-lvalue_tests.py
> > index 95381f8..8b90353 100644
> > --- a/generated_tests/gen_non-lvalue_tests.py
> > +++ b/generated_tests/gen_non-lvalue_tests.py
> > @@ -26,6 +26,7 @@ import os
> >  import itertools
> >  
> >  from templates import template_dir
> > +from modules import utils
> >  
> >  TEMPLATES = template_dir(os.path.basename(os.path.splitext(__file__)[0]))
> >  
> > @@ -89,8 +90,7 @@ def all_tests():
> >  
> >  def main():
> >      dirname = os.path.join('spec', 'glsl-1.10', 'compiler', 'expressions')
> > -    if not os.path.exists(dirname):
> > -        os.makedirs(dirname)
> > +    utils.safe_makedirs(dirname)
> >  
> >      for args in all_tests():
> >          generate(dirname, *args)
> > diff --git a/generated_tests/gen_outerproduct_invalid_params.py b/generated_tests/gen_outerproduct_invalid_params.py
> > index 77807aa..bdf03d6 100644
> > --- a/generated_tests/gen_outerproduct_invalid_params.py
> > +++ b/generated_tests/gen_outerproduct_invalid_params.py
> > @@ -22,6 +22,7 @@ from __future__ import print_function
> >  import os
> >  
> >  from templates import template_file
> > +from modules import utils
> >  
> >  TEMPLATE = template_file(os.path.basename(os.path.splitext(__file__)[0]),
> >                           'template.vert.mako')
> > @@ -31,13 +32,7 @@ def main():
> >      """ Generate tests """
> >      dirname = os.path.join('spec', 'glsl-1.20', 'compiler',
> >                             'built-in-functions')
> > -    if not os.path.exists(dirname):
> > -        try:
> > -            os.makedirs(dirname)
> > -        except OSError as e:
> > -            if e.errno == 17:  # file exists
> > -                pass
> > -            raise
> > +    utils.safe_makedirs(dirname)
> >  
> >      for type_ in ['int', 'float', 'bool', 'bvec2', 'bvec3', 'bvec4', 'mat2',
> >                    'mat2x2', 'mat2x3', 'mat2x4', 'mat3', 'mat3x2', 'mat3x3',
> > diff --git a/generated_tests/gen_outerproduct_tests.py b/generated_tests/gen_outerproduct_tests.py
> > index 9a90e22..42c527b 100644
> > --- a/generated_tests/gen_outerproduct_tests.py
> > +++ b/generated_tests/gen_outerproduct_tests.py
> > @@ -26,6 +26,7 @@ import itertools
> >  import collections
> >  
> >  from templates import template_file
> > +from modules import utils
> >  
> >  TEMPLATE = template_file(os.path.splitext(os.path.basename(__file__))[0],
> >                           'template.shader_test.mako')
> > @@ -37,13 +38,8 @@ Parameters = collections.namedtuple(
> >  def main():
> >      """ Generate tests """
> >      dirname = os.path.join('spec', 'glsl-1.20', 'execution')
> > -    if not os.path.exists(dirname):
> > -        try:
> > -            os.makedirs(dirname)
> > -        except OSError as e:
> > -            if e.errno == 17:  # file exists
> > -                pass
> > -            raise
> > +    utils.safe_makedirs(dirname)
> > +
> >  
> >      for c, r in itertools.product(xrange(2, 5), repeat=2):
> >          vecs = [
> > diff --git a/generated_tests/gen_shader_bit_encoding_tests.py b/generated_tests/gen_shader_bit_encoding_tests.py
> > index ded3a78..4656755 100644
> > --- a/generated_tests/gen_shader_bit_encoding_tests.py
> > +++ b/generated_tests/gen_shader_bit_encoding_tests.py
> > @@ -27,6 +27,7 @@ import os
> >  from operator import neg
> >  
> >  from templates import template_file
> > +from modules import utils
> >  
> >  TEMPLATE = template_file(os.path.basename(os.path.splitext(__file__)[0]),
> >                           'template.shader_test.mako')
> > @@ -139,13 +140,7 @@ def main():
> >  
> >          dirname = os.path.join('spec', api.lower(), 'execution',
> >                                 'built-in-functions')
> > -        if not os.path.exists(dirname):
> > -            try:
> > -                os.makedirs(dirname)
> > -            except OSError as e:
> > -                if e.errno == 17:  # file exists
> > -                    pass
> > -                raise
> > +        utils.safe_makedirs(dirname)
> >  
> >          for func, attrib in FUNCS.iteritems():
> >              for execution_stage in ('vs', 'fs'):
> > diff --git a/generated_tests/gen_shader_image_load_store_tests.py b/generated_tests/gen_shader_image_load_store_tests.py
> > index 6084659..1ffa078 100644
> > --- a/generated_tests/gen_shader_image_load_store_tests.py
> > +++ b/generated_tests/gen_shader_image_load_store_tests.py
> > @@ -26,6 +26,8 @@ import os.path
> >  from mako.template import Template
> >  from textwrap import dedent
> >  
> > +from modules import utils
> > +
> >  
> >  def gen_header(status):
> >      """
> > @@ -143,13 +145,7 @@ def gen(name, src, tests):
> >          print(filename)
> >  
> >          dirname = os.path.dirname(filename)
> > -        if not os.path.exists(dirname):
> > -            try:
> > -                os.makedirs(dirname)
> > -            except OSError as e:
> > -                if e.errno == 17:  # file exists
> > -                    pass
> > -                raise
> > +        utils.safe_makedirs(dirname)
> >  
> >          with open(filename, 'w') as f:
> >              f.write(template.render(header = gen_header, **t))
> > diff --git a/generated_tests/gen_texture_lod_tests.py b/generated_tests/gen_texture_lod_tests.py
> > index 52f5870..53b2568 100644
> > --- a/generated_tests/gen_texture_lod_tests.py
> > +++ b/generated_tests/gen_texture_lod_tests.py
> > @@ -25,6 +25,7 @@ import os
> >  import collections
> >  
> >  from templates import template_dir
> > +from modules import utils
> >  
> >  TEMPLATES = template_dir(os.path.basename(os.path.splitext(__file__)[0]))
> >  
> > @@ -75,13 +76,7 @@ def main():
> >  
> >      """
> >      dirname = 'spec/arb_shader_texture_lod/compiler'
> > -    if not os.path.exists(dirname):
> > -        try:
> > -            os.makedirs(dirname)
> > -        except OSError as e:
> > -            if e.errno == 17:  # file exists
> > -                pass
> > -            raise
> > +    utils.safe_makedirs(dirname)
> >  
> >      for params in LOD_TESTS:
> >          name = os.path.join(
> > diff --git a/generated_tests/gen_texture_query_lod_tests.py b/generated_tests/gen_texture_query_lod_tests.py
> > index 886ca60..c786a10 100644
> > --- a/generated_tests/gen_texture_query_lod_tests.py
> > +++ b/generated_tests/gen_texture_query_lod_tests.py
> > @@ -26,6 +26,7 @@ import os
> >  import os.path
> >  
> >  from templates import template_file
> > +from modules import utils
> >  
> >  TEMPLATE = template_file(os.path.basename(os.path.splitext(__file__)[0]),
> >                           'template.glsl_parser_test.mako')
> > @@ -85,13 +86,7 @@ def main():
> >          lod = 'Lod' if api == 'glsl-4.00' else 'LOD'
> >          dirname = os.path.join("spec", api.lower(), "compiler",
> >                                 "built-in-functions")
> > -        if not os.path.exists(dirname):
> > -            try:
> > -                os.makedirs(dirname)
> > -            except OSError as e:
> > -                if e.errno == 17:  # file exists
> > -                    pass
> > -                raise
> > +        utils.safe_makedirs(dirname)
> >  
> >          for sampler_type, coord_type in SAMPLER_TYPE_TO_COORD_TYPE.iteritems():
> >              requirements = [requirement['extensions']] if requirement['extensions'] else []
> > diff --git a/generated_tests/gen_uniform_initializer_tests.py b/generated_tests/gen_uniform_initializer_tests.py
> > index fc5e0bb..1605876 100644
> > --- a/generated_tests/gen_uniform_initializer_tests.py
> > +++ b/generated_tests/gen_uniform_initializer_tests.py
> > @@ -25,6 +25,7 @@ from __future__ import print_function
> >  import os
> >  
> >  from templates import template_dir
> > +from modules import utils
> >  
> >  TEMPLATES = template_dir(os.path.splitext(os.path.basename(__file__))[0])
> >  
> > @@ -77,13 +78,7 @@ def generate_tests(type_list, base_name, major, minor):
> >                             'glsl-{0}.{1}'.format(major, minor),
> >                             'execution',
> >                             'uniform-initializer')
> > -    if not os.path.exists(dirname):
> > -        try:
> > -            os.makedirs(dirname)
> > -        except OSError as e:
> > -            if e.errno == 17:  # file exists
> > -                pass
> > -            raise
> > +    utils.safe_makedirs(dirname)
> >  
> >      for target in ("vs", "fs"):
> >          for t in ALL_TEMPLATES:
> > @@ -138,8 +133,7 @@ def generate_array_tests(type_list, base_name, major, minor):
> >                             'glsl-{0}.{1}'.format(major, minor),
> >                             'execution',
> >                             'uniform-initializer')
> > -    if not os.path.exists(dirname):
> > -        os.makedirs(dirname)
> > +    utils.safe_makedirs(dirname)
> >  
> >      def parts():
> >          """Generate parts."""
> > diff --git a/generated_tests/generate-cl-store-tests.py b/generated_tests/generate-cl-store-tests.py
> > index f68637e..586c4f0 100644
> > --- a/generated_tests/generate-cl-store-tests.py
> > +++ b/generated_tests/generate-cl-store-tests.py
> > @@ -26,17 +26,13 @@
> >  import os
> >  import textwrap
> >  
> > +from modules import utils
> > +
> >  TYPES = ['char', 'uchar', 'short', 'ushort', 'int', 'uint', 'long', 'ulong', 'float', 'double']
> >  VEC_SIZES = ['', '2', '4', '8', '16']
> >  
> >  dirName = os.path.join("cl", "store")
> > -if not os.path.exists(dirName):
> > -    try:
> > -        os.makedirs(dirName)
> > -    except OSError as e:
> > -        if e.errno == 17:  # file exists
> > -            pass
> > -        raise
> > +utils.safe_makedirs(dirname)
> >  
> >  
> >  def gen_array(size):
> > diff --git a/generated_tests/interpolation-qualifier-built-in-variable.py b/generated_tests/interpolation-qualifier-built-in-variable.py
> > index 9b551e0..45fc42c 100644
> > --- a/generated_tests/interpolation-qualifier-built-in-variable.py
> > +++ b/generated_tests/interpolation-qualifier-built-in-variable.py
> > @@ -28,6 +28,7 @@ import os
> >  import itertools
> >  
> >  from templates import template_dir
> > +from modules import utils
> >  
> >  TEMPLATES = template_dir(os.path.basename(os.path.splitext(__file__)[0]))
> >  
> > @@ -171,13 +172,7 @@ def main():
> >      """main function."""
> >      dirname = os.path.join('spec', 'glsl-1.30', 'linker',
> >                             'interpolation-qualifiers')
> > -    if not os.path.exists(dirname):
> > -        try:
> > -            os.makedirs(dirname)
> > -        except OSError as e:
> > -            if e.errno == 17:  # file exists
> > -                pass
> > -            raise
> > +    utils.safe_makedirs(dirname)
> >  
> >      for fs_mode, vs_mode in itertools.product(INTERPOLATION_MODES, repeat=2):
> >          make_fs_vs_tests(fs_mode, vs_mode, dirname)
> > -- 
> > 2.2.0
> >
> > _______________________________________________
> > Piglit mailing list
> > Piglit at lists.freedesktop.org
> > http://lists.freedesktop.org/mailman/listinfo/piglit
-------------- 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/20141219/474b6c04/attachment-0001.sig>


More information about the Piglit mailing list