[Python-3000] Py3k_struni additional test failures under cygwin (original) (raw)

Guido van Rossum guido at python.org
Wed Jul 18 20:13:24 CEST 2007


On 7/18/07, Joe Smith <unknown_kev_cat at hotmail.com> wrote:

"Guido van Rossum" <guido at python.org> wrote in message news:ca471dc20707181002w64e076aco9a509ec7e4e15b9a at mail.gmail.com... > On 7/17/07, Joe Smith <unknownkevcat at hotmail.com> wrote: >> Building Py3kstruni under Cygwin I've noticed a few more tests failing >> than >> the wiki shows. >> These are using SVN revision 56413. >> >> Some spurious errors seem to occur if Python/ is not remaned temporally. >> I >> have not included those. (This is an oddity of the cygwin '.exe' >> autohandling combined with case-insensitivity) >> >> >> Testcoding: Errors. Traceback included at end of message. >> "test testdescr failed -- ['foo\u1234bar'] slots not caught" >> "test testlargefile failed -- got b'z', but expected 'z'" >> testmarshal: Tests that fail are fasiling with a recursion limit >> exceeded >> error. >> >> >> >> Tracebacks: >> >> test testcoding failed -- Traceback (most recent call last): >> File "/home/Owner/py3k-struni/Lib/test/testcoding.py", line 12, in >> testbadc >> oding2 >> self.verifybadmodule(modulename) >> File "/home/Owner/py3k-struni/Lib/test/testcoding.py", line 20, in >> verifybad >> module >> text = fp.read() >> File "/home/Owner/py3k-struni/Lib/io.py", line 1186, in read >> res += decoder.decode(self.buffer.read(), True) >> File "/home/Owner/py3k-struni/Lib/encodings/ascii.py", line 26, in >> decode >> return codecs.asciidecode(input, self.errors)[0] >> UnicodeDecodeError: 'ascii' codec can't decode byte 0xef in position 0: >> ordinal >> not in range(128) > > The testdescr and testlargefile failures are reproducible on Ubuntu > and someone will eventually fix them. > > I can't reproduce the testmarshal and testcoding failures; please > investigate more on CYGWIN. For the test coding, apprently the module's contents are intended to be loaded, and then verified that a syntax error occurs when trying to parse the module. However, on cygwin i'm consistantly getting an error on the line that reads the file. Specificly fp.read(). Fp.read() appears to be trying to export a unicode string by interpreting the byte string as ascii. The byte string is most certainly not valid ascii. So the codec throws an error. I'm guessing for some reason python normally chose a different codec, but on my cygwin compiles it is choosing ascii. I'm not sure why. Nor am I sure how to inestigate further.

The encoding defaults to the filesystem encoding or otherwise Latin-1. There's an XXX comment in io.py, in TextIOWrapper.init, admitting this is questionable. I'm guessing CYGWIN has a filesystem encoding equal to ASCII? Is this a good idea?

Maybe the default encoding should always be UTF-8 (matching the source code default encoding).

I can also fix it by changing test_coding.py to add encoding="utf-8" to the open() call in verify_bad_module().

Heres a fairly useless loking traceback for testmarshal. Many of the tests fail with nearly identical tracebacks:

#====================================================================== #ERROR: testtuple (test.testmarshal.ContainerTestCase) #---------------------------------------------------------------------- #Traceback (most recent call last): # File "/home/Owner/py3k-struni/Lib/test/testmarshal.py", line 134, in testtuple # self.helper(tuple(self.d.keys())) # File "/home/Owner/py3k-struni/Lib/test/testmarshal.py", line 21, in helper # new = marshal.load(f) #ValueError: recursion limit exceeded For what it's worth here is the fll subtest list and status for testmarshal: #testbool (test.testmarshal.IntTestCase) ... ERROR #testint64 (test.testmarshal.IntTestCase) ... ok #testints (test.testmarshal.IntTestCase) ... ERROR #testfloats (test.testmarshal.FloatTestCase) ... ERROR #testbuffer (test.testmarshal.StringTestCase) ... ERROR #teststring (test.testmarshal.StringTestCase) ... ERROR #testunicode (test.testmarshal.StringTestCase) ... ERROR #testcode (test.testmarshal.CodeTestCase) ... ok #testdict (test.testmarshal.ContainerTestCase) ... ERROR #testlist (test.testmarshal.ContainerTestCase) ... ERROR #testsets (test.testmarshal.ContainerTestCase) ... ERROR #testtuple (test.testmarshal.ContainerTestCase) ... ERROR #testexceptions (test.testmarshal.ExceptionTestCase) ... ok #testbug5888452 (test.testmarshal.BugsTestCase) ... ok #testfuzz (test.testmarshal.BugsTestCase) ... ok #testloadsrecursion (test.testmarshal.BugsTestCase) ... ok #testpatch873224 (test.testmarshal.BugsTestCase) ... ok #testrecursionlimit (test.testmarshal.BugsTestCase) ... ok #testversionargument (test.testmarshal.BugsTestCase) ... ok I'm wondering if the recusion limit on my build is getting set too low somehow.

Can you find out what it is? sys.getrecursionlimit().

-- --Guido van Rossum (home page: http://www.python.org/~guido/)



More information about the Python-3000 mailing list