[Python-Dev] Possible bugs in test_struct (original) (raw)

Collin Winter collinw at gmail.com
Thu Mar 29 21:50:14 CEST 2007


While converting test_struct to use unittest, I came across these two issues:

  1. r51119 by Bob Ippolito added a test case for "SF bug 1530559: struct.pack raises TypeError where it used to convert." (Handy diff at http://svn.python.org/view/python/trunk/Lib/test/test_struct.py?rev=51119&r1=46679&r2=51119). As far as I can tell, this test doesn't work, thanks to the lines

check_float_coerce = with_warning_restore(deprecated_err)

def test_1530559(): for endian in ('', '>', '<'): for fmt in ('B', 'H', 'I', 'L', 'b', 'h', 'i', 'l'): check_float_coerce(endian + fmt, 1.0) check_float_coerce(endian + fmt, 1.5)

The problem is that the calls to check_float_coerce() attempt to call the string produced by "endian + fmt", so a TypeError will always be raised.

Fixing the test to do what was actually intended causes a TestFailed error to be raised with the message "did not raise error for float coerce". I'm confused as to why this is a test failure, when it seems like "rais[ing an] error for float coerce" is exactly what we're trying to avoid. Anyone know what's going on here?

  1. test_705836() features the code

    big = (1 << 25) - 1 big = math.ldexp(big, 127 - 24) try: packed = struct.pack(">f", big) except OverflowError: pass else: TestFailed("expected OverflowError")

Actually raising the TestFailed exception (as opposed to just instantiating it) causes a test failure. Is this a bug in struct or a bad test?

Thanks, Collin Winter



More information about the Python-Dev mailing list