[Zope-dev] whitespace filtering corner case in doctest

Marius Gedminas marius at gedmin.as
Wed Sep 16 08:15:51 EDT 2009


On Tue, Aug 18, 2009 at 08:53:49AM +0000, Reinout van Rees wrote:
> On 2009-08-17, Marius Gedminas <marius at gedmin.as> wrote:
> >
> > On Mon, Aug 17, 2009 at 02:46:46PM +0000, Reinout van Rees wrote:
> >> In some cases, importing readline can result in the escape code
> >> ^[[?1034h= to be send ("8bit on").
> >
> > According to the gentoo bug report (liked from your blog post), this
> > happens if your termcap/terminfo define smm/rmm codes ("meta on/meta
> > off").
> 
> ... which I didn't do, at least not consiously.  Just a pretty normal
> OSX installation.
> 
> > BTW, regarding your workaround: I'd suggest using TERM=3Ddummy instead of
> > TERM=3Dlinux, as a safer choice.  Not that it should matter much in
> > practice.
> 
> That'd be better, yes.  I never do anything tweaking with TERM anyway,
> so I don't know the options/effects.
> 
> jladage suggested to do the workaround in buildout, btw: add the
> following to the part that generates the bin/test script:
> 
>  environment-vars =
>      TERM linux
> 
> >> This escape code isn't visible, which leads to hard to find test
> >> errors, see
> >> http://reinout.vanrees.org/weblog/2009/07/16/invisible-test-diff.html
> >> Granted, it are basically corner cases.  On the other hand, it does
> >> seem to cause problems now and then, according= > to my googling.
> >> Would it be ok to add it to the whitespace normalization of
> >> doctests?  Opinions?
> >
> > Well, it's not whitespace, really...  My gut feeling is that this fixup
> > doesn't belong in the core doctest code.
> 
> Ok.
> 
> > If this happened in my project, I'd either
> >
> >   1) make sure I import readline at module level, before any tests are
> >      run
> 
> This doesn't work, surprisingly.  It *is* a corner case.
> It are tests where z3c.testsetup tests that it runs tests correctly.
> That's a lot of "tests" in one sentence, which means that the test
> output comes from separate python processes that run tests.  So if I
> import readline in z3c.testsetup's tests, I still get the output from
> the test runners that are being tested.
> 
> Sigh, difficult to explain, such a recusive testing thingy :-)

Sounds perfectly clear to me.  I once tried to make sure zope.testing's tests
covered the test coverage code, and measuring the coverage of the tests
testing coverage measurement turned out to be impossible.

> > or
> >
> >   2) add a renormalizer that removes the escape sequence for the test
> >      that triggers this
> 
> And you'd do this per-project and not in core zope.testing, right?
> Fine.  Uli already send me some example code, so I'll do that (and put
> the code snippet on my weblog so that google can find it).
> 
> > Perhaps it would be nice if doctest's differ escaped ASCII control
> > characters?  (You could do that too with a renormalizer.)
> 
> Can we safely assume that a specific set of control characters needs
> to be escaped?  It sounds a bit dangerous to me.

ASCII and defines which characters are printable and which ones are
control characters.  Maybe \x9b poses a bit of a problem, since it's an
escape character for some terminals, but a real character on some legacy
8bit charsets.  (It's not allowed in UTF-8 sequences.)

Or perhaps you mean it may make it difficult to distinguish a test
printing \x1b from a test printing ^ followed by [ (assuming that's the
visualisation chosen for control characters).  That is an issue.

BTW I've no clue why I'm replying to a month-old post.  I missed it
earlier somehow.

Marius Gedminas
-- 
http://pov.lt/ -- Zope 3 consulting and development
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: Digital signature
Url : http://mail.zope.org/pipermail/zope-dev/attachments/20090916/3caf75ea/attachment-0001.bin 


More information about the Zope-Dev mailing list