On Tue, Aug 12, 2008 at 09:17:39PM +0100, Chris Withers wrote: > I could have sworn I reported this before but couldn't find anything in > the archives so apologies if I have posted this before...
I have a feeling of deja vu about this... > Anyway, running zope.testrunner's trunk's tests on windows seems to have > some problems. These don't occur when running them on Linux. I'm vaguely interested in fixing these, but I don't do Windows. > File "zope.testing\src\zope\testing\testrunner\testrunner-debugging- > layer-setup.test", line 45, in testrunner-debugging-layer-setup.test ... > File "zope.testing\src\zope\testing\testrunner\find.py", line > 103, in find_suites > suite = StartUpFailure( Let's look at this statement closer: try: module = import_name(module_name) except KeyboardInterrupt: raise except: --> suite = StartUpFailure( options, module_name, sys.exc_info()[:2] + (sys.exc_info().tb_next.tb_next,), ) It would appear that the traceback is shallower than the code expects. I don't know why it is trying to strip the first two frames of the stack, either. > File "zope.testing\src\zope\testing\testrunner\find.py", line > 36, in __init__ > post_mortem(exc_info) > File "zope.testing\src\zope\testing\testrunner\runner.py", lin > e 717, in post_mortem > pdb.post_mortem(exc_info) > File "Python24\lib\pdb.py", line 1016, in post_mortem > while t.tb_next is not None: Apparently the traceback was exactly two frames deep, and with those stripped, the code passed None to pdb.post_mortem(). It would be good if someone who has Windows and Linux could compare the tracebacks in question. I'd also suggest extracting the stack frame stripping into a function that would be a bit more defensive: def strip_tb_frames((exc_type, exc_value, tb), count): while tb.tb_next is not None and count > 0: tb = tb.tb_next count -= 1 return (exc_type, exc_value, tb) and call it like this suite = StartUpFailure( options, module_name, strip_tb_frames(sys.exc_info(), 2) ) (Why oh why does Guido want to take away my beloved implicit argument tuple unpacking in Python 3.0?) > AttributeError: 'NoneType' object has no attribute 'tb_next' > Next error: > Failure in test zope.testing\src\zope\testing\testrunner\testrunner- > coverage-win32.txt > Failed doctest test for testrunner-coverage-win32.txt > File "zope.testing\src\zope\testing\testrunner\testrunner-coverage > -win32.txt", line 0 The name of this test suggests it's only run under Win32, so any refactoring done on Linux is likely to break it without anyone noticing. > ---------------------------------------------------------------------- > File "zope.testing\src\zope\testing\testrunner\testrunner-coverage-w > in32.txt", line 14, in testrunner-coverage-win32.txt > Failed example: > ignore = testrunner.TestIgnore(WinOptions()) > Exception raised: > Traceback (most recent call last): > File "zope.testing\src\zope\testing\doctest.py", line 1356, in > __run > compileflags, 1) in test.globs > File "<doctest testrunner-coverage-win32.txt>", line 1, in ? > AttributeError: 'module' object has no attribute 'TestIgnore' TestIgnore moved from zope.testing.testrunner to zope.testing.testrunner.coverage. It should be simple to fix the test. > Ran 183 tests with 2 failures and 0 errors in 43.094 seconds. > Tearing down left over layers: > Tear down zope.testing.testrunner.layer.UnitTests in 0.000 seconds. Marius Gedminas -- An NT server can be run by an idiot, and usually is.
Description: Digital signature
_______________________________________________ Zope-Dev maillist - Zope-Dev@zope.org http://mail.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://mail.zope.org/mailman/listinfo/zope-announce http://mail.zope.org/mailman/listinfo/zope )