Issue1611
Created on 2007-12-13 14:13 by p.lavarre@ieee.org, last changed 2009-03-14 01:50 by ncoghlan.
| Messages (5) | |||
|---|---|---|---|
| msg58533 - (view) | Author: Pat LaVarre (p.lavarre@ieee.org) | Date: 2007-12-13 14:13 | |
SUMMARY: Calling doctest.testmod more than once before SystemExit spews stderr messages such as "*** DocTestRunner.merge: '__main__' in both testers; summing outcomes" STEPS TO REPRODUCE: $ cat tttestmod.py import doctest doctest.testmod() # 1 doctest.testmod() # 2 doctest.testmod() # 3 $ ACTUAL RESULTS: $ python ./tttestmod.py *** DocTestRunner.merge: '__main__' in both testers; summing outcomes. *** DocTestRunner.merge: '__main__' in both testers; summing outcomes. $ EXPECTED RESULTS: $ python ./tttestmod.py $ WORKAROUND: Filter stdout.write calls from doctest.py to squelch the noise. REGRESSION/ ISOLATION: $ python --version Python 2.5.1 $ Also mentioned 2006-10 in comp.lang.python at DocTestRunner.merge verbose, i.e., http://groups.google.com/group/comp.lang.python/search? group=comp.lang.python&q=DocTestRunner.merge+verbose Not yet found in Bugs.python.org at DocTestRunner. NOTES: We can reasonably expect newbies to doctest random things that need to be doctested more than once. We can't reasonably expect newbies to know to how to filter doctest stdout, for example as below. #!/usr/bin/env python r""" ttestmod.py Filter Doctest stdout a la http://wiki.python.org/moin/doctest to call doctest.testmod more than once per SystemExit without producing noise. >>> import random >>> import sys >>> >>> die = random.randint(1, 6) >>> print >>sys.stderr, die >>> >>> die == 6 True >>> """ import sys class DocTestOutput: def __init__(self, out = sys.stdout): self.out = out self.write = self.writeOut self.quietly = False def writeOut(self, bytes): head = "*** DocTestRunner.merge: '__main__" tail = "' in both testers; summing outcomes." if bytes.startswith(head): if bytes.endswith(tail): self.quietly = True if not self.quietly: self.out.write(bytes) if 0 <= bytes.find('\n'): self.quietly = False if __name__ == '__main__': import doctest sys.stdout = DocTestOutput() doctest.testmod() doctest.testmod() |
|||
| msg58543 - (view) | Author: Guido van Rossum (gvanrossum) | Date: 2007-12-13 18:05 | |
I suspect that doctest was simply not intended to be used this way. Maybe Tim remembers more? |
|||
| msg83281 - (view) | Author: R. David Murray (r.david.murray) | Date: 2009-03-07 16:04 | |
The offending output lines were commented out by Nick Coghlan in commit 67790 with the comment "Don't print here by default, since doing so breaks some of the buildbots". The actual code change disables the output rather than changing the default, so perhaps it is not quite what Nick intended. However, either way the intent seems to be to not generate this output normally, which would mean that this bug could be considered fixed in the trunk. |
|||
| msg83536 - (view) | Author: R. David Murray (r.david.murray) | Date: 2009-03-13 21:13 | |
Nick, is the change you made to Lib/doctest.py, commenting out the print "*** DocTestRunner.merge:" message, intended to be permanent? If so, we can close this bug. |
|||
| msg83568 - (view) | Author: Nick Coghlan (ncoghlan) | Date: 2009-03-14 01:50 | |
I believe I commented it out when we were trying to get the buildbots green before releasing 2.6. (The fact that regrtest.py trips over it does suggest there are legitimate reasons for calling doctest.testmod() more than once in a single test suite though) It looked like some debugging code that was accidentally left in to me (putting random stuff on the screen in a test tool that monitors what is written to stdout is less than helpful...) Since 2.5 is only getting security fixes now and later versions don't suffer from the issue, I'm closing this one as "out of date". |
|||
| History | |||
|---|---|---|---|
| Date | User | Action | Args |
| 2009-03-14 01:50:10 | ncoghlan | set | status: open -> closed messages: + msg83568 resolution: out of date |
| 2009-03-13 21:13:26 | r.david.murray | set | nosy:
+ ncoghlan messages: + msg83536 |
| 2009-03-07 16:04:26 | r.david.murray | set | nosy:
+ r.david.murray messages: + msg83281 |
| 2007-12-13 18:05:15 | gvanrossum | set | assignee: tim_one messages: + msg58543 nosy: + gvanrossum, tim_one |
| 2007-12-13 14:13:14 | p.lavarre@ieee.org | create | |