Opened 19 years ago
Closed 18 years ago
#4249 closed defect (worksforme)
Error reporting fails for some Genshi syntax errors
| Reported by: | Christian Boos | Owned by: | Jonas Borgström |
|---|---|---|---|
| Priority: | normal | Milestone: | |
| Component: | general | Version: | devel |
| Severity: | minor | Keywords: | genshi |
| Cc: | Branch: | ||
| Release Notes: | |||
| API Changes: | |||
| Internal Changes: | |||
Description
The initial problem was due to a Genshi syntax error in the template:
<span py:if="$change.ipnr" class="ipnr">(IP: $change.ipnr)</span>
(the "$" in the py:if)
But this failed to be properly reported in error.html. Instead, I got this raw backtrace:
Traceback (most recent call last):
File "C:\Workspace\src\trac\trunk\trac\web\api.py", line 329, in send_error
'text/html')
File "C:\Workspace\src\trac\trunk\trac\web\chrome.py", line 514, in render_template
return stream.render(method, doctype=doctype)
File "c:\workspace\src\trac\genshi\trunk\genshi\core.py", line 146, in render
output = u''.join(list(generator))
File "c:\workspace\src\trac\genshi\trunk\genshi\output.py", line 203, in __call__
for kind, data, pos in stream:
File "c:\workspace\src\trac\genshi\trunk\genshi\output.py", line 489, in __call__
for kind, data, pos in chain(stream, [(None, None, None)]):
File "c:\workspace\src\trac\genshi\trunk\genshi\output.py", line 439, in __call__
for kind, data, pos in stream:
File "c:\workspace\src\trac\genshi\trunk\genshi\core.py", line 207, in _ensure
for event in stream:
File "c:\workspace\src\trac\genshi\trunk\genshi\core.py", line 207, in _ensure
for event in stream:
File "C:\Workspace\src\trac\trunk\trac\web\chrome.py", line 534, in _strip_accesskeys
for kind, data, pos in stream:
File "c:\workspace\src\trac\genshi\trunk\genshi\core.py", line 207, in _ensure
for event in stream:
File "C:\Workspace\src\trac\trunk\trac\web\chrome.py", line 523, in _generate
for kind, data, pos in stream:
File "c:\workspace\src\trac\genshi\trunk\genshi\template\markup.py", line 188, in _include
for event in stream:
File "c:\workspace\src\trac\genshi\trunk\genshi\template\markup.py", line 256, in _match
content = list(self._include(content, ctxt))
File "c:\workspace\src\trac\genshi\trunk\genshi\template\markup.py", line 188, in _include
for event in stream:
File "c:\workspace\src\trac\genshi\trunk\genshi\template\markup.py", line 231, in _match
for event in stream:
File "c:\workspace\src\trac\genshi\trunk\genshi\template\markup.py", line 220, in _strip
event = stream.next()
File "c:\workspace\src\trac\genshi\trunk\genshi\template\core.py", line 320, in _eval
result = data.evaluate(ctxt)
File "c:\workspace\src\trac\genshi\trunk\genshi\template\eval.py", line 114, in evaluate
{'data': data})
File "C:\Workspace\src\trac\trunk\templates\error.html", line 148, in <Expression u"shorten_line(repr(value))">
<td><code>${shorten_line(repr(value))}</code></td>
File "c:\workspace\src\trac\genshi\trunk\genshi\template\directives.py", line 94, in __repr__
if self.expr is not None:
AttributeError: expr
I already had this kind of error before, but now it's the first time I find an easy and reproducible way to trigger it.
With [Genshi 455/trunk].
Attachments (0)
Change History (5)
comment:1 by , 19 years ago
follow-up: 5 comment:3 by , 19 years ago
Ok, more precisely, there's this problematic bit in error.html:
<code>${shorten_line(repr(value))}</code>
which already failed in the past for me, quite mysteriously with an unicode error.
I have the impression that the repr here sometimes doesn't work well when value is a directive.
The bug lies probably in Genshi, but it's the special way we use it in Trac that trigger that. So I'm not sure where to start…
comment:4 by , 19 years ago
Okay, that instance should be fixed in G:r462, but others are still lurking in the code.
comment:5 by , 18 years ago
| Milestone: | 0.11 |
|---|---|
| Resolution: | → worksforme |
| Status: | new → closed |
Replying to cboos:
Ok, more precisely, there's this problematic bit in error.html:
<code>${shorten_line(repr(value))}</code>which already failed in the past for me, quite mysteriously with an
unicodeerror.
Like that:
<td><code>${shorten_line(repr(value))}</code></td>
UnicodeEncodeError: 'ascii' codec can't encode characters in position 14-15: ordinal not in range(128)
… and this was quite likely due to the value being an object whose __repr__ method was returning an unicode string. This doesn't work anymore with Python 2.5, see #5405.
As the original report was about something that got fixed in Genshi and the other similar issues I had can probably be related to the above problem, I think we can close this ticket now.



So shouldn't you file this on the Genshi site, then? Or is it specific to the way Trac handles these errors?