Re: [Piglit] [PATCH 1/3] framework/html: guard against errors writing individual test results

2018-05-30 Thread Dylan Baker
Reviewed-by: Dylan Baker 

Quoting Marek Olšák (2018-05-30 13:04:46)
> From: Nicolai Hähnle 
> 
> v2: check ENAMETOOLONG
> ---
>  framework/summary/html_.py | 21 ++---
>  1 file changed, 14 insertions(+), 7 deletions(-)
> 
> diff --git a/framework/summary/html_.py b/framework/summary/html_.py
> index f7fdc8576..14dd76fa8 100644
> --- a/framework/summary/html_.py
> +++ b/framework/summary/html_.py
> @@ -24,20 +24,21 @@
>  
>  from __future__ import (
>  absolute_import, division, print_function, unicode_literals
>  )
>  import errno
>  import getpass
>  import os
>  import shutil
>  import sys
>  import tempfile
> +import traceback
>  
>  import mako
>  from mako.lookup import TemplateLookup
>  import six
>  
>  # a local variable status exists, prevent accidental overloading by renaming
>  # the module
>  from framework import backends, exceptions, core
>  
>  from .common import Results, escape_filename, escape_pathname
> @@ -106,27 +107,33 @@ def _make_testrun_info(results, destination, 
> exclude=None):
>  
>  # Then build the individual test results
>  for key, value in six.iteritems(each.tests):
>  html_path = os.path.join(destination, name,
>   escape_filename(key + ".html"))
>  temp_path = os.path.dirname(html_path)
>  
>  if value.result not in exclude:
>  core.check_dir(temp_path)
>  
> -with open(html_path, 'wb') as out:
> -out.write(_TEMPLATES.get_template(
> -'test_result.mako').render(
> -testname=key,
> -value=value,
> -css=os.path.relpath(result_css, temp_path),
> -index=os.path.relpath(index, temp_path)))
> +try:
> +with open(html_path, 'wb') as out:
> +out.write(_TEMPLATES.get_template(
> +'test_result.mako').render(
> +testname=key,
> +value=value,
> +css=os.path.relpath(result_css, temp_path),
> +index=os.path.relpath(index, temp_path)))
> +except OSError as e:
> +if e.errno == errno.ENAMETOOLONG:
> +print('WARN: filename "{}" too 
> long'.format(html_name))
> +else:
> +raise
>  
>  
>  def _make_comparison_pages(results, destination, exclude):
>  """Create the pages of comparisons."""
>  pages = frozenset(['changes', 'problems', 'skips', 'fixes',
> 'regressions', 'enabled', 'disabled'])
>  
>  # Index.html is a bit of a special case since there is index, all, and
>  # alltests, where the other pages all use the same name. ie,
>  # changes.html, changes, and page=changes.
> -- 
> 2.17.0
> 
> ___
> Piglit mailing list
> Piglit@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/piglit


signature.asc
Description: signature
___
Piglit mailing list
Piglit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/piglit


[Piglit] [PATCH 1/3] framework/html: guard against errors writing individual test results

2018-05-30 Thread Marek Olšák
From: Nicolai Hähnle 

v2: check ENAMETOOLONG
---
 framework/summary/html_.py | 21 ++---
 1 file changed, 14 insertions(+), 7 deletions(-)

diff --git a/framework/summary/html_.py b/framework/summary/html_.py
index f7fdc8576..14dd76fa8 100644
--- a/framework/summary/html_.py
+++ b/framework/summary/html_.py
@@ -24,20 +24,21 @@
 
 from __future__ import (
 absolute_import, division, print_function, unicode_literals
 )
 import errno
 import getpass
 import os
 import shutil
 import sys
 import tempfile
+import traceback
 
 import mako
 from mako.lookup import TemplateLookup
 import six
 
 # a local variable status exists, prevent accidental overloading by renaming
 # the module
 from framework import backends, exceptions, core
 
 from .common import Results, escape_filename, escape_pathname
@@ -106,27 +107,33 @@ def _make_testrun_info(results, destination, 
exclude=None):
 
 # Then build the individual test results
 for key, value in six.iteritems(each.tests):
 html_path = os.path.join(destination, name,
  escape_filename(key + ".html"))
 temp_path = os.path.dirname(html_path)
 
 if value.result not in exclude:
 core.check_dir(temp_path)
 
-with open(html_path, 'wb') as out:
-out.write(_TEMPLATES.get_template(
-'test_result.mako').render(
-testname=key,
-value=value,
-css=os.path.relpath(result_css, temp_path),
-index=os.path.relpath(index, temp_path)))
+try:
+with open(html_path, 'wb') as out:
+out.write(_TEMPLATES.get_template(
+'test_result.mako').render(
+testname=key,
+value=value,
+css=os.path.relpath(result_css, temp_path),
+index=os.path.relpath(index, temp_path)))
+except OSError as e:
+if e.errno == errno.ENAMETOOLONG:
+print('WARN: filename "{}" too long'.format(html_name))
+else:
+raise
 
 
 def _make_comparison_pages(results, destination, exclude):
 """Create the pages of comparisons."""
 pages = frozenset(['changes', 'problems', 'skips', 'fixes',
'regressions', 'enabled', 'disabled'])
 
 # Index.html is a bit of a special case since there is index, all, and
 # alltests, where the other pages all use the same name. ie,
 # changes.html, changes, and page=changes.
-- 
2.17.0

___
Piglit mailing list
Piglit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/piglit