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

Dylan Baker baker.dylan.c at gmail.com
Fri Dec 19 11:40:43 PST 2014


Sorry Mark, in got my in-reply-to and cc flags backwards, I meant to cc
you on this.

On Wednesday, December 17, 2014 03:33:53 PM Dylan Baker wrote:
> 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
> 
-------------- 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/0d031a4f/attachment-0001.sig>


More information about the Piglit mailing list