summaryrefslogtreecommitdiff
path: root/testlib.py
diff options
context:
space:
mode:
authorJulien Jehannet <julien.jehannet@logilab.fr>2010-11-22 12:38:04 +0100
committerJulien Jehannet <julien.jehannet@logilab.fr>2010-11-22 12:38:04 +0100
commitd01526c2cc31b2096536cfa5abffdbc9002c2c9a (patch)
treebc8fed06b8f2438a5ca504e01ee46f73c75bbdd3 /testlib.py
parentd85bbf8300eefb13f6b0c31f8eec7792a873a738 (diff)
downloadlogilab-common-d01526c2cc31b2096536cfa5abffdbc9002c2c9a.tar.gz
pytest: make test suite compatible with 2.7 (fix ParseError logic)
Diffstat (limited to 'testlib.py')
-rw-r--r--testlib.py37
1 files changed, 22 insertions, 15 deletions
diff --git a/testlib.py b/testlib.py
index cb6c0b5..864dd92 100644
--- a/testlib.py
+++ b/testlib.py
@@ -969,6 +969,11 @@ succeeded test into", osp.join(os.getcwd(), FILE_RESTART)
"""
from xml.parsers.expat import ExpatError
try:
+ from xml.etree.ElementTree import ParseError
+ except ImportError:
+ # compatibility for <python2.7
+ ParseError = ExpatError
+ try:
parse(data)
except (ExpatError, ParseError), ex:
if msg is None:
@@ -980,21 +985,23 @@ succeeded test into", osp.join(os.getcwd(), FILE_RESTART)
nb_lines = len(lines)
context_lines = []
- if context < 0:
- start = 1
- end = nb_lines
- else:
- start = max(ex.lineno-context, 1)
- end = min(ex.lineno+context, nb_lines)
- line_number_length = len('%i' % end)
- line_pattern = " %%%ii: %%s" % line_number_length
-
- for line_no in xrange(start, ex.lineno):
- context_lines.append(line_pattern % (line_no, lines[line_no-1]))
- context_lines.append(line_pattern % (ex.lineno, lines[ex.lineno-1]))
- context_lines.append('%s^\n' % (' ' * (1 + line_number_length + 2 +ex.offset)))
- for line_no in xrange(ex.lineno+1, end+1):
- context_lines.append(line_pattern % (line_no, lines[line_no-1]))
+ # catch when ParseError doesn't set valid lineno
+ if ex.lineno is not None:
+ if context < 0:
+ start = 1
+ end = nb_lines
+ else:
+ start = max(ex.lineno-context, 1)
+ end = min(ex.lineno+context, nb_lines)
+ line_number_length = len('%i' % end)
+ line_pattern = " %%%ii: %%s" % line_number_length
+
+ for line_no in xrange(start, ex.lineno):
+ context_lines.append(line_pattern % (line_no, lines[line_no-1]))
+ context_lines.append(line_pattern % (ex.lineno, lines[ex.lineno-1]))
+ context_lines.append('%s^\n' % (' ' * (1 + line_number_length + 2 +ex.offset)))
+ for line_no in xrange(ex.lineno+1, end+1):
+ context_lines.append(line_pattern % (line_no, lines[line_no-1]))
rich_context = ''.join(context_lines)
msg = 'XML stream not well formed: %s\n%s' % (ex, rich_context)