A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://mail.python.org/pipermail/python-dev/2011-May/111182.html below:

[Python-Dev] [Python-checkins] cpython (2.7): Issue #10276: test_zlib checks that inputs of 2 GB are handled correctly by

[Python-Dev] [Python-checkins] cpython (2.7): Issue #10276: test_zlib checks that inputs of 2 GB are handled correctly byNadeem Vawda nadeem.vawda at gmail.com
Tue May 3 16:22:27 CEST 2011
On Tue, May 3, 2011 at 3:19 PM, victor.stinner
<python-checkins at python.org> wrote:
> +# Issue #10276 - check that inputs of 2 GB are handled correctly.
> +# Be aware of issues #1202, #8650, #8651 and #10276
> +class ChecksumBigBufferTestCase(unittest.TestCase):
> +    int_max = 0x7FFFFFFF
> +
> +    @unittest.skipUnless(mmap, "mmap() is not available.")
> +    def test_big_buffer(self):
> +        if sys.platform[:3] == 'win' or sys.platform == 'darwin':
> +            requires('largefile',
> +                     'test requires %s bytes and a long time to run' %
> +                     str(self.int_max))
> +        try:
> +            with open(TESTFN, "wb+") as f:
> +                f.seek(self.int_max-4)
> +                f.write("asdf")
> +                f.flush()
> +                try:
> +                    m = mmap.mmap(f.fileno(), 0, access=mmap.ACCESS_READ)
> +                    self.assertEqual(zlib.crc32(m), 0x709418e7)
> +                    self.assertEqual(zlib.adler32(m), -2072837729)
> +                finally:
> +                    m.close()
> +        except (IOError, OverflowError):
> +            raise unittest.SkipTest("filesystem doesn't have largefile support")
> +        finally:
> +            unlink(TESTFN)
> +
> +

0x7FFFFFFF is (2G-1) bytes. For a 2GB buffer, int_max should be
0x80000000. However, if you make this change, crc32() and adler32()
raise OverflowErrors (see changeset a0681e7a6ded). This makes the test
to erroneously report that the filesystem doesn't support large files.
The assertEqual() tests should probably be changed to
assertRaises(..., OverflowError).

Also, the assignment to m needs to be moved outside of the inner
try...finally block. If mmap() fails, the call to m.close() raises a
new exception because m has not yet been bound. This seems to be
causing failures on some of the 32-bit buildbots.

As an aside, in this sort of situation is it better to just go and
commit a fix myself, or is raising it on the mailing list first the
right way to do things?

Cheers,
Nadeem
More information about the Python-Dev mailing list

RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4