2003-02-03 16:45:52 -04:00
|
|
|
import unittest
|
2008-05-20 18:35:26 -03:00
|
|
|
from test import support
|
2020-07-06 06:15:08 -03:00
|
|
|
from test.support import import_helper
|
Merged revisions 61538-61540,61556,61559-61560,61563,61565,61571,61575-61576,61580-61582,61586,61591,61593,61595,61605-61606,61613-61616,61618,61621-61623,61625,61627,61631-61634 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r61538 | steven.bethard | 2008-03-18 20:03:50 +0100 (Di, 18 Mär 2008) | 1 line
cell_compare needs to return -2 instead of NULL.
........
r61539 | steven.bethard | 2008-03-18 20:04:32 +0100 (Di, 18 Mär 2008) | 1 line
_have_soundcard() is a bad check for winsound.Beep, since you can have a soundcard but have the beep driver disabled. This revision basically disables the beep tests by wrapping them in a try/except. The Right Way To Do It is to come up with a _have_enabled_beep_driver() and use that.
........
r61540 | gregory.p.smith | 2008-03-18 20:05:32 +0100 (Di, 18 Mär 2008) | 8 lines
Fix chown on 64-bit linux. It needed to take a long (64-bit on 64bit linux) as
uid and gid input to accept values >=2**31 as valid while still accepting
negative numbers to pass -1 to chown for "no change".
Fixes issue1747858.
This should be backported to release25-maint.
........
r61556 | steven.bethard | 2008-03-18 20:59:14 +0100 (Di, 18 Mär 2008) | 1 line
Fix test_atexit so that it still passes when -3 is supplied. (It was catching the warning messages on stdio from using the reload() function.)
........
r61559 | neal.norwitz | 2008-03-18 21:30:38 +0100 (Di, 18 Mär 2008) | 1 line
Import the test properly. This is especially important for py3k.
........
r61560 | gregory.p.smith | 2008-03-18 21:40:01 +0100 (Di, 18 Mär 2008) | 2 lines
news entry for the chown fix
........
r61563 | brett.cannon | 2008-03-18 22:12:42 +0100 (Di, 18 Mär 2008) | 2 lines
Ignore BIG5HKSCS-2004.TXT which is downloaded as part of a test.
........
r61565 | steven.bethard | 2008-03-18 22:30:13 +0100 (Di, 18 Mär 2008) | 1 line
Have regrtest skip test_py3kwarn when the -3 flag is missing.
........
r61571 | gregory.p.smith | 2008-03-18 23:27:41 +0100 (Di, 18 Mär 2008) | 4 lines
Add a test to make sure zlib.crc32 and binascii.crc32 return the same thing.
Fix a buglet in binascii.crc32, the second optional argument could previously
have a signedness mismatch with the C variable its going into.
........
r61575 | raymond.hettinger | 2008-03-19 00:22:29 +0100 (Mi, 19 Mär 2008) | 1 line
Speed-up isinstance() for one easy case.
........
r61576 | raymond.hettinger | 2008-03-19 00:33:08 +0100 (Mi, 19 Mär 2008) | 1 line
Issue: 2354: Add 3K warning for the cmp argument to list.sort() and sorted().
........
r61580 | andrew.kuchling | 2008-03-19 02:05:35 +0100 (Mi, 19 Mär 2008) | 1 line
Add Jeff Rush
........
r61581 | gregory.p.smith | 2008-03-19 02:38:35 +0100 (Mi, 19 Mär 2008) | 3 lines
Mention that crc32 and adler32 are available in a different module (zlib).
Some people look for them in hashlib.
........
r61582 | gregory.p.smith | 2008-03-19 02:46:10 +0100 (Mi, 19 Mär 2008) | 3 lines
Use zlib's crc32 routine instead of binascii when available. zlib's is faster
when compiled properly optimized and about the same speed otherwise.
........
r61586 | david.wolever | 2008-03-19 03:26:57 +0100 (Mi, 19 Mär 2008) | 1 line
Added my name to ACKS
........
r61591 | gregory.p.smith | 2008-03-19 04:14:41 +0100 (Mi, 19 Mär 2008) | 5 lines
Fix the struct module DeprecationWarnings that zipfile was triggering by
removing all use of signed struct values.
test_zipfile and test_zipfile64 pass. no more warnings.
........
r61593 | raymond.hettinger | 2008-03-19 04:56:59 +0100 (Mi, 19 Mär 2008) | 1 line
Fix compiler warning.
........
r61595 | martin.v.loewis | 2008-03-19 05:39:13 +0100 (Mi, 19 Mär 2008) | 2 lines
Issue #2400: Allow relative imports to "import *".
........
r61605 | martin.v.loewis | 2008-03-19 07:00:28 +0100 (Mi, 19 Mär 2008) | 2 lines
Import relimport using a relative import.
........
r61606 | trent.nelson | 2008-03-19 07:28:24 +0100 (Mi, 19 Mär 2008) | 1 line
Issue2290: Support x64 Windows builds that live in pcbuild/amd64. Without it, sysutils._python_build() returns the wrong directory, which causes the test_get_config_h_filename method in Lib/distutils/tests/test_sysconfig.py to fail.
........
r61613 | trent.nelson | 2008-03-19 08:45:19 +0100 (Mi, 19 Mär 2008) | 3 lines
Refine the Visual Studio 2008 build solution in order to improve how we deal with external components, as well as fixing outstanding issues with Windows x64 build support. Introduce two new .vcproj files, _bsddb44.vcproj and sqlite3.vcproj, which replace the previous pre-link event scripts for _bsddb and _sqlite3 respectively. The new project files inherit from our property files as if they were any other Python module. This has numerous benefits. First, the components get built with exactly the same compiler flags and settings as the rest of Python. Second, it makes it much easier to debug problems in the external components when they're part of the build system. Third, they'll benefit from profile guided optimisation in the release builds, just like the rest of Python core.
I've also introduced a slightly new pattern for managing externals in subversion. New components get checked in as <name>-<version>.x, where <version> matches the exact vendor version string. After the initial import of the external component, the .x is tagged as .0 (i.e. tcl-8.4.18.x -> tcl-8.4.18.0). Some components may not need any tweaking, whereas there are others that might (tcl/tk fall into this bucket). In that case, the relevant modifications are made to the .x branch, which will be subsequently tagged as .1 (and then n+1 going forward) when they build successfully and all tests pass. Buildbots will be converted to rely on these explicit tags only, which makes it easy for us to switch them over to a new version as and when required. (Simple change to external(-amd64).bat: if we've bumped tcl to 8.4.18.1, change the .bat to rmdir 8.4.18.0 if it exists and check out a new .1 copy.)
........
r61614 | trent.nelson | 2008-03-19 08:56:39 +0100 (Mi, 19 Mär 2008) | 1 line
Remove extraneous apostrophe and semi-colon from AdditionalIncludeDirectories.
........
r61615 | georg.brandl | 2008-03-19 08:56:40 +0100 (Mi, 19 Mär 2008) | 2 lines
Remove footnote from versionchanged as it upsets LaTeX.
........
r61616 | georg.brandl | 2008-03-19 08:57:57 +0100 (Mi, 19 Mär 2008) | 2 lines
Another one.
........
r61618 | trent.nelson | 2008-03-19 09:06:03 +0100 (Mi, 19 Mär 2008) | 1 line
Fix the tcl-8.4.18.1 path and make sure we cd into the right directory when building tcl/tk.
........
r61621 | trent.nelson | 2008-03-19 10:23:08 +0100 (Mi, 19 Mär 2008) | 1 line
Lets have another try at getting the Windows buildbots in a consistent state before rebuilding using the new process.
........
r61622 | eric.smith | 2008-03-19 13:09:55 +0100 (Mi, 19 Mär 2008) | 2 lines
Use test.test_support.captured_stdout instead of a custom contextmanager.
Thanks Nick Coghlan.
........
r61623 | eric.smith | 2008-03-19 13:15:10 +0100 (Mi, 19 Mär 2008) | 1 line
Trivial typo.
........
r61625 | thomas.heller | 2008-03-19 17:10:57 +0100 (Mi, 19 Mär 2008) | 2 lines
Checkout sqlite-source when it is not there.
........
r61627 | brett.cannon | 2008-03-19 17:50:13 +0100 (Mi, 19 Mär 2008) | 5 lines
test_nis would fail if test.test_support.verbose was true but NIS was not set
up on the machine.
Closes issue2411. Thanks Michael Bishop.
........
r61631 | brett.cannon | 2008-03-19 18:37:43 +0100 (Mi, 19 Mär 2008) | 2 lines
Use sys.py3kwarning instead of trying to trigger a Py3k-related warning.
........
r61632 | raymond.hettinger | 2008-03-19 18:45:19 +0100 (Mi, 19 Mär 2008) | 1 line
Issue 2354: Fix-up compare warning. Patch contributed by Jeff Balogh.
........
r61633 | raymond.hettinger | 2008-03-19 18:58:59 +0100 (Mi, 19 Mär 2008) | 1 line
The filter() function does support a None argument in Py3.0.
........
r61634 | raymond.hettinger | 2008-03-19 19:01:58 +0100 (Mi, 19 Mär 2008) | 1 line
Remove itertools warnings I had added before the 2-to-3 handled the migration.
........
2008-03-19 18:50:51 -03:00
|
|
|
import binascii
|
2018-06-27 15:04:51 -03:00
|
|
|
import copy
|
2015-11-12 05:23:04 -04:00
|
|
|
import pickle
|
2001-02-20 22:17:01 -04:00
|
|
|
import random
|
2011-02-21 14:09:00 -04:00
|
|
|
import sys
|
2023-08-04 06:10:29 -03:00
|
|
|
from test.support import bigmemtest, _1G, _4G, skip_on_s390x
|
2001-02-20 22:17:01 -04:00
|
|
|
|
2020-07-06 06:15:08 -03:00
|
|
|
|
|
|
|
zlib = import_helper.import_module('zlib')
|
Merged revisions 70734,70775,70856,70874,70876-70877 via svnmerge
........
r70734 | r.david.murray | 2009-03-30 15:04:00 -0400 (Mon, 30 Mar 2009) | 7 lines
Add import_function method to test.test_support, and modify a number of
tests that expect to be skipped if imports fail or functions don't
exist to use import_function and import_module. The ultimate goal is
to change regrtest to not skip automatically on ImportError. Checking
in now to make sure the buldbots don't show any errors on platforms
I can't direct test on.
........
r70775 | r.david.murray | 2009-03-30 19:05:48 -0400 (Mon, 30 Mar 2009) | 4 lines
Change more tests to use import_module for the modules that
should cause tests to be skipped. Also rename import_function
to the more descriptive get_attribute and add a docstring.
........
r70856 | r.david.murray | 2009-03-31 14:32:17 -0400 (Tue, 31 Mar 2009) | 7 lines
A few more test skips via import_module, and change import_module to
return the error message produced by importlib, so that if an import
in the package whose import is being wrapped is what failed the skip
message will contain the name of that module instead of the name of the
wrapped module. Also fixed formatting of some previous comments.
........
r70874 | r.david.murray | 2009-03-31 15:33:15 -0400 (Tue, 31 Mar 2009) | 5 lines
Improve test_support.import_module docstring, remove
deprecated flag from get_attribute since it isn't likely
to do anything useful.
........
r70876 | r.david.murray | 2009-03-31 15:49:15 -0400 (Tue, 31 Mar 2009) | 4 lines
Remove the regrtest check that turns any ImportError into a skipped test.
Hopefully all modules whose imports legitimately result in a skipped
test have been properly wrapped by the previous commits.
........
r70877 | r.david.murray | 2009-03-31 15:57:24 -0400 (Tue, 31 Mar 2009) | 2 lines
Add NEWS entry for regrtest change.
........
2009-03-31 20:16:50 -03:00
|
|
|
|
2013-11-03 15:31:38 -04:00
|
|
|
requires_Compress_copy = unittest.skipUnless(
|
|
|
|
hasattr(zlib.compressobj(), "copy"),
|
|
|
|
'requires Compress.copy()')
|
|
|
|
requires_Decompress_copy = unittest.skipUnless(
|
|
|
|
hasattr(zlib.decompressobj(), "copy"),
|
|
|
|
'requires Decompress.copy()')
|
|
|
|
|
2022-02-24 19:32:02 -04:00
|
|
|
# bpo-46623: On s390x, when a hardware accelerator is used, using different
|
|
|
|
# ways to compress data with zlib can produce different compressed data.
|
|
|
|
# Simplified test_pair() code:
|
|
|
|
#
|
|
|
|
# def func1(data):
|
|
|
|
# return zlib.compress(data)
|
|
|
|
#
|
|
|
|
# def func2(data)
|
|
|
|
# co = zlib.compressobj()
|
|
|
|
# x1 = co.compress(data)
|
|
|
|
# x2 = co.flush()
|
|
|
|
# return x1 + x2
|
|
|
|
#
|
|
|
|
# On s390x if zlib uses a hardware accelerator, func1() creates a single
|
|
|
|
# "final" compressed block whereas func2() produces 3 compressed blocks (the
|
|
|
|
# last one is a final block). On other platforms with no accelerator, func1()
|
|
|
|
# and func2() produce the same compressed data made of a single (final)
|
|
|
|
# compressed block.
|
|
|
|
#
|
|
|
|
# Only the compressed data is different, the decompression returns the original
|
|
|
|
# data:
|
|
|
|
#
|
|
|
|
# zlib.decompress(func1(data)) == zlib.decompress(func2(data)) == data
|
|
|
|
#
|
|
|
|
# Make the assumption that s390x always has an accelerator to simplify the skip
|
2023-08-04 06:10:29 -03:00
|
|
|
# condition.
|
2003-02-03 16:45:52 -04:00
|
|
|
|
2011-09-11 19:04:13 -03:00
|
|
|
class VersionTestCase(unittest.TestCase):
|
|
|
|
|
|
|
|
def test_library_version(self):
|
2012-01-25 17:16:50 -04:00
|
|
|
# Test that the major version of the actual library in use matches the
|
|
|
|
# major version that we were compiled against. We can't guarantee that
|
|
|
|
# the minor versions will match (even on the machine on which the module
|
|
|
|
# was compiled), and the API is stable between minor versions, so
|
2012-01-28 11:32:47 -04:00
|
|
|
# testing only the major versions avoids spurious failures.
|
2012-01-25 17:16:50 -04:00
|
|
|
self.assertEqual(zlib.ZLIB_RUNTIME_VERSION[0], zlib.ZLIB_VERSION[0])
|
2011-09-11 19:04:13 -03:00
|
|
|
|
|
|
|
|
2003-02-03 16:45:52 -04:00
|
|
|
class ChecksumTestCase(unittest.TestCase):
|
|
|
|
# checksum test cases
|
|
|
|
def test_crc32start(self):
|
2007-05-22 19:44:07 -03:00
|
|
|
self.assertEqual(zlib.crc32(b""), zlib.crc32(b"", 0))
|
2009-06-30 20:06:06 -03:00
|
|
|
self.assertTrue(zlib.crc32(b"abc", 0xffffffff))
|
2003-02-03 16:45:52 -04:00
|
|
|
|
|
|
|
def test_crc32empty(self):
|
2007-05-22 19:44:07 -03:00
|
|
|
self.assertEqual(zlib.crc32(b"", 0), 0)
|
|
|
|
self.assertEqual(zlib.crc32(b"", 1), 1)
|
|
|
|
self.assertEqual(zlib.crc32(b"", 432), 432)
|
2003-02-03 16:45:52 -04:00
|
|
|
|
|
|
|
def test_adler32start(self):
|
2007-05-22 19:44:07 -03:00
|
|
|
self.assertEqual(zlib.adler32(b""), zlib.adler32(b"", 1))
|
2009-06-30 20:06:06 -03:00
|
|
|
self.assertTrue(zlib.adler32(b"abc", 0xffffffff))
|
2003-02-03 16:45:52 -04:00
|
|
|
|
|
|
|
def test_adler32empty(self):
|
2007-05-22 19:44:07 -03:00
|
|
|
self.assertEqual(zlib.adler32(b"", 0), 0)
|
|
|
|
self.assertEqual(zlib.adler32(b"", 1), 1)
|
|
|
|
self.assertEqual(zlib.adler32(b"", 432), 432)
|
2003-02-03 16:45:52 -04:00
|
|
|
|
|
|
|
def test_penguins(self):
|
2015-12-11 01:19:29 -04:00
|
|
|
self.assertEqual(zlib.crc32(b"penguin", 0), 0x0e5c1a120)
|
|
|
|
self.assertEqual(zlib.crc32(b"penguin", 1), 0x43b6aa94)
|
|
|
|
self.assertEqual(zlib.adler32(b"penguin", 0), 0x0bcf02f6)
|
|
|
|
self.assertEqual(zlib.adler32(b"penguin", 1), 0x0bd602f7)
|
2003-02-03 16:45:52 -04:00
|
|
|
|
2007-05-22 19:44:07 -03:00
|
|
|
self.assertEqual(zlib.crc32(b"penguin"), zlib.crc32(b"penguin", 0))
|
|
|
|
self.assertEqual(zlib.adler32(b"penguin"),zlib.adler32(b"penguin",1))
|
2003-02-03 16:45:52 -04:00
|
|
|
|
2008-03-17 17:24:09 -03:00
|
|
|
def test_crc32_adler32_unsigned(self):
|
2009-12-14 14:00:06 -04:00
|
|
|
foo = b'abcdefghijklmnop'
|
2008-03-17 17:24:09 -03:00
|
|
|
# explicitly test signed behavior
|
2008-03-20 03:20:09 -03:00
|
|
|
self.assertEqual(zlib.crc32(foo), 2486878355)
|
2009-12-14 14:00:06 -04:00
|
|
|
self.assertEqual(zlib.crc32(b'spam'), 1138425661)
|
2008-03-17 17:24:09 -03:00
|
|
|
self.assertEqual(zlib.adler32(foo+foo), 3573550353)
|
2009-12-14 14:00:06 -04:00
|
|
|
self.assertEqual(zlib.adler32(b'spam'), 72286642)
|
2008-03-17 17:24:09 -03:00
|
|
|
|
Merged revisions 61538-61540,61556,61559-61560,61563,61565,61571,61575-61576,61580-61582,61586,61591,61593,61595,61605-61606,61613-61616,61618,61621-61623,61625,61627,61631-61634 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r61538 | steven.bethard | 2008-03-18 20:03:50 +0100 (Di, 18 Mär 2008) | 1 line
cell_compare needs to return -2 instead of NULL.
........
r61539 | steven.bethard | 2008-03-18 20:04:32 +0100 (Di, 18 Mär 2008) | 1 line
_have_soundcard() is a bad check for winsound.Beep, since you can have a soundcard but have the beep driver disabled. This revision basically disables the beep tests by wrapping them in a try/except. The Right Way To Do It is to come up with a _have_enabled_beep_driver() and use that.
........
r61540 | gregory.p.smith | 2008-03-18 20:05:32 +0100 (Di, 18 Mär 2008) | 8 lines
Fix chown on 64-bit linux. It needed to take a long (64-bit on 64bit linux) as
uid and gid input to accept values >=2**31 as valid while still accepting
negative numbers to pass -1 to chown for "no change".
Fixes issue1747858.
This should be backported to release25-maint.
........
r61556 | steven.bethard | 2008-03-18 20:59:14 +0100 (Di, 18 Mär 2008) | 1 line
Fix test_atexit so that it still passes when -3 is supplied. (It was catching the warning messages on stdio from using the reload() function.)
........
r61559 | neal.norwitz | 2008-03-18 21:30:38 +0100 (Di, 18 Mär 2008) | 1 line
Import the test properly. This is especially important for py3k.
........
r61560 | gregory.p.smith | 2008-03-18 21:40:01 +0100 (Di, 18 Mär 2008) | 2 lines
news entry for the chown fix
........
r61563 | brett.cannon | 2008-03-18 22:12:42 +0100 (Di, 18 Mär 2008) | 2 lines
Ignore BIG5HKSCS-2004.TXT which is downloaded as part of a test.
........
r61565 | steven.bethard | 2008-03-18 22:30:13 +0100 (Di, 18 Mär 2008) | 1 line
Have regrtest skip test_py3kwarn when the -3 flag is missing.
........
r61571 | gregory.p.smith | 2008-03-18 23:27:41 +0100 (Di, 18 Mär 2008) | 4 lines
Add a test to make sure zlib.crc32 and binascii.crc32 return the same thing.
Fix a buglet in binascii.crc32, the second optional argument could previously
have a signedness mismatch with the C variable its going into.
........
r61575 | raymond.hettinger | 2008-03-19 00:22:29 +0100 (Mi, 19 Mär 2008) | 1 line
Speed-up isinstance() for one easy case.
........
r61576 | raymond.hettinger | 2008-03-19 00:33:08 +0100 (Mi, 19 Mär 2008) | 1 line
Issue: 2354: Add 3K warning for the cmp argument to list.sort() and sorted().
........
r61580 | andrew.kuchling | 2008-03-19 02:05:35 +0100 (Mi, 19 Mär 2008) | 1 line
Add Jeff Rush
........
r61581 | gregory.p.smith | 2008-03-19 02:38:35 +0100 (Mi, 19 Mär 2008) | 3 lines
Mention that crc32 and adler32 are available in a different module (zlib).
Some people look for them in hashlib.
........
r61582 | gregory.p.smith | 2008-03-19 02:46:10 +0100 (Mi, 19 Mär 2008) | 3 lines
Use zlib's crc32 routine instead of binascii when available. zlib's is faster
when compiled properly optimized and about the same speed otherwise.
........
r61586 | david.wolever | 2008-03-19 03:26:57 +0100 (Mi, 19 Mär 2008) | 1 line
Added my name to ACKS
........
r61591 | gregory.p.smith | 2008-03-19 04:14:41 +0100 (Mi, 19 Mär 2008) | 5 lines
Fix the struct module DeprecationWarnings that zipfile was triggering by
removing all use of signed struct values.
test_zipfile and test_zipfile64 pass. no more warnings.
........
r61593 | raymond.hettinger | 2008-03-19 04:56:59 +0100 (Mi, 19 Mär 2008) | 1 line
Fix compiler warning.
........
r61595 | martin.v.loewis | 2008-03-19 05:39:13 +0100 (Mi, 19 Mär 2008) | 2 lines
Issue #2400: Allow relative imports to "import *".
........
r61605 | martin.v.loewis | 2008-03-19 07:00:28 +0100 (Mi, 19 Mär 2008) | 2 lines
Import relimport using a relative import.
........
r61606 | trent.nelson | 2008-03-19 07:28:24 +0100 (Mi, 19 Mär 2008) | 1 line
Issue2290: Support x64 Windows builds that live in pcbuild/amd64. Without it, sysutils._python_build() returns the wrong directory, which causes the test_get_config_h_filename method in Lib/distutils/tests/test_sysconfig.py to fail.
........
r61613 | trent.nelson | 2008-03-19 08:45:19 +0100 (Mi, 19 Mär 2008) | 3 lines
Refine the Visual Studio 2008 build solution in order to improve how we deal with external components, as well as fixing outstanding issues with Windows x64 build support. Introduce two new .vcproj files, _bsddb44.vcproj and sqlite3.vcproj, which replace the previous pre-link event scripts for _bsddb and _sqlite3 respectively. The new project files inherit from our property files as if they were any other Python module. This has numerous benefits. First, the components get built with exactly the same compiler flags and settings as the rest of Python. Second, it makes it much easier to debug problems in the external components when they're part of the build system. Third, they'll benefit from profile guided optimisation in the release builds, just like the rest of Python core.
I've also introduced a slightly new pattern for managing externals in subversion. New components get checked in as <name>-<version>.x, where <version> matches the exact vendor version string. After the initial import of the external component, the .x is tagged as .0 (i.e. tcl-8.4.18.x -> tcl-8.4.18.0). Some components may not need any tweaking, whereas there are others that might (tcl/tk fall into this bucket). In that case, the relevant modifications are made to the .x branch, which will be subsequently tagged as .1 (and then n+1 going forward) when they build successfully and all tests pass. Buildbots will be converted to rely on these explicit tags only, which makes it easy for us to switch them over to a new version as and when required. (Simple change to external(-amd64).bat: if we've bumped tcl to 8.4.18.1, change the .bat to rmdir 8.4.18.0 if it exists and check out a new .1 copy.)
........
r61614 | trent.nelson | 2008-03-19 08:56:39 +0100 (Mi, 19 Mär 2008) | 1 line
Remove extraneous apostrophe and semi-colon from AdditionalIncludeDirectories.
........
r61615 | georg.brandl | 2008-03-19 08:56:40 +0100 (Mi, 19 Mär 2008) | 2 lines
Remove footnote from versionchanged as it upsets LaTeX.
........
r61616 | georg.brandl | 2008-03-19 08:57:57 +0100 (Mi, 19 Mär 2008) | 2 lines
Another one.
........
r61618 | trent.nelson | 2008-03-19 09:06:03 +0100 (Mi, 19 Mär 2008) | 1 line
Fix the tcl-8.4.18.1 path and make sure we cd into the right directory when building tcl/tk.
........
r61621 | trent.nelson | 2008-03-19 10:23:08 +0100 (Mi, 19 Mär 2008) | 1 line
Lets have another try at getting the Windows buildbots in a consistent state before rebuilding using the new process.
........
r61622 | eric.smith | 2008-03-19 13:09:55 +0100 (Mi, 19 Mär 2008) | 2 lines
Use test.test_support.captured_stdout instead of a custom contextmanager.
Thanks Nick Coghlan.
........
r61623 | eric.smith | 2008-03-19 13:15:10 +0100 (Mi, 19 Mär 2008) | 1 line
Trivial typo.
........
r61625 | thomas.heller | 2008-03-19 17:10:57 +0100 (Mi, 19 Mär 2008) | 2 lines
Checkout sqlite-source when it is not there.
........
r61627 | brett.cannon | 2008-03-19 17:50:13 +0100 (Mi, 19 Mär 2008) | 5 lines
test_nis would fail if test.test_support.verbose was true but NIS was not set
up on the machine.
Closes issue2411. Thanks Michael Bishop.
........
r61631 | brett.cannon | 2008-03-19 18:37:43 +0100 (Mi, 19 Mär 2008) | 2 lines
Use sys.py3kwarning instead of trying to trigger a Py3k-related warning.
........
r61632 | raymond.hettinger | 2008-03-19 18:45:19 +0100 (Mi, 19 Mär 2008) | 1 line
Issue 2354: Fix-up compare warning. Patch contributed by Jeff Balogh.
........
r61633 | raymond.hettinger | 2008-03-19 18:58:59 +0100 (Mi, 19 Mär 2008) | 1 line
The filter() function does support a None argument in Py3.0.
........
r61634 | raymond.hettinger | 2008-03-19 19:01:58 +0100 (Mi, 19 Mär 2008) | 1 line
Remove itertools warnings I had added before the 2-to-3 handled the migration.
........
2008-03-19 18:50:51 -03:00
|
|
|
def test_same_as_binascii_crc32(self):
|
2008-12-02 02:00:15 -04:00
|
|
|
foo = b'abcdefghijklmnop'
|
2008-03-20 03:20:09 -03:00
|
|
|
crc = 2486878355
|
Merged revisions 61538-61540,61556,61559-61560,61563,61565,61571,61575-61576,61580-61582,61586,61591,61593,61595,61605-61606,61613-61616,61618,61621-61623,61625,61627,61631-61634 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r61538 | steven.bethard | 2008-03-18 20:03:50 +0100 (Di, 18 Mär 2008) | 1 line
cell_compare needs to return -2 instead of NULL.
........
r61539 | steven.bethard | 2008-03-18 20:04:32 +0100 (Di, 18 Mär 2008) | 1 line
_have_soundcard() is a bad check for winsound.Beep, since you can have a soundcard but have the beep driver disabled. This revision basically disables the beep tests by wrapping them in a try/except. The Right Way To Do It is to come up with a _have_enabled_beep_driver() and use that.
........
r61540 | gregory.p.smith | 2008-03-18 20:05:32 +0100 (Di, 18 Mär 2008) | 8 lines
Fix chown on 64-bit linux. It needed to take a long (64-bit on 64bit linux) as
uid and gid input to accept values >=2**31 as valid while still accepting
negative numbers to pass -1 to chown for "no change".
Fixes issue1747858.
This should be backported to release25-maint.
........
r61556 | steven.bethard | 2008-03-18 20:59:14 +0100 (Di, 18 Mär 2008) | 1 line
Fix test_atexit so that it still passes when -3 is supplied. (It was catching the warning messages on stdio from using the reload() function.)
........
r61559 | neal.norwitz | 2008-03-18 21:30:38 +0100 (Di, 18 Mär 2008) | 1 line
Import the test properly. This is especially important for py3k.
........
r61560 | gregory.p.smith | 2008-03-18 21:40:01 +0100 (Di, 18 Mär 2008) | 2 lines
news entry for the chown fix
........
r61563 | brett.cannon | 2008-03-18 22:12:42 +0100 (Di, 18 Mär 2008) | 2 lines
Ignore BIG5HKSCS-2004.TXT which is downloaded as part of a test.
........
r61565 | steven.bethard | 2008-03-18 22:30:13 +0100 (Di, 18 Mär 2008) | 1 line
Have regrtest skip test_py3kwarn when the -3 flag is missing.
........
r61571 | gregory.p.smith | 2008-03-18 23:27:41 +0100 (Di, 18 Mär 2008) | 4 lines
Add a test to make sure zlib.crc32 and binascii.crc32 return the same thing.
Fix a buglet in binascii.crc32, the second optional argument could previously
have a signedness mismatch with the C variable its going into.
........
r61575 | raymond.hettinger | 2008-03-19 00:22:29 +0100 (Mi, 19 Mär 2008) | 1 line
Speed-up isinstance() for one easy case.
........
r61576 | raymond.hettinger | 2008-03-19 00:33:08 +0100 (Mi, 19 Mär 2008) | 1 line
Issue: 2354: Add 3K warning for the cmp argument to list.sort() and sorted().
........
r61580 | andrew.kuchling | 2008-03-19 02:05:35 +0100 (Mi, 19 Mär 2008) | 1 line
Add Jeff Rush
........
r61581 | gregory.p.smith | 2008-03-19 02:38:35 +0100 (Mi, 19 Mär 2008) | 3 lines
Mention that crc32 and adler32 are available in a different module (zlib).
Some people look for them in hashlib.
........
r61582 | gregory.p.smith | 2008-03-19 02:46:10 +0100 (Mi, 19 Mär 2008) | 3 lines
Use zlib's crc32 routine instead of binascii when available. zlib's is faster
when compiled properly optimized and about the same speed otherwise.
........
r61586 | david.wolever | 2008-03-19 03:26:57 +0100 (Mi, 19 Mär 2008) | 1 line
Added my name to ACKS
........
r61591 | gregory.p.smith | 2008-03-19 04:14:41 +0100 (Mi, 19 Mär 2008) | 5 lines
Fix the struct module DeprecationWarnings that zipfile was triggering by
removing all use of signed struct values.
test_zipfile and test_zipfile64 pass. no more warnings.
........
r61593 | raymond.hettinger | 2008-03-19 04:56:59 +0100 (Mi, 19 Mär 2008) | 1 line
Fix compiler warning.
........
r61595 | martin.v.loewis | 2008-03-19 05:39:13 +0100 (Mi, 19 Mär 2008) | 2 lines
Issue #2400: Allow relative imports to "import *".
........
r61605 | martin.v.loewis | 2008-03-19 07:00:28 +0100 (Mi, 19 Mär 2008) | 2 lines
Import relimport using a relative import.
........
r61606 | trent.nelson | 2008-03-19 07:28:24 +0100 (Mi, 19 Mär 2008) | 1 line
Issue2290: Support x64 Windows builds that live in pcbuild/amd64. Without it, sysutils._python_build() returns the wrong directory, which causes the test_get_config_h_filename method in Lib/distutils/tests/test_sysconfig.py to fail.
........
r61613 | trent.nelson | 2008-03-19 08:45:19 +0100 (Mi, 19 Mär 2008) | 3 lines
Refine the Visual Studio 2008 build solution in order to improve how we deal with external components, as well as fixing outstanding issues with Windows x64 build support. Introduce two new .vcproj files, _bsddb44.vcproj and sqlite3.vcproj, which replace the previous pre-link event scripts for _bsddb and _sqlite3 respectively. The new project files inherit from our property files as if they were any other Python module. This has numerous benefits. First, the components get built with exactly the same compiler flags and settings as the rest of Python. Second, it makes it much easier to debug problems in the external components when they're part of the build system. Third, they'll benefit from profile guided optimisation in the release builds, just like the rest of Python core.
I've also introduced a slightly new pattern for managing externals in subversion. New components get checked in as <name>-<version>.x, where <version> matches the exact vendor version string. After the initial import of the external component, the .x is tagged as .0 (i.e. tcl-8.4.18.x -> tcl-8.4.18.0). Some components may not need any tweaking, whereas there are others that might (tcl/tk fall into this bucket). In that case, the relevant modifications are made to the .x branch, which will be subsequently tagged as .1 (and then n+1 going forward) when they build successfully and all tests pass. Buildbots will be converted to rely on these explicit tags only, which makes it easy for us to switch them over to a new version as and when required. (Simple change to external(-amd64).bat: if we've bumped tcl to 8.4.18.1, change the .bat to rmdir 8.4.18.0 if it exists and check out a new .1 copy.)
........
r61614 | trent.nelson | 2008-03-19 08:56:39 +0100 (Mi, 19 Mär 2008) | 1 line
Remove extraneous apostrophe and semi-colon from AdditionalIncludeDirectories.
........
r61615 | georg.brandl | 2008-03-19 08:56:40 +0100 (Mi, 19 Mär 2008) | 2 lines
Remove footnote from versionchanged as it upsets LaTeX.
........
r61616 | georg.brandl | 2008-03-19 08:57:57 +0100 (Mi, 19 Mär 2008) | 2 lines
Another one.
........
r61618 | trent.nelson | 2008-03-19 09:06:03 +0100 (Mi, 19 Mär 2008) | 1 line
Fix the tcl-8.4.18.1 path and make sure we cd into the right directory when building tcl/tk.
........
r61621 | trent.nelson | 2008-03-19 10:23:08 +0100 (Mi, 19 Mär 2008) | 1 line
Lets have another try at getting the Windows buildbots in a consistent state before rebuilding using the new process.
........
r61622 | eric.smith | 2008-03-19 13:09:55 +0100 (Mi, 19 Mär 2008) | 2 lines
Use test.test_support.captured_stdout instead of a custom contextmanager.
Thanks Nick Coghlan.
........
r61623 | eric.smith | 2008-03-19 13:15:10 +0100 (Mi, 19 Mär 2008) | 1 line
Trivial typo.
........
r61625 | thomas.heller | 2008-03-19 17:10:57 +0100 (Mi, 19 Mär 2008) | 2 lines
Checkout sqlite-source when it is not there.
........
r61627 | brett.cannon | 2008-03-19 17:50:13 +0100 (Mi, 19 Mär 2008) | 5 lines
test_nis would fail if test.test_support.verbose was true but NIS was not set
up on the machine.
Closes issue2411. Thanks Michael Bishop.
........
r61631 | brett.cannon | 2008-03-19 18:37:43 +0100 (Mi, 19 Mär 2008) | 2 lines
Use sys.py3kwarning instead of trying to trigger a Py3k-related warning.
........
r61632 | raymond.hettinger | 2008-03-19 18:45:19 +0100 (Mi, 19 Mär 2008) | 1 line
Issue 2354: Fix-up compare warning. Patch contributed by Jeff Balogh.
........
r61633 | raymond.hettinger | 2008-03-19 18:58:59 +0100 (Mi, 19 Mär 2008) | 1 line
The filter() function does support a None argument in Py3.0.
........
r61634 | raymond.hettinger | 2008-03-19 19:01:58 +0100 (Mi, 19 Mär 2008) | 1 line
Remove itertools warnings I had added before the 2-to-3 handled the migration.
........
2008-03-19 18:50:51 -03:00
|
|
|
self.assertEqual(binascii.crc32(foo), crc)
|
|
|
|
self.assertEqual(zlib.crc32(foo), crc)
|
2008-12-02 02:00:15 -04:00
|
|
|
self.assertEqual(binascii.crc32(b'spam'), zlib.crc32(b'spam'))
|
2003-02-03 16:45:52 -04:00
|
|
|
|
|
|
|
|
2017-11-08 18:44:44 -04:00
|
|
|
# Issue #10276 - check that inputs >=4 GiB are handled correctly.
|
2011-02-21 14:09:00 -04:00
|
|
|
class ChecksumBigBufferTestCase(unittest.TestCase):
|
|
|
|
|
2012-02-23 08:16:15 -04:00
|
|
|
@bigmemtest(size=_4G + 4, memuse=1, dry_run=False)
|
|
|
|
def test_big_buffer(self, size):
|
2012-02-23 07:36:25 -04:00
|
|
|
data = b"nyan" * (_1G + 1)
|
|
|
|
self.assertEqual(zlib.crc32(data), 1044521549)
|
|
|
|
self.assertEqual(zlib.adler32(data), 2256789997)
|
2011-02-21 14:09:00 -04:00
|
|
|
|
Merged revisions 61431,61433-61436,61439,61444,61449-61450,61453,61458,61465,61468,61471-61474,61480,61483-61484,61488,61495-61496,61498,61503-61504,61507,61509-61510,61515-61518 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r61431 | vinay.sajip | 2008-03-16 22:35:58 +0100 (So, 16 Mär 2008) | 1 line
Clarified documentation on use of shutdown().
........
r61433 | mark.summerfield | 2008-03-17 09:28:15 +0100 (Mo, 17 Mär 2008) | 5 lines
Added a footnote to each pointing out that for XML output if an encoding
string is given it should conform to the appropriate XML standards---for
example, "UTF-8" is okay, but "UTF8" is not.
........
r61434 | eric.smith | 2008-03-17 12:01:01 +0100 (Mo, 17 Mär 2008) | 7 lines
Issue 2264: empty float presentation type needs to have at least one digit past the decimal point.
Added "Z" format_char to PyOS_ascii_formatd to support empty float presentation type.
Renamed buf_size in PyOS_ascii_formatd to more accurately reflect it's meaning.
Modified format.__float__ to use the new "Z" format as the default.
Added test cases.
........
r61435 | eric.smith | 2008-03-17 13:14:29 +0100 (Mo, 17 Mär 2008) | 2 lines
Reformated lines > 79 chars.
Deleted unused macro ISXDIGIT.
........
r61436 | jeffrey.yasskin | 2008-03-17 15:40:53 +0100 (Mo, 17 Mär 2008) | 13 lines
Allow Gnu gcc's to build python on OSX by removing -Wno-long-double,
-no-cpp-precomp, and -mno-fused-madd from configure.
* r22183 added -no-cpp-precomp, which
http://gcc.gnu.org/ml/gcc/2005-12/msg00368.html claims hasn't been
needed since gcc-3.1.
* r25607 added -Wno-long-double to avoid a warning in
Include/objimpl.h (issue 525481). The long double is still there,
but OSX 10.4's gcc no longer warns about it.
* r33666 fixed issue 775892 on OSX 10.3 by adding -mno-fused-madd,
which changed the sign of some float 0s. Tim Peters said it wasn't
a real issue anyway, and it no longer causes test failures.
Fixes issue #1779871.
........
r61439 | martin.v.loewis | 2008-03-17 17:31:57 +0100 (Mo, 17 Mär 2008) | 2 lines
Add Trent Nelson.
........
r61444 | travis.oliphant | 2008-03-17 18:36:12 +0100 (Mo, 17 Mär 2008) | 1 line
Add necessary headers to back-port new buffer protocol to Python 2.6
........
r61449 | gregory.p.smith | 2008-03-17 19:48:05 +0100 (Mo, 17 Mär 2008) | 8 lines
Force zlib.crc32 and zlib.adler32 to return a signed integer on all platforms
regardless of the native sizeof(long) used in the integer object.
This somewhat odd behavior of returning a signed is maintained in 2.x for
compatibility reasons of always returning an integer rather than a long object.
Fixes Issue1202 for Python 2.6
........
r61450 | neal.norwitz | 2008-03-17 20:02:45 +0100 (Mo, 17 Mär 2008) | 3 lines
Use a buffer large enough to ensure we don't overrun, even if the value
is outside the range we expect.
........
r61453 | steven.bethard | 2008-03-17 20:33:11 +0100 (Mo, 17 Mär 2008) | 1 line
Document unicode.isnumeric() and unicode.isdecimal() (issue2326)
........
r61458 | neal.norwitz | 2008-03-17 21:22:43 +0100 (Mo, 17 Mär 2008) | 5 lines
Issue 2321: reduce memory usage (increase the memory that is returned
to the system) by using pymalloc for the data of unicode objects.
Will backport.
........
r61465 | martin.v.loewis | 2008-03-17 22:55:30 +0100 (Mo, 17 Mär 2008) | 2 lines
Add David Wolever.
........
r61468 | gregory.p.smith | 2008-03-18 01:20:01 +0100 (Di, 18 Mär 2008) | 3 lines
Fix the IOError message text when opening a file with an invalid filename.
Error reported by Ilan Schnell.
........
r61471 | brett.cannon | 2008-03-18 02:00:07 +0100 (Di, 18 Mär 2008) | 2 lines
Convert test_strftime, test_getargs, and test_pep247 to use unittest.
........
r61472 | jeffrey.yasskin | 2008-03-18 02:09:59 +0100 (Di, 18 Mär 2008) | 2 lines
Fix build on platforms that don't have intptr_t. Patch by Joseph Armbruster.
........
r61473 | brett.cannon | 2008-03-18 02:50:25 +0100 (Di, 18 Mär 2008) | 2 lines
Convert test_dummy_threading and test_dbm to unittest.
........
r61474 | brett.cannon | 2008-03-18 02:58:56 +0100 (Di, 18 Mär 2008) | 2 lines
Move test_extcall to doctest.
........
r61480 | brett.cannon | 2008-03-18 04:46:22 +0100 (Di, 18 Mär 2008) | 2 lines
test_errno was a no-op test; now it actually tests things and uses unittest.
........
r61483 | brett.cannon | 2008-03-18 05:09:00 +0100 (Di, 18 Mär 2008) | 3 lines
Remove our implementation of memmove() and strerror(); both are in the C89
standard library.
........
r61484 | brett.cannon | 2008-03-18 05:16:06 +0100 (Di, 18 Mär 2008) | 2 lines
The output directory for tests that compare against stdout is now gone!
........
r61488 | jeffrey.yasskin | 2008-03-18 05:29:35 +0100 (Di, 18 Mär 2008) | 2 lines
Block the "socket.ssl() is deprecated" warning from test_socket_ssl.
........
r61495 | jeffrey.yasskin | 2008-03-18 05:56:06 +0100 (Di, 18 Mär 2008) | 4 lines
Speed test_thread up from 51.328s to 0.081s by reducing its sleep times. We
still sleep at all to make it likely that all threads are active at the same
time.
........
r61496 | jeffrey.yasskin | 2008-03-18 06:12:41 +0100 (Di, 18 Mär 2008) | 4 lines
Speed up test_dict by about 10x by only checking selected dict literal sizes,
instead of every integer from 0 to 400. Exhaustive testing wastes time without
providing enough more assurance that the code is correct.
........
r61498 | neal.norwitz | 2008-03-18 06:20:29 +0100 (Di, 18 Mär 2008) | 1 line
Try increasing the timeout to reduce the flakiness of this test.
........
r61503 | brett.cannon | 2008-03-18 06:43:04 +0100 (Di, 18 Mär 2008) | 2 lines
Improve the error message for a test that failed on the S-390 Debian buildbot.
........
r61504 | jeffrey.yasskin | 2008-03-18 06:45:40 +0100 (Di, 18 Mär 2008) | 3 lines
Add a -S/--slow flag to regrtest to have it print the 10 slowest tests with
their times.
........
r61507 | neal.norwitz | 2008-03-18 07:03:46 +0100 (Di, 18 Mär 2008) | 1 line
Add some info to the failure messages
........
r61509 | trent.nelson | 2008-03-18 08:02:12 +0100 (Di, 18 Mär 2008) | 1 line
Issue 2286: bump up the stack size of the 64-bit debug python_d.exe to 2100000. The default value of 200000 causes a stack overflow at 1965 iterations of r_object() in marshal.c, 35 iterations before the 2000 limit enforced by MAX_MARSHAL_STACK_DEPTH.
........
r61510 | trent.nelson | 2008-03-18 08:32:47 +0100 (Di, 18 Mär 2008) | 5 lines
The behaviour of winsound.Beep() seems to differ between different versions of Windows when there's either:
a) no sound card entirely
b) legacy beep driver has been disabled
c) the legacy beep driver has been uninstalled
Sometimes RuntimeErrors are raised, sometimes they're not. If _have_soundcard() returns False, don't expect winsound.Beep() to raise a RuntimeError, as this clearly isn't the case, as demonstrated by the various Win32 XP buildbots.
........
r61515 | martin.v.loewis | 2008-03-18 13:20:15 +0100 (Di, 18 Mär 2008) | 2 lines
norwitz-amd64 (gentoo) has EREMOTEIO.
........
r61516 | martin.v.loewis | 2008-03-18 13:45:37 +0100 (Di, 18 Mär 2008) | 2 lines
Add more Linux error codes.
........
r61517 | martin.v.loewis | 2008-03-18 14:05:03 +0100 (Di, 18 Mär 2008) | 2 lines
Add WSA errors.
........
r61518 | martin.v.loewis | 2008-03-18 14:16:05 +0100 (Di, 18 Mär 2008) | 2 lines
Note that the stderr output of the test is intentional.
........
2008-03-18 12:15:01 -03:00
|
|
|
|
2003-02-03 16:45:52 -04:00
|
|
|
class ExceptionTestCase(unittest.TestCase):
|
|
|
|
# make sure we generate some expected errors
|
Merged revisions 58221-58741 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r58221 | georg.brandl | 2007-09-20 10:57:59 -0700 (Thu, 20 Sep 2007) | 2 lines
Patch #1181: add os.environ.clear() method.
........
r58225 | sean.reifschneider | 2007-09-20 23:33:28 -0700 (Thu, 20 Sep 2007) | 3 lines
Issue1704287: "make install" fails unless you do "make" first. Make
oldsharedmods and sharedmods in "libinstall".
........
r58232 | guido.van.rossum | 2007-09-22 13:18:03 -0700 (Sat, 22 Sep 2007) | 4 lines
Patch # 188 by Philip Jenvey.
Make tell() mark CRLF as a newline.
With unit test.
........
r58242 | georg.brandl | 2007-09-24 10:55:47 -0700 (Mon, 24 Sep 2007) | 2 lines
Fix typo and double word.
........
r58245 | georg.brandl | 2007-09-24 10:59:28 -0700 (Mon, 24 Sep 2007) | 2 lines
#1196: document default radix for int().
........
r58247 | georg.brandl | 2007-09-24 11:08:24 -0700 (Mon, 24 Sep 2007) | 2 lines
#1177: accept 2xx responses for https too, not only http.
........
r58249 | andrew.kuchling | 2007-09-24 16:45:51 -0700 (Mon, 24 Sep 2007) | 1 line
Remove stray odd character; grammar fix
........
r58250 | andrew.kuchling | 2007-09-24 16:46:28 -0700 (Mon, 24 Sep 2007) | 1 line
Typo fix
........
r58251 | andrew.kuchling | 2007-09-24 17:09:42 -0700 (Mon, 24 Sep 2007) | 1 line
Add various items
........
r58268 | vinay.sajip | 2007-09-26 22:34:45 -0700 (Wed, 26 Sep 2007) | 1 line
Change to flush and close logic to fix #1760556.
........
r58269 | vinay.sajip | 2007-09-26 22:38:51 -0700 (Wed, 26 Sep 2007) | 1 line
Change to basicConfig() to fix #1021.
........
r58270 | georg.brandl | 2007-09-26 23:26:58 -0700 (Wed, 26 Sep 2007) | 2 lines
#1208: document match object's boolean value.
........
r58271 | vinay.sajip | 2007-09-26 23:56:13 -0700 (Wed, 26 Sep 2007) | 1 line
Minor date change.
........
r58272 | vinay.sajip | 2007-09-27 00:35:10 -0700 (Thu, 27 Sep 2007) | 1 line
Change to LogRecord.__init__() to fix #1206. Note that archaic use of type(x) == types.DictType is because of keeping 1.5.2 compatibility. While this is much less relevant these days, there probably needs to be a separate commit for removing all archaic constructs at the same time.
........
r58288 | brett.cannon | 2007-09-30 12:45:10 -0700 (Sun, 30 Sep 2007) | 9 lines
tuple.__repr__ did not consider a reference loop as it is not possible from
Python code; but it is possible from C. object.__str__ had the issue of not
expecting a type to doing something within it's tp_str implementation that
could trigger an infinite recursion, but it could in C code.. Both found
thanks to BaseException and how it handles its repr.
Closes issue #1686386. Thanks to Thomas Herve for taking an initial stab at
coming up with a solution.
........
r58289 | brett.cannon | 2007-09-30 13:37:19 -0700 (Sun, 30 Sep 2007) | 3 lines
Fix error introduced by r58288; if a tuple is length 0 return its repr and
don't worry about any self-referring tuples.
........
r58294 | facundo.batista | 2007-10-02 10:01:24 -0700 (Tue, 02 Oct 2007) | 11 lines
Made the various is_* operations return booleans. This was discussed
with Cawlishaw by mail, and he basically confirmed that to these is_*
operations, there's no need to return Decimal(0) and Decimal(1) if
the language supports the False and True booleans.
Also added a few tests for the these functions in extra.decTest, since
they are mostly untested (apart from the doctests).
Thanks Mark Dickinson
........
r58295 | facundo.batista | 2007-10-02 11:21:18 -0700 (Tue, 02 Oct 2007) | 4 lines
Added a class to store the digits of log(10), so that they can be made
available when necessary without recomputing. Thanks Mark Dickinson
........
r58299 | mark.summerfield | 2007-10-03 01:53:21 -0700 (Wed, 03 Oct 2007) | 4 lines
Added note in footnote about string comparisons about
unicodedata.normalize().
........
r58304 | raymond.hettinger | 2007-10-03 14:18:11 -0700 (Wed, 03 Oct 2007) | 1 line
enumerate() is no longer bounded to using sequences shorter than LONG_MAX. The possibility of overflow was sending some newsgroup posters into a tizzy.
........
r58305 | raymond.hettinger | 2007-10-03 17:20:27 -0700 (Wed, 03 Oct 2007) | 1 line
itertools.count() no longer limited to sys.maxint.
........
r58306 | kurt.kaiser | 2007-10-03 18:49:54 -0700 (Wed, 03 Oct 2007) | 3 lines
Assume that the user knows when he wants to end the line; don't insert
something he didn't select or complete.
........
r58307 | kurt.kaiser | 2007-10-03 19:07:50 -0700 (Wed, 03 Oct 2007) | 2 lines
Remove unused theme that was causing a fault in p3k.
........
r58308 | kurt.kaiser | 2007-10-03 19:09:17 -0700 (Wed, 03 Oct 2007) | 2 lines
Clean up EditorWindow close.
........
r58309 | kurt.kaiser | 2007-10-03 19:53:07 -0700 (Wed, 03 Oct 2007) | 7 lines
textView cleanup. Patch 1718043 Tal Einat.
M idlelib/EditorWindow.py
M idlelib/aboutDialog.py
M idlelib/textView.py
M idlelib/NEWS.txt
........
r58310 | kurt.kaiser | 2007-10-03 20:11:12 -0700 (Wed, 03 Oct 2007) | 3 lines
configDialog cleanup. Patch 1730217 Tal Einat.
........
r58311 | neal.norwitz | 2007-10-03 23:00:48 -0700 (Wed, 03 Oct 2007) | 4 lines
Coverity #151: Remove deadcode.
All this code already exists above starting at line 653.
........
r58325 | fred.drake | 2007-10-04 19:46:12 -0700 (Thu, 04 Oct 2007) | 1 line
wrap lines to <80 characters before fixing errors
........
r58326 | raymond.hettinger | 2007-10-04 19:47:07 -0700 (Thu, 04 Oct 2007) | 6 lines
Add __asdict__() to NamedTuple and refine the docs.
Add maxlen support to deque() and fixup docs.
Partially fix __reduce__(). The None as a third arg was no longer supported.
Still needs work on __reduce__() to handle recursive inputs.
........
r58327 | fred.drake | 2007-10-04 19:48:32 -0700 (Thu, 04 Oct 2007) | 3 lines
move descriptions of ac_(in|out)_buffer_size to the right place
http://bugs.python.org/issue1053
........
r58329 | neal.norwitz | 2007-10-04 20:39:17 -0700 (Thu, 04 Oct 2007) | 3 lines
dict could be NULL, so we need to XDECREF.
Fix a compiler warning about passing a PyTypeObject* instead of PyObject*.
........
r58330 | neal.norwitz | 2007-10-04 20:41:19 -0700 (Thu, 04 Oct 2007) | 2 lines
Fix Coverity #158: Check the correct variable.
........
r58332 | neal.norwitz | 2007-10-04 22:01:38 -0700 (Thu, 04 Oct 2007) | 7 lines
Fix Coverity #159.
This code was broken if save() returned a negative number since i contained
a boolean value and then we compared i < 0 which should never be true.
Will backport (assuming it's necessary)
........
r58334 | neal.norwitz | 2007-10-04 22:29:17 -0700 (Thu, 04 Oct 2007) | 1 line
Add a note about fixing some more warnings found by Coverity.
........
r58338 | raymond.hettinger | 2007-10-05 12:07:31 -0700 (Fri, 05 Oct 2007) | 1 line
Restore BEGIN/END THREADS macros which were squashed in the previous checkin
........
r58343 | gregory.p.smith | 2007-10-06 00:48:10 -0700 (Sat, 06 Oct 2007) | 3 lines
Stab in the dark attempt to fix the test_bsddb3 failure on sparc and S-390
ubuntu buildbots.
........
r58344 | gregory.p.smith | 2007-10-06 00:51:59 -0700 (Sat, 06 Oct 2007) | 2 lines
Allows BerkeleyDB 4.6.x >= 4.6.21 for the bsddb module.
........
r58348 | gregory.p.smith | 2007-10-06 08:47:37 -0700 (Sat, 06 Oct 2007) | 3 lines
Use the host the author likely meant in the first place. pop.gmail.com is
reliable. gmail.org is someones personal domain.
........
r58351 | neal.norwitz | 2007-10-06 12:16:28 -0700 (Sat, 06 Oct 2007) | 3 lines
Ensure that this test will pass even if another test left an unwritable TESTFN.
Also use the safe unlink in test_support instead of rolling our own here.
........
r58368 | georg.brandl | 2007-10-08 00:50:24 -0700 (Mon, 08 Oct 2007) | 3 lines
#1123: fix the docs for the str.split(None, sep) case.
Also expand a few other methods' docs, which had more info in the deprecated string module docs.
........
r58369 | georg.brandl | 2007-10-08 01:06:05 -0700 (Mon, 08 Oct 2007) | 2 lines
Update docstring of sched, also remove an unused assignment.
........
r58370 | raymond.hettinger | 2007-10-08 02:14:28 -0700 (Mon, 08 Oct 2007) | 5 lines
Add comments to NamedTuple code.
Let the field spec be either a string or a non-string sequence (suggested by Martin Blais with use cases).
Improve the error message in the case of a SyntaxError (caused by a duplicate field name).
........
r58371 | raymond.hettinger | 2007-10-08 02:56:29 -0700 (Mon, 08 Oct 2007) | 1 line
Missed a line in the docs
........
r58372 | raymond.hettinger | 2007-10-08 03:11:51 -0700 (Mon, 08 Oct 2007) | 1 line
Better variable names
........
r58376 | georg.brandl | 2007-10-08 07:12:47 -0700 (Mon, 08 Oct 2007) | 3 lines
#1199: docs for tp_as_{number,sequence,mapping}, by Amaury Forgeot d'Arc.
No need to merge this to py3k!
........
r58380 | raymond.hettinger | 2007-10-08 14:26:58 -0700 (Mon, 08 Oct 2007) | 1 line
Eliminate camelcase function name
........
r58381 | andrew.kuchling | 2007-10-08 16:23:03 -0700 (Mon, 08 Oct 2007) | 1 line
Eliminate camelcase function name
........
r58382 | raymond.hettinger | 2007-10-08 18:36:23 -0700 (Mon, 08 Oct 2007) | 1 line
Make the error messages more specific
........
r58384 | gregory.p.smith | 2007-10-08 23:02:21 -0700 (Mon, 08 Oct 2007) | 10 lines
Splits Modules/_bsddb.c up into bsddb.h and _bsddb.c and adds a C API
object available as bsddb.db.api. This is based on the patch submitted
by Duncan Grisby here:
http://sourceforge.net/tracker/index.php?func=detail&aid=1551895&group_id=13900&atid=313900
See this thread for additional info:
http://sourceforge.net/mailarchive/forum.php?thread_name=E1GAVDK-0002rk-Iw%40apasphere.com&forum_name=pybsddb-users
It also cleans up the code a little by removing some ifdef/endifs for
python prior to 2.1 and for unsupported Berkeley DB <= 3.2.
........
r58385 | gregory.p.smith | 2007-10-08 23:50:43 -0700 (Mon, 08 Oct 2007) | 5 lines
Fix a double free when positioning a database cursor to a non-existant
string key (and probably a few other situations with string keys).
This was reported with a patch as pybsddb sourceforge bug 1708868 by
jjjhhhlll at gmail.
........
r58386 | gregory.p.smith | 2007-10-09 00:19:11 -0700 (Tue, 09 Oct 2007) | 3 lines
Use the highest cPickle protocol in bsddb.dbshelve. This comes from
sourceforge pybsddb patch 1551443 by w_barnes.
........
r58394 | gregory.p.smith | 2007-10-09 11:26:02 -0700 (Tue, 09 Oct 2007) | 2 lines
remove another sleepycat reference
........
r58396 | kurt.kaiser | 2007-10-09 12:31:30 -0700 (Tue, 09 Oct 2007) | 3 lines
Allow interrupt only when executing user code in subprocess
Patch 1225 Tal Einat modified from IDLE-Spoon.
........
r58399 | brett.cannon | 2007-10-09 17:07:50 -0700 (Tue, 09 Oct 2007) | 5 lines
Remove file-level typedefs that were inconsistently used throughout the file.
Just move over to the public API names.
Closes issue1238.
........
r58401 | raymond.hettinger | 2007-10-09 17:26:46 -0700 (Tue, 09 Oct 2007) | 1 line
Accept Jim Jewett's api suggestion to use None instead of -1 to indicate unbounded deques.
........
r58403 | kurt.kaiser | 2007-10-09 17:55:40 -0700 (Tue, 09 Oct 2007) | 2 lines
Allow cursor color change w/o restart. Patch 1725576 Tal Einat.
........
r58404 | kurt.kaiser | 2007-10-09 18:06:47 -0700 (Tue, 09 Oct 2007) | 2 lines
show paste if > 80 columns. Patch 1659326 Tal Einat.
........
r58415 | thomas.heller | 2007-10-11 12:51:32 -0700 (Thu, 11 Oct 2007) | 5 lines
On OS X, use os.uname() instead of gestalt.sysv(...) to get the
operating system version. This allows to use ctypes when Python
was configured with --disable-toolbox-glue.
........
r58419 | neal.norwitz | 2007-10-11 20:01:01 -0700 (Thu, 11 Oct 2007) | 1 line
Get rid of warning about not being able to create an existing directory.
........
r58420 | neal.norwitz | 2007-10-11 20:01:30 -0700 (Thu, 11 Oct 2007) | 1 line
Get rid of warnings on a bunch of platforms by using a proper prototype.
........
r58421 | neal.norwitz | 2007-10-11 20:01:54 -0700 (Thu, 11 Oct 2007) | 4 lines
Get rid of compiler warning about retval being used (returned) without
being initialized. (gcc warning and Coverity 202)
........
r58422 | neal.norwitz | 2007-10-11 20:03:23 -0700 (Thu, 11 Oct 2007) | 1 line
Fix Coverity 168: Close the file before returning (exiting).
........
r58423 | neal.norwitz | 2007-10-11 20:04:18 -0700 (Thu, 11 Oct 2007) | 4 lines
Fix Coverity 180: Don't overallocate. We don't need structs, but pointers.
Also fix a memory leak.
........
r58424 | neal.norwitz | 2007-10-11 20:05:19 -0700 (Thu, 11 Oct 2007) | 5 lines
Fix Coverity 185-186: If the passed in FILE is NULL, uninitialized memory
would be accessed.
Will backport.
........
r58425 | neal.norwitz | 2007-10-11 20:52:34 -0700 (Thu, 11 Oct 2007) | 1 line
Get this module to compile with bsddb versions prior to 4.3
........
r58430 | martin.v.loewis | 2007-10-12 01:56:52 -0700 (Fri, 12 Oct 2007) | 3 lines
Bug #1216: Restore support for Visual Studio 2002.
Will backport to 2.5.
........
r58433 | raymond.hettinger | 2007-10-12 10:53:11 -0700 (Fri, 12 Oct 2007) | 1 line
Fix test of count.__repr__() to ignore the 'L' if the count is a long
........
r58434 | gregory.p.smith | 2007-10-12 11:44:06 -0700 (Fri, 12 Oct 2007) | 4 lines
Fixes http://bugs.python.org/issue1233 - bsddb.dbshelve.DBShelf.append
was useless due to inverted logic. Also adds a test case for RECNO dbs
to test_dbshelve.
........
r58445 | georg.brandl | 2007-10-13 06:20:03 -0700 (Sat, 13 Oct 2007) | 2 lines
Fix email example.
........
r58450 | gregory.p.smith | 2007-10-13 16:02:05 -0700 (Sat, 13 Oct 2007) | 2 lines
Fix an uncollectable reference leak in bsddb.db.DBShelf.append
........
r58453 | neal.norwitz | 2007-10-13 17:18:40 -0700 (Sat, 13 Oct 2007) | 8 lines
Let the O/S supply a port if none of the default ports can be used.
This should make the tests more robust at the expense of allowing
tests to be sloppier by not requiring them to cleanup after themselves.
(It will legitamitely help when running two test suites simultaneously
or if another process is already using one of the predefined ports.)
Also simplifies (slightLy) the exception handling elsewhere.
........
r58459 | neal.norwitz | 2007-10-14 11:30:21 -0700 (Sun, 14 Oct 2007) | 2 lines
Don't raise a string exception, they don't work anymore.
........
r58460 | neal.norwitz | 2007-10-14 11:40:37 -0700 (Sun, 14 Oct 2007) | 1 line
Use unittest for assertions
........
r58468 | armin.rigo | 2007-10-15 00:48:35 -0700 (Mon, 15 Oct 2007) | 2 lines
test_bigbits was not testing what it seemed to.
........
r58471 | guido.van.rossum | 2007-10-15 08:54:11 -0700 (Mon, 15 Oct 2007) | 3 lines
Change a PyErr_Print() into a PyErr_Clear(),
per discussion in issue 1031213.
........
r58500 | raymond.hettinger | 2007-10-16 12:18:30 -0700 (Tue, 16 Oct 2007) | 1 line
Improve error messages
........
r58506 | raymond.hettinger | 2007-10-16 14:28:32 -0700 (Tue, 16 Oct 2007) | 1 line
More docs, error messages, and tests
........
r58507 | andrew.kuchling | 2007-10-16 15:58:03 -0700 (Tue, 16 Oct 2007) | 1 line
Add items
........
r58508 | brett.cannon | 2007-10-16 16:24:06 -0700 (Tue, 16 Oct 2007) | 3 lines
Remove ``:const:`` notation on None in parameter list. Since the markup is not
rendered for parameters it just showed up as ``:const:`None` `` in the output.
........
r58509 | brett.cannon | 2007-10-16 16:26:45 -0700 (Tue, 16 Oct 2007) | 3 lines
Re-order some functions whose parameters differ between PyObject and const char
* so that they are next to each other.
........
r58522 | armin.rigo | 2007-10-17 11:46:37 -0700 (Wed, 17 Oct 2007) | 5 lines
Fix the overflow checking of list_repeat.
Introduce overflow checking into list_inplace_repeat.
Backport candidate, possibly.
........
r58530 | facundo.batista | 2007-10-17 20:16:03 -0700 (Wed, 17 Oct 2007) | 7 lines
Issue #1580738. When HTTPConnection reads the whole stream with read(),
it closes itself. When the stream is read in several calls to read(n),
it should behave in the same way if HTTPConnection knows where the end
of the stream is (through self.length). Added a test case for this
behaviour.
........
r58531 | facundo.batista | 2007-10-17 20:44:48 -0700 (Wed, 17 Oct 2007) | 3 lines
Issue 1289, just a typo.
........
r58532 | gregory.p.smith | 2007-10-18 00:56:54 -0700 (Thu, 18 Oct 2007) | 4 lines
cleanup test_dbtables to use mkdtemp. cleanup dbtables to pass txn as a
keyword argument whenever possible to avoid bugs and confusion. (dbtables.py
line 447 self.db.get using txn as a non-keyword was an actual bug due to this)
........
r58533 | gregory.p.smith | 2007-10-18 01:34:20 -0700 (Thu, 18 Oct 2007) | 4 lines
Fix a weird bug in dbtables: if it chose a random rowid string that contained
NULL bytes it would cause the database all sorts of problems in the future
leading to very strange random failures and corrupt dbtables.bsdTableDb dbs.
........
r58534 | gregory.p.smith | 2007-10-18 09:32:02 -0700 (Thu, 18 Oct 2007) | 3 lines
A cleaner fix than the one committed last night. Generate random rowids that
do not contain null bytes.
........
r58537 | gregory.p.smith | 2007-10-18 10:17:57 -0700 (Thu, 18 Oct 2007) | 2 lines
mention bsddb fixes.
........
r58538 | raymond.hettinger | 2007-10-18 14:13:06 -0700 (Thu, 18 Oct 2007) | 1 line
Remove useless warning
........
r58539 | gregory.p.smith | 2007-10-19 00:31:20 -0700 (Fri, 19 Oct 2007) | 2 lines
squelch the warning that this test is supposed to trigger.
........
r58542 | georg.brandl | 2007-10-19 05:32:39 -0700 (Fri, 19 Oct 2007) | 2 lines
Clarify wording for apply().
........
r58544 | mark.summerfield | 2007-10-19 05:48:17 -0700 (Fri, 19 Oct 2007) | 3 lines
Added a cross-ref to each other.
........
r58545 | georg.brandl | 2007-10-19 10:38:49 -0700 (Fri, 19 Oct 2007) | 2 lines
#1284: "S" means "seen", not unread.
........
r58548 | thomas.heller | 2007-10-19 11:11:41 -0700 (Fri, 19 Oct 2007) | 4 lines
Fix ctypes on 32-bit systems when Python is configured --with-system-ffi.
See also https://bugs.launchpad.net/bugs/72505.
Ported from release25-maint branch.
........
r58550 | facundo.batista | 2007-10-19 12:25:57 -0700 (Fri, 19 Oct 2007) | 8 lines
The constructor from tuple was way too permissive: it allowed bad
coefficient numbers, floats in the sign, and other details that
generated directly the wrong number in the best case, or triggered
misfunctionality in the alorithms.
Test cases added for these issues. Thanks Mark Dickinson.
........
r58559 | georg.brandl | 2007-10-20 06:22:53 -0700 (Sat, 20 Oct 2007) | 2 lines
Fix code being interpreted as a target.
........
r58561 | georg.brandl | 2007-10-20 06:36:24 -0700 (Sat, 20 Oct 2007) | 2 lines
Document new "cmdoption" directive.
........
r58562 | georg.brandl | 2007-10-20 08:21:22 -0700 (Sat, 20 Oct 2007) | 2 lines
Make a path more Unix-standardy.
........
r58564 | georg.brandl | 2007-10-20 10:51:39 -0700 (Sat, 20 Oct 2007) | 2 lines
Document new directive "envvar".
........
r58567 | georg.brandl | 2007-10-20 11:08:14 -0700 (Sat, 20 Oct 2007) | 6 lines
* Add new toplevel chapter, "Using Python." (how to install,
configure and setup python on different platforms -- at least
in theory.)
* Move the Python on Mac docs in that chapter.
* Add a new chapter about the command line invocation, by stargaming.
........
r58568 | georg.brandl | 2007-10-20 11:33:20 -0700 (Sat, 20 Oct 2007) | 2 lines
Change title, for now.
........
r58569 | georg.brandl | 2007-10-20 11:39:25 -0700 (Sat, 20 Oct 2007) | 2 lines
Add entry to ACKS.
........
r58570 | georg.brandl | 2007-10-20 12:05:45 -0700 (Sat, 20 Oct 2007) | 2 lines
Clarify -E docs.
........
r58571 | georg.brandl | 2007-10-20 12:08:36 -0700 (Sat, 20 Oct 2007) | 2 lines
Even more clarification.
........
r58572 | andrew.kuchling | 2007-10-20 12:25:37 -0700 (Sat, 20 Oct 2007) | 1 line
Fix protocol name
........
r58573 | andrew.kuchling | 2007-10-20 12:35:18 -0700 (Sat, 20 Oct 2007) | 1 line
Various items
........
r58574 | andrew.kuchling | 2007-10-20 12:39:35 -0700 (Sat, 20 Oct 2007) | 1 line
Use correct header line
........
r58576 | armin.rigo | 2007-10-21 02:14:15 -0700 (Sun, 21 Oct 2007) | 3 lines
Add a crasher for the long-standing issue with closing a file
while another thread uses it.
........
r58577 | georg.brandl | 2007-10-21 03:01:56 -0700 (Sun, 21 Oct 2007) | 2 lines
Remove duplicate crasher.
........
r58578 | georg.brandl | 2007-10-21 03:24:20 -0700 (Sun, 21 Oct 2007) | 2 lines
Unify "byte code" to "bytecode". Also sprinkle :term: markup for it.
........
r58579 | georg.brandl | 2007-10-21 03:32:54 -0700 (Sun, 21 Oct 2007) | 2 lines
Add markup to new function descriptions.
........
r58580 | georg.brandl | 2007-10-21 03:45:46 -0700 (Sun, 21 Oct 2007) | 2 lines
Add :term:s for descriptors.
........
r58581 | georg.brandl | 2007-10-21 03:46:24 -0700 (Sun, 21 Oct 2007) | 2 lines
Unify "file-descriptor" to "file descriptor".
........
r58582 | georg.brandl | 2007-10-21 03:52:38 -0700 (Sun, 21 Oct 2007) | 2 lines
Add :term: for generators.
........
r58583 | georg.brandl | 2007-10-21 05:10:28 -0700 (Sun, 21 Oct 2007) | 2 lines
Add :term:s for iterator.
........
r58584 | georg.brandl | 2007-10-21 05:15:05 -0700 (Sun, 21 Oct 2007) | 2 lines
Add :term:s for "new-style class".
........
r58588 | neal.norwitz | 2007-10-21 21:47:54 -0700 (Sun, 21 Oct 2007) | 1 line
Add Chris Monson so he can edit PEPs.
........
r58594 | guido.van.rossum | 2007-10-22 09:27:19 -0700 (Mon, 22 Oct 2007) | 4 lines
Issue #1307, patch by Derek Shockey.
When "MAIL" is received without args, an exception happens instead of
sending a 501 syntax error response.
........
r58598 | travis.oliphant | 2007-10-22 19:40:56 -0700 (Mon, 22 Oct 2007) | 1 line
Add phuang patch from Issue 708374 which adds offset parameter to mmap module.
........
r58601 | neal.norwitz | 2007-10-22 22:44:27 -0700 (Mon, 22 Oct 2007) | 2 lines
Bug #1313, fix typo (wrong variable name) in example.
........
r58609 | georg.brandl | 2007-10-23 11:21:35 -0700 (Tue, 23 Oct 2007) | 2 lines
Update Pygments version from externals.
........
r58618 | guido.van.rossum | 2007-10-23 12:25:41 -0700 (Tue, 23 Oct 2007) | 3 lines
Issue 1307 by Derek Shockey, fox the same bug for RCPT.
Neal: please backport!
........
r58620 | raymond.hettinger | 2007-10-23 13:37:41 -0700 (Tue, 23 Oct 2007) | 1 line
Shorter name for namedtuple()
........
r58621 | andrew.kuchling | 2007-10-23 13:55:47 -0700 (Tue, 23 Oct 2007) | 1 line
Update name
........
r58622 | raymond.hettinger | 2007-10-23 14:23:07 -0700 (Tue, 23 Oct 2007) | 1 line
Fixup news entry
........
r58623 | raymond.hettinger | 2007-10-23 18:28:33 -0700 (Tue, 23 Oct 2007) | 1 line
Optimize sum() for integer and float inputs.
........
r58624 | raymond.hettinger | 2007-10-23 19:05:51 -0700 (Tue, 23 Oct 2007) | 1 line
Fixup error return and add support for intermixed ints and floats/
........
r58628 | vinay.sajip | 2007-10-24 03:47:06 -0700 (Wed, 24 Oct 2007) | 1 line
Bug #1321: Fixed logic error in TimedRotatingFileHandler.__init__()
........
r58641 | facundo.batista | 2007-10-24 12:11:08 -0700 (Wed, 24 Oct 2007) | 4 lines
Issue 1290. CharacterData.__repr__ was constructing a string
in response that keeped having a non-ascii character.
........
r58643 | thomas.heller | 2007-10-24 12:50:45 -0700 (Wed, 24 Oct 2007) | 1 line
Added unittest for calling a function with paramflags (backport from py3k branch).
........
r58645 | matthias.klose | 2007-10-24 13:00:44 -0700 (Wed, 24 Oct 2007) | 2 lines
- Build using system ffi library on arm*-linux*.
........
r58651 | georg.brandl | 2007-10-24 14:40:38 -0700 (Wed, 24 Oct 2007) | 2 lines
Bug #1287: make os.environ.pop() work as expected.
........
r58652 | raymond.hettinger | 2007-10-24 19:26:58 -0700 (Wed, 24 Oct 2007) | 1 line
Missing DECREFs
........
r58653 | matthias.klose | 2007-10-24 23:37:24 -0700 (Wed, 24 Oct 2007) | 2 lines
- Build using system ffi library on arm*-linux*, pass --with-system-ffi to CONFIG_ARGS
........
r58655 | thomas.heller | 2007-10-25 12:47:32 -0700 (Thu, 25 Oct 2007) | 2 lines
ffi_type_longdouble may be already #defined.
See issue 1324.
........
r58656 | kurt.kaiser | 2007-10-25 15:43:45 -0700 (Thu, 25 Oct 2007) | 3 lines
Correct an ancient bug in an unused path by removing that path: register() is
now idempotent.
........
r58660 | kurt.kaiser | 2007-10-25 17:10:09 -0700 (Thu, 25 Oct 2007) | 4 lines
1. Add comments to provide top-level documentation.
2. Refactor to use more descriptive names.
3. Enhance tests in main().
........
r58675 | georg.brandl | 2007-10-26 11:30:41 -0700 (Fri, 26 Oct 2007) | 2 lines
Fix new pop() method on os.environ on ignorecase-platforms.
........
r58696 | neal.norwitz | 2007-10-27 15:32:21 -0700 (Sat, 27 Oct 2007) | 1 line
Update URL for Pygments. 0.8.1 is no longer available
........
r58697 | hyeshik.chang | 2007-10-28 04:19:02 -0700 (Sun, 28 Oct 2007) | 3 lines
- Add support for FreeBSD 8 which is recently forked from FreeBSD 7.
- Regenerate IN module for most recent maintenance tree of FreeBSD 6 and 7.
........
r58698 | hyeshik.chang | 2007-10-28 05:38:09 -0700 (Sun, 28 Oct 2007) | 2 lines
Enable platform-specific tweaks for FreeBSD 8 (exactly same to FreeBSD 7's yet)
........
r58700 | kurt.kaiser | 2007-10-28 12:03:59 -0700 (Sun, 28 Oct 2007) | 2 lines
Add confirmation dialog before printing. Patch 1717170 Tal Einat.
........
r58706 | guido.van.rossum | 2007-10-29 13:52:45 -0700 (Mon, 29 Oct 2007) | 3 lines
Patch 1353 by Jacob Winther.
Add mp4 mapping to mimetypes.py.
........
r58709 | guido.van.rossum | 2007-10-29 15:15:05 -0700 (Mon, 29 Oct 2007) | 6 lines
Backport fixes for the code that decodes octal escapes (and for PyString
also hex escapes) -- this was reaching beyond the end of the input string
buffer, even though it is not supposed to be \0-terminated.
This has no visible effect but is clearly the correct thing to do.
(In 3.0 it had a visible effect after removing ob_sstate from PyString.)
........
r58710 | kurt.kaiser | 2007-10-29 19:38:54 -0700 (Mon, 29 Oct 2007) | 7 lines
check in Tal Einat's update to tabpage.py
Patch 1612746
M configDialog.py
M NEWS.txt
AM tabbedpages.py
........
r58715 | georg.brandl | 2007-10-30 10:51:18 -0700 (Tue, 30 Oct 2007) | 2 lines
Use correct markup.
........
r58716 | georg.brandl | 2007-10-30 10:57:12 -0700 (Tue, 30 Oct 2007) | 2 lines
Make example about hiding None return values at the prompt clearer.
........
r58728 | neal.norwitz | 2007-10-30 23:33:20 -0700 (Tue, 30 Oct 2007) | 1 line
Fix some compiler warnings for signed comparisons on Unix and Windows.
........
r58731 | martin.v.loewis | 2007-10-31 10:19:33 -0700 (Wed, 31 Oct 2007) | 2 lines
Adding Christian Heimes.
........
r58737 | raymond.hettinger | 2007-10-31 14:57:58 -0700 (Wed, 31 Oct 2007) | 1 line
Clarify the reasons why pickle is almost always better than marshal
........
r58739 | raymond.hettinger | 2007-10-31 15:15:49 -0700 (Wed, 31 Oct 2007) | 1 line
Sets are marshalable.
........
2007-11-01 16:42:39 -03:00
|
|
|
def test_badlevel(self):
|
|
|
|
# specifying compression level out of range causes an error
|
|
|
|
# (but -1 is Z_DEFAULT_COMPRESSION and apparently the zlib
|
|
|
|
# accepts 0 too)
|
2009-12-14 14:00:06 -04:00
|
|
|
self.assertRaises(zlib.error, zlib.compress, b'ERROR', 10)
|
|
|
|
|
|
|
|
def test_badargs(self):
|
|
|
|
self.assertRaises(TypeError, zlib.adler32)
|
|
|
|
self.assertRaises(TypeError, zlib.crc32)
|
|
|
|
self.assertRaises(TypeError, zlib.compress)
|
|
|
|
self.assertRaises(TypeError, zlib.decompress)
|
|
|
|
for arg in (42, None, '', 'abc', (), []):
|
|
|
|
self.assertRaises(TypeError, zlib.adler32, arg)
|
|
|
|
self.assertRaises(TypeError, zlib.crc32, arg)
|
|
|
|
self.assertRaises(TypeError, zlib.compress, arg)
|
|
|
|
self.assertRaises(TypeError, zlib.decompress, arg)
|
2003-02-03 16:45:52 -04:00
|
|
|
|
|
|
|
def test_badcompressobj(self):
|
|
|
|
# verify failure on building compress object with bad params
|
2004-06-05 16:02:52 -03:00
|
|
|
self.assertRaises(ValueError, zlib.compressobj, 1, zlib.DEFLATED, 0)
|
Merged revisions 58221-58741 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r58221 | georg.brandl | 2007-09-20 10:57:59 -0700 (Thu, 20 Sep 2007) | 2 lines
Patch #1181: add os.environ.clear() method.
........
r58225 | sean.reifschneider | 2007-09-20 23:33:28 -0700 (Thu, 20 Sep 2007) | 3 lines
Issue1704287: "make install" fails unless you do "make" first. Make
oldsharedmods and sharedmods in "libinstall".
........
r58232 | guido.van.rossum | 2007-09-22 13:18:03 -0700 (Sat, 22 Sep 2007) | 4 lines
Patch # 188 by Philip Jenvey.
Make tell() mark CRLF as a newline.
With unit test.
........
r58242 | georg.brandl | 2007-09-24 10:55:47 -0700 (Mon, 24 Sep 2007) | 2 lines
Fix typo and double word.
........
r58245 | georg.brandl | 2007-09-24 10:59:28 -0700 (Mon, 24 Sep 2007) | 2 lines
#1196: document default radix for int().
........
r58247 | georg.brandl | 2007-09-24 11:08:24 -0700 (Mon, 24 Sep 2007) | 2 lines
#1177: accept 2xx responses for https too, not only http.
........
r58249 | andrew.kuchling | 2007-09-24 16:45:51 -0700 (Mon, 24 Sep 2007) | 1 line
Remove stray odd character; grammar fix
........
r58250 | andrew.kuchling | 2007-09-24 16:46:28 -0700 (Mon, 24 Sep 2007) | 1 line
Typo fix
........
r58251 | andrew.kuchling | 2007-09-24 17:09:42 -0700 (Mon, 24 Sep 2007) | 1 line
Add various items
........
r58268 | vinay.sajip | 2007-09-26 22:34:45 -0700 (Wed, 26 Sep 2007) | 1 line
Change to flush and close logic to fix #1760556.
........
r58269 | vinay.sajip | 2007-09-26 22:38:51 -0700 (Wed, 26 Sep 2007) | 1 line
Change to basicConfig() to fix #1021.
........
r58270 | georg.brandl | 2007-09-26 23:26:58 -0700 (Wed, 26 Sep 2007) | 2 lines
#1208: document match object's boolean value.
........
r58271 | vinay.sajip | 2007-09-26 23:56:13 -0700 (Wed, 26 Sep 2007) | 1 line
Minor date change.
........
r58272 | vinay.sajip | 2007-09-27 00:35:10 -0700 (Thu, 27 Sep 2007) | 1 line
Change to LogRecord.__init__() to fix #1206. Note that archaic use of type(x) == types.DictType is because of keeping 1.5.2 compatibility. While this is much less relevant these days, there probably needs to be a separate commit for removing all archaic constructs at the same time.
........
r58288 | brett.cannon | 2007-09-30 12:45:10 -0700 (Sun, 30 Sep 2007) | 9 lines
tuple.__repr__ did not consider a reference loop as it is not possible from
Python code; but it is possible from C. object.__str__ had the issue of not
expecting a type to doing something within it's tp_str implementation that
could trigger an infinite recursion, but it could in C code.. Both found
thanks to BaseException and how it handles its repr.
Closes issue #1686386. Thanks to Thomas Herve for taking an initial stab at
coming up with a solution.
........
r58289 | brett.cannon | 2007-09-30 13:37:19 -0700 (Sun, 30 Sep 2007) | 3 lines
Fix error introduced by r58288; if a tuple is length 0 return its repr and
don't worry about any self-referring tuples.
........
r58294 | facundo.batista | 2007-10-02 10:01:24 -0700 (Tue, 02 Oct 2007) | 11 lines
Made the various is_* operations return booleans. This was discussed
with Cawlishaw by mail, and he basically confirmed that to these is_*
operations, there's no need to return Decimal(0) and Decimal(1) if
the language supports the False and True booleans.
Also added a few tests for the these functions in extra.decTest, since
they are mostly untested (apart from the doctests).
Thanks Mark Dickinson
........
r58295 | facundo.batista | 2007-10-02 11:21:18 -0700 (Tue, 02 Oct 2007) | 4 lines
Added a class to store the digits of log(10), so that they can be made
available when necessary without recomputing. Thanks Mark Dickinson
........
r58299 | mark.summerfield | 2007-10-03 01:53:21 -0700 (Wed, 03 Oct 2007) | 4 lines
Added note in footnote about string comparisons about
unicodedata.normalize().
........
r58304 | raymond.hettinger | 2007-10-03 14:18:11 -0700 (Wed, 03 Oct 2007) | 1 line
enumerate() is no longer bounded to using sequences shorter than LONG_MAX. The possibility of overflow was sending some newsgroup posters into a tizzy.
........
r58305 | raymond.hettinger | 2007-10-03 17:20:27 -0700 (Wed, 03 Oct 2007) | 1 line
itertools.count() no longer limited to sys.maxint.
........
r58306 | kurt.kaiser | 2007-10-03 18:49:54 -0700 (Wed, 03 Oct 2007) | 3 lines
Assume that the user knows when he wants to end the line; don't insert
something he didn't select or complete.
........
r58307 | kurt.kaiser | 2007-10-03 19:07:50 -0700 (Wed, 03 Oct 2007) | 2 lines
Remove unused theme that was causing a fault in p3k.
........
r58308 | kurt.kaiser | 2007-10-03 19:09:17 -0700 (Wed, 03 Oct 2007) | 2 lines
Clean up EditorWindow close.
........
r58309 | kurt.kaiser | 2007-10-03 19:53:07 -0700 (Wed, 03 Oct 2007) | 7 lines
textView cleanup. Patch 1718043 Tal Einat.
M idlelib/EditorWindow.py
M idlelib/aboutDialog.py
M idlelib/textView.py
M idlelib/NEWS.txt
........
r58310 | kurt.kaiser | 2007-10-03 20:11:12 -0700 (Wed, 03 Oct 2007) | 3 lines
configDialog cleanup. Patch 1730217 Tal Einat.
........
r58311 | neal.norwitz | 2007-10-03 23:00:48 -0700 (Wed, 03 Oct 2007) | 4 lines
Coverity #151: Remove deadcode.
All this code already exists above starting at line 653.
........
r58325 | fred.drake | 2007-10-04 19:46:12 -0700 (Thu, 04 Oct 2007) | 1 line
wrap lines to <80 characters before fixing errors
........
r58326 | raymond.hettinger | 2007-10-04 19:47:07 -0700 (Thu, 04 Oct 2007) | 6 lines
Add __asdict__() to NamedTuple and refine the docs.
Add maxlen support to deque() and fixup docs.
Partially fix __reduce__(). The None as a third arg was no longer supported.
Still needs work on __reduce__() to handle recursive inputs.
........
r58327 | fred.drake | 2007-10-04 19:48:32 -0700 (Thu, 04 Oct 2007) | 3 lines
move descriptions of ac_(in|out)_buffer_size to the right place
http://bugs.python.org/issue1053
........
r58329 | neal.norwitz | 2007-10-04 20:39:17 -0700 (Thu, 04 Oct 2007) | 3 lines
dict could be NULL, so we need to XDECREF.
Fix a compiler warning about passing a PyTypeObject* instead of PyObject*.
........
r58330 | neal.norwitz | 2007-10-04 20:41:19 -0700 (Thu, 04 Oct 2007) | 2 lines
Fix Coverity #158: Check the correct variable.
........
r58332 | neal.norwitz | 2007-10-04 22:01:38 -0700 (Thu, 04 Oct 2007) | 7 lines
Fix Coverity #159.
This code was broken if save() returned a negative number since i contained
a boolean value and then we compared i < 0 which should never be true.
Will backport (assuming it's necessary)
........
r58334 | neal.norwitz | 2007-10-04 22:29:17 -0700 (Thu, 04 Oct 2007) | 1 line
Add a note about fixing some more warnings found by Coverity.
........
r58338 | raymond.hettinger | 2007-10-05 12:07:31 -0700 (Fri, 05 Oct 2007) | 1 line
Restore BEGIN/END THREADS macros which were squashed in the previous checkin
........
r58343 | gregory.p.smith | 2007-10-06 00:48:10 -0700 (Sat, 06 Oct 2007) | 3 lines
Stab in the dark attempt to fix the test_bsddb3 failure on sparc and S-390
ubuntu buildbots.
........
r58344 | gregory.p.smith | 2007-10-06 00:51:59 -0700 (Sat, 06 Oct 2007) | 2 lines
Allows BerkeleyDB 4.6.x >= 4.6.21 for the bsddb module.
........
r58348 | gregory.p.smith | 2007-10-06 08:47:37 -0700 (Sat, 06 Oct 2007) | 3 lines
Use the host the author likely meant in the first place. pop.gmail.com is
reliable. gmail.org is someones personal domain.
........
r58351 | neal.norwitz | 2007-10-06 12:16:28 -0700 (Sat, 06 Oct 2007) | 3 lines
Ensure that this test will pass even if another test left an unwritable TESTFN.
Also use the safe unlink in test_support instead of rolling our own here.
........
r58368 | georg.brandl | 2007-10-08 00:50:24 -0700 (Mon, 08 Oct 2007) | 3 lines
#1123: fix the docs for the str.split(None, sep) case.
Also expand a few other methods' docs, which had more info in the deprecated string module docs.
........
r58369 | georg.brandl | 2007-10-08 01:06:05 -0700 (Mon, 08 Oct 2007) | 2 lines
Update docstring of sched, also remove an unused assignment.
........
r58370 | raymond.hettinger | 2007-10-08 02:14:28 -0700 (Mon, 08 Oct 2007) | 5 lines
Add comments to NamedTuple code.
Let the field spec be either a string or a non-string sequence (suggested by Martin Blais with use cases).
Improve the error message in the case of a SyntaxError (caused by a duplicate field name).
........
r58371 | raymond.hettinger | 2007-10-08 02:56:29 -0700 (Mon, 08 Oct 2007) | 1 line
Missed a line in the docs
........
r58372 | raymond.hettinger | 2007-10-08 03:11:51 -0700 (Mon, 08 Oct 2007) | 1 line
Better variable names
........
r58376 | georg.brandl | 2007-10-08 07:12:47 -0700 (Mon, 08 Oct 2007) | 3 lines
#1199: docs for tp_as_{number,sequence,mapping}, by Amaury Forgeot d'Arc.
No need to merge this to py3k!
........
r58380 | raymond.hettinger | 2007-10-08 14:26:58 -0700 (Mon, 08 Oct 2007) | 1 line
Eliminate camelcase function name
........
r58381 | andrew.kuchling | 2007-10-08 16:23:03 -0700 (Mon, 08 Oct 2007) | 1 line
Eliminate camelcase function name
........
r58382 | raymond.hettinger | 2007-10-08 18:36:23 -0700 (Mon, 08 Oct 2007) | 1 line
Make the error messages more specific
........
r58384 | gregory.p.smith | 2007-10-08 23:02:21 -0700 (Mon, 08 Oct 2007) | 10 lines
Splits Modules/_bsddb.c up into bsddb.h and _bsddb.c and adds a C API
object available as bsddb.db.api. This is based on the patch submitted
by Duncan Grisby here:
http://sourceforge.net/tracker/index.php?func=detail&aid=1551895&group_id=13900&atid=313900
See this thread for additional info:
http://sourceforge.net/mailarchive/forum.php?thread_name=E1GAVDK-0002rk-Iw%40apasphere.com&forum_name=pybsddb-users
It also cleans up the code a little by removing some ifdef/endifs for
python prior to 2.1 and for unsupported Berkeley DB <= 3.2.
........
r58385 | gregory.p.smith | 2007-10-08 23:50:43 -0700 (Mon, 08 Oct 2007) | 5 lines
Fix a double free when positioning a database cursor to a non-existant
string key (and probably a few other situations with string keys).
This was reported with a patch as pybsddb sourceforge bug 1708868 by
jjjhhhlll at gmail.
........
r58386 | gregory.p.smith | 2007-10-09 00:19:11 -0700 (Tue, 09 Oct 2007) | 3 lines
Use the highest cPickle protocol in bsddb.dbshelve. This comes from
sourceforge pybsddb patch 1551443 by w_barnes.
........
r58394 | gregory.p.smith | 2007-10-09 11:26:02 -0700 (Tue, 09 Oct 2007) | 2 lines
remove another sleepycat reference
........
r58396 | kurt.kaiser | 2007-10-09 12:31:30 -0700 (Tue, 09 Oct 2007) | 3 lines
Allow interrupt only when executing user code in subprocess
Patch 1225 Tal Einat modified from IDLE-Spoon.
........
r58399 | brett.cannon | 2007-10-09 17:07:50 -0700 (Tue, 09 Oct 2007) | 5 lines
Remove file-level typedefs that were inconsistently used throughout the file.
Just move over to the public API names.
Closes issue1238.
........
r58401 | raymond.hettinger | 2007-10-09 17:26:46 -0700 (Tue, 09 Oct 2007) | 1 line
Accept Jim Jewett's api suggestion to use None instead of -1 to indicate unbounded deques.
........
r58403 | kurt.kaiser | 2007-10-09 17:55:40 -0700 (Tue, 09 Oct 2007) | 2 lines
Allow cursor color change w/o restart. Patch 1725576 Tal Einat.
........
r58404 | kurt.kaiser | 2007-10-09 18:06:47 -0700 (Tue, 09 Oct 2007) | 2 lines
show paste if > 80 columns. Patch 1659326 Tal Einat.
........
r58415 | thomas.heller | 2007-10-11 12:51:32 -0700 (Thu, 11 Oct 2007) | 5 lines
On OS X, use os.uname() instead of gestalt.sysv(...) to get the
operating system version. This allows to use ctypes when Python
was configured with --disable-toolbox-glue.
........
r58419 | neal.norwitz | 2007-10-11 20:01:01 -0700 (Thu, 11 Oct 2007) | 1 line
Get rid of warning about not being able to create an existing directory.
........
r58420 | neal.norwitz | 2007-10-11 20:01:30 -0700 (Thu, 11 Oct 2007) | 1 line
Get rid of warnings on a bunch of platforms by using a proper prototype.
........
r58421 | neal.norwitz | 2007-10-11 20:01:54 -0700 (Thu, 11 Oct 2007) | 4 lines
Get rid of compiler warning about retval being used (returned) without
being initialized. (gcc warning and Coverity 202)
........
r58422 | neal.norwitz | 2007-10-11 20:03:23 -0700 (Thu, 11 Oct 2007) | 1 line
Fix Coverity 168: Close the file before returning (exiting).
........
r58423 | neal.norwitz | 2007-10-11 20:04:18 -0700 (Thu, 11 Oct 2007) | 4 lines
Fix Coverity 180: Don't overallocate. We don't need structs, but pointers.
Also fix a memory leak.
........
r58424 | neal.norwitz | 2007-10-11 20:05:19 -0700 (Thu, 11 Oct 2007) | 5 lines
Fix Coverity 185-186: If the passed in FILE is NULL, uninitialized memory
would be accessed.
Will backport.
........
r58425 | neal.norwitz | 2007-10-11 20:52:34 -0700 (Thu, 11 Oct 2007) | 1 line
Get this module to compile with bsddb versions prior to 4.3
........
r58430 | martin.v.loewis | 2007-10-12 01:56:52 -0700 (Fri, 12 Oct 2007) | 3 lines
Bug #1216: Restore support for Visual Studio 2002.
Will backport to 2.5.
........
r58433 | raymond.hettinger | 2007-10-12 10:53:11 -0700 (Fri, 12 Oct 2007) | 1 line
Fix test of count.__repr__() to ignore the 'L' if the count is a long
........
r58434 | gregory.p.smith | 2007-10-12 11:44:06 -0700 (Fri, 12 Oct 2007) | 4 lines
Fixes http://bugs.python.org/issue1233 - bsddb.dbshelve.DBShelf.append
was useless due to inverted logic. Also adds a test case for RECNO dbs
to test_dbshelve.
........
r58445 | georg.brandl | 2007-10-13 06:20:03 -0700 (Sat, 13 Oct 2007) | 2 lines
Fix email example.
........
r58450 | gregory.p.smith | 2007-10-13 16:02:05 -0700 (Sat, 13 Oct 2007) | 2 lines
Fix an uncollectable reference leak in bsddb.db.DBShelf.append
........
r58453 | neal.norwitz | 2007-10-13 17:18:40 -0700 (Sat, 13 Oct 2007) | 8 lines
Let the O/S supply a port if none of the default ports can be used.
This should make the tests more robust at the expense of allowing
tests to be sloppier by not requiring them to cleanup after themselves.
(It will legitamitely help when running two test suites simultaneously
or if another process is already using one of the predefined ports.)
Also simplifies (slightLy) the exception handling elsewhere.
........
r58459 | neal.norwitz | 2007-10-14 11:30:21 -0700 (Sun, 14 Oct 2007) | 2 lines
Don't raise a string exception, they don't work anymore.
........
r58460 | neal.norwitz | 2007-10-14 11:40:37 -0700 (Sun, 14 Oct 2007) | 1 line
Use unittest for assertions
........
r58468 | armin.rigo | 2007-10-15 00:48:35 -0700 (Mon, 15 Oct 2007) | 2 lines
test_bigbits was not testing what it seemed to.
........
r58471 | guido.van.rossum | 2007-10-15 08:54:11 -0700 (Mon, 15 Oct 2007) | 3 lines
Change a PyErr_Print() into a PyErr_Clear(),
per discussion in issue 1031213.
........
r58500 | raymond.hettinger | 2007-10-16 12:18:30 -0700 (Tue, 16 Oct 2007) | 1 line
Improve error messages
........
r58506 | raymond.hettinger | 2007-10-16 14:28:32 -0700 (Tue, 16 Oct 2007) | 1 line
More docs, error messages, and tests
........
r58507 | andrew.kuchling | 2007-10-16 15:58:03 -0700 (Tue, 16 Oct 2007) | 1 line
Add items
........
r58508 | brett.cannon | 2007-10-16 16:24:06 -0700 (Tue, 16 Oct 2007) | 3 lines
Remove ``:const:`` notation on None in parameter list. Since the markup is not
rendered for parameters it just showed up as ``:const:`None` `` in the output.
........
r58509 | brett.cannon | 2007-10-16 16:26:45 -0700 (Tue, 16 Oct 2007) | 3 lines
Re-order some functions whose parameters differ between PyObject and const char
* so that they are next to each other.
........
r58522 | armin.rigo | 2007-10-17 11:46:37 -0700 (Wed, 17 Oct 2007) | 5 lines
Fix the overflow checking of list_repeat.
Introduce overflow checking into list_inplace_repeat.
Backport candidate, possibly.
........
r58530 | facundo.batista | 2007-10-17 20:16:03 -0700 (Wed, 17 Oct 2007) | 7 lines
Issue #1580738. When HTTPConnection reads the whole stream with read(),
it closes itself. When the stream is read in several calls to read(n),
it should behave in the same way if HTTPConnection knows where the end
of the stream is (through self.length). Added a test case for this
behaviour.
........
r58531 | facundo.batista | 2007-10-17 20:44:48 -0700 (Wed, 17 Oct 2007) | 3 lines
Issue 1289, just a typo.
........
r58532 | gregory.p.smith | 2007-10-18 00:56:54 -0700 (Thu, 18 Oct 2007) | 4 lines
cleanup test_dbtables to use mkdtemp. cleanup dbtables to pass txn as a
keyword argument whenever possible to avoid bugs and confusion. (dbtables.py
line 447 self.db.get using txn as a non-keyword was an actual bug due to this)
........
r58533 | gregory.p.smith | 2007-10-18 01:34:20 -0700 (Thu, 18 Oct 2007) | 4 lines
Fix a weird bug in dbtables: if it chose a random rowid string that contained
NULL bytes it would cause the database all sorts of problems in the future
leading to very strange random failures and corrupt dbtables.bsdTableDb dbs.
........
r58534 | gregory.p.smith | 2007-10-18 09:32:02 -0700 (Thu, 18 Oct 2007) | 3 lines
A cleaner fix than the one committed last night. Generate random rowids that
do not contain null bytes.
........
r58537 | gregory.p.smith | 2007-10-18 10:17:57 -0700 (Thu, 18 Oct 2007) | 2 lines
mention bsddb fixes.
........
r58538 | raymond.hettinger | 2007-10-18 14:13:06 -0700 (Thu, 18 Oct 2007) | 1 line
Remove useless warning
........
r58539 | gregory.p.smith | 2007-10-19 00:31:20 -0700 (Fri, 19 Oct 2007) | 2 lines
squelch the warning that this test is supposed to trigger.
........
r58542 | georg.brandl | 2007-10-19 05:32:39 -0700 (Fri, 19 Oct 2007) | 2 lines
Clarify wording for apply().
........
r58544 | mark.summerfield | 2007-10-19 05:48:17 -0700 (Fri, 19 Oct 2007) | 3 lines
Added a cross-ref to each other.
........
r58545 | georg.brandl | 2007-10-19 10:38:49 -0700 (Fri, 19 Oct 2007) | 2 lines
#1284: "S" means "seen", not unread.
........
r58548 | thomas.heller | 2007-10-19 11:11:41 -0700 (Fri, 19 Oct 2007) | 4 lines
Fix ctypes on 32-bit systems when Python is configured --with-system-ffi.
See also https://bugs.launchpad.net/bugs/72505.
Ported from release25-maint branch.
........
r58550 | facundo.batista | 2007-10-19 12:25:57 -0700 (Fri, 19 Oct 2007) | 8 lines
The constructor from tuple was way too permissive: it allowed bad
coefficient numbers, floats in the sign, and other details that
generated directly the wrong number in the best case, or triggered
misfunctionality in the alorithms.
Test cases added for these issues. Thanks Mark Dickinson.
........
r58559 | georg.brandl | 2007-10-20 06:22:53 -0700 (Sat, 20 Oct 2007) | 2 lines
Fix code being interpreted as a target.
........
r58561 | georg.brandl | 2007-10-20 06:36:24 -0700 (Sat, 20 Oct 2007) | 2 lines
Document new "cmdoption" directive.
........
r58562 | georg.brandl | 2007-10-20 08:21:22 -0700 (Sat, 20 Oct 2007) | 2 lines
Make a path more Unix-standardy.
........
r58564 | georg.brandl | 2007-10-20 10:51:39 -0700 (Sat, 20 Oct 2007) | 2 lines
Document new directive "envvar".
........
r58567 | georg.brandl | 2007-10-20 11:08:14 -0700 (Sat, 20 Oct 2007) | 6 lines
* Add new toplevel chapter, "Using Python." (how to install,
configure and setup python on different platforms -- at least
in theory.)
* Move the Python on Mac docs in that chapter.
* Add a new chapter about the command line invocation, by stargaming.
........
r58568 | georg.brandl | 2007-10-20 11:33:20 -0700 (Sat, 20 Oct 2007) | 2 lines
Change title, for now.
........
r58569 | georg.brandl | 2007-10-20 11:39:25 -0700 (Sat, 20 Oct 2007) | 2 lines
Add entry to ACKS.
........
r58570 | georg.brandl | 2007-10-20 12:05:45 -0700 (Sat, 20 Oct 2007) | 2 lines
Clarify -E docs.
........
r58571 | georg.brandl | 2007-10-20 12:08:36 -0700 (Sat, 20 Oct 2007) | 2 lines
Even more clarification.
........
r58572 | andrew.kuchling | 2007-10-20 12:25:37 -0700 (Sat, 20 Oct 2007) | 1 line
Fix protocol name
........
r58573 | andrew.kuchling | 2007-10-20 12:35:18 -0700 (Sat, 20 Oct 2007) | 1 line
Various items
........
r58574 | andrew.kuchling | 2007-10-20 12:39:35 -0700 (Sat, 20 Oct 2007) | 1 line
Use correct header line
........
r58576 | armin.rigo | 2007-10-21 02:14:15 -0700 (Sun, 21 Oct 2007) | 3 lines
Add a crasher for the long-standing issue with closing a file
while another thread uses it.
........
r58577 | georg.brandl | 2007-10-21 03:01:56 -0700 (Sun, 21 Oct 2007) | 2 lines
Remove duplicate crasher.
........
r58578 | georg.brandl | 2007-10-21 03:24:20 -0700 (Sun, 21 Oct 2007) | 2 lines
Unify "byte code" to "bytecode". Also sprinkle :term: markup for it.
........
r58579 | georg.brandl | 2007-10-21 03:32:54 -0700 (Sun, 21 Oct 2007) | 2 lines
Add markup to new function descriptions.
........
r58580 | georg.brandl | 2007-10-21 03:45:46 -0700 (Sun, 21 Oct 2007) | 2 lines
Add :term:s for descriptors.
........
r58581 | georg.brandl | 2007-10-21 03:46:24 -0700 (Sun, 21 Oct 2007) | 2 lines
Unify "file-descriptor" to "file descriptor".
........
r58582 | georg.brandl | 2007-10-21 03:52:38 -0700 (Sun, 21 Oct 2007) | 2 lines
Add :term: for generators.
........
r58583 | georg.brandl | 2007-10-21 05:10:28 -0700 (Sun, 21 Oct 2007) | 2 lines
Add :term:s for iterator.
........
r58584 | georg.brandl | 2007-10-21 05:15:05 -0700 (Sun, 21 Oct 2007) | 2 lines
Add :term:s for "new-style class".
........
r58588 | neal.norwitz | 2007-10-21 21:47:54 -0700 (Sun, 21 Oct 2007) | 1 line
Add Chris Monson so he can edit PEPs.
........
r58594 | guido.van.rossum | 2007-10-22 09:27:19 -0700 (Mon, 22 Oct 2007) | 4 lines
Issue #1307, patch by Derek Shockey.
When "MAIL" is received without args, an exception happens instead of
sending a 501 syntax error response.
........
r58598 | travis.oliphant | 2007-10-22 19:40:56 -0700 (Mon, 22 Oct 2007) | 1 line
Add phuang patch from Issue 708374 which adds offset parameter to mmap module.
........
r58601 | neal.norwitz | 2007-10-22 22:44:27 -0700 (Mon, 22 Oct 2007) | 2 lines
Bug #1313, fix typo (wrong variable name) in example.
........
r58609 | georg.brandl | 2007-10-23 11:21:35 -0700 (Tue, 23 Oct 2007) | 2 lines
Update Pygments version from externals.
........
r58618 | guido.van.rossum | 2007-10-23 12:25:41 -0700 (Tue, 23 Oct 2007) | 3 lines
Issue 1307 by Derek Shockey, fox the same bug for RCPT.
Neal: please backport!
........
r58620 | raymond.hettinger | 2007-10-23 13:37:41 -0700 (Tue, 23 Oct 2007) | 1 line
Shorter name for namedtuple()
........
r58621 | andrew.kuchling | 2007-10-23 13:55:47 -0700 (Tue, 23 Oct 2007) | 1 line
Update name
........
r58622 | raymond.hettinger | 2007-10-23 14:23:07 -0700 (Tue, 23 Oct 2007) | 1 line
Fixup news entry
........
r58623 | raymond.hettinger | 2007-10-23 18:28:33 -0700 (Tue, 23 Oct 2007) | 1 line
Optimize sum() for integer and float inputs.
........
r58624 | raymond.hettinger | 2007-10-23 19:05:51 -0700 (Tue, 23 Oct 2007) | 1 line
Fixup error return and add support for intermixed ints and floats/
........
r58628 | vinay.sajip | 2007-10-24 03:47:06 -0700 (Wed, 24 Oct 2007) | 1 line
Bug #1321: Fixed logic error in TimedRotatingFileHandler.__init__()
........
r58641 | facundo.batista | 2007-10-24 12:11:08 -0700 (Wed, 24 Oct 2007) | 4 lines
Issue 1290. CharacterData.__repr__ was constructing a string
in response that keeped having a non-ascii character.
........
r58643 | thomas.heller | 2007-10-24 12:50:45 -0700 (Wed, 24 Oct 2007) | 1 line
Added unittest for calling a function with paramflags (backport from py3k branch).
........
r58645 | matthias.klose | 2007-10-24 13:00:44 -0700 (Wed, 24 Oct 2007) | 2 lines
- Build using system ffi library on arm*-linux*.
........
r58651 | georg.brandl | 2007-10-24 14:40:38 -0700 (Wed, 24 Oct 2007) | 2 lines
Bug #1287: make os.environ.pop() work as expected.
........
r58652 | raymond.hettinger | 2007-10-24 19:26:58 -0700 (Wed, 24 Oct 2007) | 1 line
Missing DECREFs
........
r58653 | matthias.klose | 2007-10-24 23:37:24 -0700 (Wed, 24 Oct 2007) | 2 lines
- Build using system ffi library on arm*-linux*, pass --with-system-ffi to CONFIG_ARGS
........
r58655 | thomas.heller | 2007-10-25 12:47:32 -0700 (Thu, 25 Oct 2007) | 2 lines
ffi_type_longdouble may be already #defined.
See issue 1324.
........
r58656 | kurt.kaiser | 2007-10-25 15:43:45 -0700 (Thu, 25 Oct 2007) | 3 lines
Correct an ancient bug in an unused path by removing that path: register() is
now idempotent.
........
r58660 | kurt.kaiser | 2007-10-25 17:10:09 -0700 (Thu, 25 Oct 2007) | 4 lines
1. Add comments to provide top-level documentation.
2. Refactor to use more descriptive names.
3. Enhance tests in main().
........
r58675 | georg.brandl | 2007-10-26 11:30:41 -0700 (Fri, 26 Oct 2007) | 2 lines
Fix new pop() method on os.environ on ignorecase-platforms.
........
r58696 | neal.norwitz | 2007-10-27 15:32:21 -0700 (Sat, 27 Oct 2007) | 1 line
Update URL for Pygments. 0.8.1 is no longer available
........
r58697 | hyeshik.chang | 2007-10-28 04:19:02 -0700 (Sun, 28 Oct 2007) | 3 lines
- Add support for FreeBSD 8 which is recently forked from FreeBSD 7.
- Regenerate IN module for most recent maintenance tree of FreeBSD 6 and 7.
........
r58698 | hyeshik.chang | 2007-10-28 05:38:09 -0700 (Sun, 28 Oct 2007) | 2 lines
Enable platform-specific tweaks for FreeBSD 8 (exactly same to FreeBSD 7's yet)
........
r58700 | kurt.kaiser | 2007-10-28 12:03:59 -0700 (Sun, 28 Oct 2007) | 2 lines
Add confirmation dialog before printing. Patch 1717170 Tal Einat.
........
r58706 | guido.van.rossum | 2007-10-29 13:52:45 -0700 (Mon, 29 Oct 2007) | 3 lines
Patch 1353 by Jacob Winther.
Add mp4 mapping to mimetypes.py.
........
r58709 | guido.van.rossum | 2007-10-29 15:15:05 -0700 (Mon, 29 Oct 2007) | 6 lines
Backport fixes for the code that decodes octal escapes (and for PyString
also hex escapes) -- this was reaching beyond the end of the input string
buffer, even though it is not supposed to be \0-terminated.
This has no visible effect but is clearly the correct thing to do.
(In 3.0 it had a visible effect after removing ob_sstate from PyString.)
........
r58710 | kurt.kaiser | 2007-10-29 19:38:54 -0700 (Mon, 29 Oct 2007) | 7 lines
check in Tal Einat's update to tabpage.py
Patch 1612746
M configDialog.py
M NEWS.txt
AM tabbedpages.py
........
r58715 | georg.brandl | 2007-10-30 10:51:18 -0700 (Tue, 30 Oct 2007) | 2 lines
Use correct markup.
........
r58716 | georg.brandl | 2007-10-30 10:57:12 -0700 (Tue, 30 Oct 2007) | 2 lines
Make example about hiding None return values at the prompt clearer.
........
r58728 | neal.norwitz | 2007-10-30 23:33:20 -0700 (Tue, 30 Oct 2007) | 1 line
Fix some compiler warnings for signed comparisons on Unix and Windows.
........
r58731 | martin.v.loewis | 2007-10-31 10:19:33 -0700 (Wed, 31 Oct 2007) | 2 lines
Adding Christian Heimes.
........
r58737 | raymond.hettinger | 2007-10-31 14:57:58 -0700 (Wed, 31 Oct 2007) | 1 line
Clarify the reasons why pickle is almost always better than marshal
........
r58739 | raymond.hettinger | 2007-10-31 15:15:49 -0700 (Wed, 31 Oct 2007) | 1 line
Sets are marshalable.
........
2007-11-01 16:42:39 -03:00
|
|
|
# specifying total bits too large causes an error
|
|
|
|
self.assertRaises(ValueError,
|
|
|
|
zlib.compressobj, 1, zlib.DEFLATED, zlib.MAX_WBITS + 1)
|
2003-02-03 16:45:52 -04:00
|
|
|
|
|
|
|
def test_baddecompressobj(self):
|
|
|
|
# verify failure on building decompress object with bad params
|
2010-04-06 14:23:13 -03:00
|
|
|
self.assertRaises(ValueError, zlib.decompressobj, -1)
|
2003-02-03 16:45:52 -04:00
|
|
|
|
Merged revisions 62194,62197-62198,62204-62205,62214,62219-62221,62227,62229-62231,62233-62235,62237-62239 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r62194 | jeffrey.yasskin | 2008-04-07 01:04:28 +0200 (Mon, 07 Apr 2008) | 7 lines
Add enough debugging information to diagnose failures where the
HandlerBException is ignored, and fix one such problem, where it was thrown
during the __del__ method of the previous Popen object.
We may want to find a better way of printing verbose information so it's not
spammy when the test passes.
........
r62197 | mark.hammond | 2008-04-07 03:53:39 +0200 (Mon, 07 Apr 2008) | 2 lines
Issue #2513: enable 64bit cross compilation on windows.
........
r62198 | mark.hammond | 2008-04-07 03:59:40 +0200 (Mon, 07 Apr 2008) | 2 lines
correct heading underline for new "Cross-compiling on Windows" section
........
r62204 | gregory.p.smith | 2008-04-07 08:33:21 +0200 (Mon, 07 Apr 2008) | 4 lines
Use the new PyFile_IncUseCount & PyFile_DecUseCount calls appropriatly
within the standard library. These modules use PyFile_AsFile and later
release the GIL while operating on the previously returned FILE*.
........
r62205 | mark.summerfield | 2008-04-07 09:39:23 +0200 (Mon, 07 Apr 2008) | 4 lines
changed "2500 components" to "several thousand" since the number keeps
growning:-)
........
r62214 | georg.brandl | 2008-04-07 20:51:59 +0200 (Mon, 07 Apr 2008) | 2 lines
#2525: update timezone info examples in the docs.
........
r62219 | andrew.kuchling | 2008-04-08 01:57:07 +0200 (Tue, 08 Apr 2008) | 1 line
Write PEP 3127 section; add items
........
r62220 | andrew.kuchling | 2008-04-08 01:57:21 +0200 (Tue, 08 Apr 2008) | 1 line
Typo fix
........
r62221 | andrew.kuchling | 2008-04-08 03:33:10 +0200 (Tue, 08 Apr 2008) | 1 line
Typographical fix: 32bit -> 32-bit, 64bit -> 64-bit
........
r62227 | andrew.kuchling | 2008-04-08 23:22:53 +0200 (Tue, 08 Apr 2008) | 1 line
Add items
........
r62229 | amaury.forgeotdarc | 2008-04-08 23:27:42 +0200 (Tue, 08 Apr 2008) | 7 lines
Issue2564: Prevent a hang in "import test.autotest", which runs the entire test
suite as a side-effect of importing the module.
- in test_capi, a thread tried to import other modules
- re.compile() imported sre_parse again on every call.
........
r62230 | amaury.forgeotdarc | 2008-04-08 23:51:57 +0200 (Tue, 08 Apr 2008) | 2 lines
Prevent an error when inspect.isabstract() is called with something else than a new-style class.
........
r62231 | amaury.forgeotdarc | 2008-04-09 00:07:05 +0200 (Wed, 09 Apr 2008) | 8 lines
Issue 2408: remove the _types module
It was only used as a helper in types.py to access types (GetSetDescriptorType and MemberDescriptorType),
when they can easily be obtained with python code.
These expressions even work with Jython.
I don't know what the future of the types module is; (cf. discussion in http://bugs.python.org/issue1605 )
at least this change makes it simpler.
........
r62233 | amaury.forgeotdarc | 2008-04-09 01:10:07 +0200 (Wed, 09 Apr 2008) | 2 lines
Add a NEWS entry for previous checkin
........
r62234 | trent.nelson | 2008-04-09 01:47:30 +0200 (Wed, 09 Apr 2008) | 37 lines
- Issue #2550: The approach used by client/server code for obtaining ports
to listen on in network-oriented tests has been refined in an effort to
facilitate running multiple instances of the entire regression test suite
in parallel without issue. test_support.bind_port() has been fixed such
that it will always return a unique port -- which wasn't always the case
with the previous implementation, especially if socket options had been
set that affected address reuse (i.e. SO_REUSEADDR, SO_REUSEPORT). The
new implementation of bind_port() will actually raise an exception if it
is passed an AF_INET/SOCK_STREAM socket with either the SO_REUSEADDR or
SO_REUSEPORT socket option set. Furthermore, if available, bind_port()
will set the SO_EXCLUSIVEADDRUSE option on the socket it's been passed.
This currently only applies to Windows. This option prevents any other
sockets from binding to the host/port we've bound to, thus removing the
possibility of the 'non-deterministic' behaviour, as Microsoft puts it,
that occurs when a second SOCK_STREAM socket binds and accepts to a
host/port that's already been bound by another socket. The optional
preferred port parameter to bind_port() has been removed. Under no
circumstances should tests be hard coding ports!
test_support.find_unused_port() has also been introduced, which will pass
a temporary socket object to bind_port() in order to obtain an unused port.
The temporary socket object is then closed and deleted, and the port is
returned. This method should only be used for obtaining an unused port
in order to pass to an external program (i.e. the -accept [port] argument
to openssl's s_server mode) or as a parameter to a server-oriented class
that doesn't give you direct access to the underlying socket used.
Finally, test_support.HOST has been introduced, which should be used for
the host argument of any relevant socket calls (i.e. bind and connect).
The following tests were updated to following the new conventions:
test_socket, test_smtplib, test_asyncore, test_ssl, test_httplib,
test_poplib, test_ftplib, test_telnetlib, test_socketserver,
test_asynchat and test_socket_ssl.
It is now possible for multiple instances of the regression test suite to
run in parallel without issue.
........
r62235 | gregory.p.smith | 2008-04-09 02:25:17 +0200 (Wed, 09 Apr 2008) | 3 lines
Fix zlib crash from zlib.decompressobj().flush(val) when val was not positive.
It tried to allocate negative or zero memory. That fails.
........
r62237 | trent.nelson | 2008-04-09 02:34:53 +0200 (Wed, 09 Apr 2008) | 1 line
Fix typo with regards to self.PORT shadowing class variables with the same name.
........
r62238 | andrew.kuchling | 2008-04-09 03:08:32 +0200 (Wed, 09 Apr 2008) | 1 line
Add items
........
r62239 | jerry.seutter | 2008-04-09 07:07:58 +0200 (Wed, 09 Apr 2008) | 1 line
Changed test so it no longer runs as a side effect of importing.
........
2008-04-09 05:37:03 -03:00
|
|
|
def test_decompressobj_badflush(self):
|
|
|
|
# verify failure on calling decompressobj.flush with bad params
|
|
|
|
self.assertRaises(ValueError, zlib.decompressobj().flush, 0)
|
|
|
|
self.assertRaises(ValueError, zlib.decompressobj().flush, -1)
|
|
|
|
|
2015-11-20 04:13:35 -04:00
|
|
|
@support.cpython_only
|
|
|
|
def test_overflow(self):
|
|
|
|
with self.assertRaisesRegex(OverflowError, 'int too large'):
|
|
|
|
zlib.decompress(b'', 15, sys.maxsize + 1)
|
2016-07-23 00:02:07 -03:00
|
|
|
with self.assertRaisesRegex(OverflowError, 'int too large'):
|
|
|
|
zlib.decompressobj().decompress(b'', sys.maxsize + 1)
|
2015-11-20 04:13:35 -04:00
|
|
|
with self.assertRaisesRegex(OverflowError, 'int too large'):
|
|
|
|
zlib.decompressobj().flush(sys.maxsize + 1)
|
|
|
|
|
2021-04-30 11:04:57 -03:00
|
|
|
@support.cpython_only
|
|
|
|
def test_disallow_instantiation(self):
|
|
|
|
# Ensure that the type disallows instantiation (bpo-43916)
|
2021-05-27 03:43:52 -03:00
|
|
|
support.check_disallow_instantiation(self, type(zlib.compressobj()))
|
|
|
|
support.check_disallow_instantiation(self, type(zlib.decompressobj()))
|
2021-04-30 11:04:57 -03:00
|
|
|
|
2003-02-03 16:45:52 -04:00
|
|
|
|
2010-05-07 14:04:02 -03:00
|
|
|
class BaseCompressTestCase(object):
|
|
|
|
def check_big_compress_buffer(self, size, compress_func):
|
|
|
|
_1M = 1024 * 1024
|
2017-11-08 18:44:44 -04:00
|
|
|
# Generate 10 MiB worth of random, and expand it by repeating it.
|
2010-05-07 14:04:02 -03:00
|
|
|
# The assumption is that zlib's memory is not big enough to exploit
|
|
|
|
# such spread out redundancy.
|
2020-04-17 17:54:38 -03:00
|
|
|
data = random.randbytes(_1M * 10)
|
2010-05-07 14:04:02 -03:00
|
|
|
data = data * (size // len(data) + 1)
|
|
|
|
try:
|
|
|
|
compress_func(data)
|
|
|
|
finally:
|
|
|
|
# Release memory
|
|
|
|
data = None
|
|
|
|
|
|
|
|
def check_big_decompress_buffer(self, size, decompress_func):
|
|
|
|
data = b'x' * size
|
|
|
|
try:
|
|
|
|
compressed = zlib.compress(data, 1)
|
|
|
|
finally:
|
|
|
|
# Release memory
|
|
|
|
data = None
|
|
|
|
data = decompress_func(compressed)
|
|
|
|
# Sanity check
|
|
|
|
try:
|
|
|
|
self.assertEqual(len(data), size)
|
|
|
|
self.assertEqual(len(data.strip(b'x')), 0)
|
|
|
|
finally:
|
|
|
|
data = None
|
|
|
|
|
|
|
|
|
|
|
|
class CompressTestCase(BaseCompressTestCase, unittest.TestCase):
|
2003-02-03 16:45:52 -04:00
|
|
|
# Test compression in one go (whole message compression)
|
|
|
|
def test_speech(self):
|
2004-06-05 16:34:28 -03:00
|
|
|
x = zlib.compress(HAMLET_SCENE)
|
|
|
|
self.assertEqual(zlib.decompress(x), HAMLET_SCENE)
|
2003-02-03 16:45:52 -04:00
|
|
|
|
2016-02-10 06:06:36 -04:00
|
|
|
def test_keywords(self):
|
2016-06-25 16:43:05 -03:00
|
|
|
x = zlib.compress(HAMLET_SCENE, level=3)
|
2016-02-10 06:06:36 -04:00
|
|
|
self.assertEqual(zlib.decompress(x), HAMLET_SCENE)
|
2016-06-25 16:43:05 -03:00
|
|
|
with self.assertRaises(TypeError):
|
|
|
|
zlib.compress(data=HAMLET_SCENE, level=3)
|
2016-08-15 04:06:16 -03:00
|
|
|
self.assertEqual(zlib.decompress(x,
|
|
|
|
wbits=zlib.MAX_WBITS,
|
|
|
|
bufsize=zlib.DEF_BUF_SIZE),
|
|
|
|
HAMLET_SCENE)
|
2016-02-10 06:06:36 -04:00
|
|
|
|
2022-02-24 19:32:02 -04:00
|
|
|
@skip_on_s390x
|
2003-02-03 16:45:52 -04:00
|
|
|
def test_speech128(self):
|
2004-06-05 16:34:28 -03:00
|
|
|
# compress more data
|
|
|
|
data = HAMLET_SCENE * 128
|
2003-02-03 16:45:52 -04:00
|
|
|
x = zlib.compress(data)
|
2009-12-14 14:00:06 -04:00
|
|
|
self.assertEqual(zlib.compress(bytearray(data)), x)
|
|
|
|
for ob in x, bytearray(x):
|
|
|
|
self.assertEqual(zlib.decompress(ob), data)
|
2003-02-03 16:45:52 -04:00
|
|
|
|
2010-05-11 20:46:02 -03:00
|
|
|
def test_incomplete_stream(self):
|
2016-04-14 23:14:19 -03:00
|
|
|
# A useful error message is given
|
2010-05-11 20:46:02 -03:00
|
|
|
x = zlib.compress(HAMLET_SCENE)
|
2010-11-30 22:32:32 -04:00
|
|
|
self.assertRaisesRegex(zlib.error,
|
2010-05-11 20:46:02 -03:00
|
|
|
"Error -5 while decompressing data: incomplete or truncated stream",
|
|
|
|
zlib.decompress, x[:-1])
|
|
|
|
|
2010-05-07 14:04:02 -03:00
|
|
|
# Memory use of the following functions takes into account overallocation
|
|
|
|
|
2011-10-04 05:22:36 -03:00
|
|
|
@bigmemtest(size=_1G + 1024 * 1024, memuse=3)
|
2010-05-07 14:04:02 -03:00
|
|
|
def test_big_compress_buffer(self, size):
|
|
|
|
compress = lambda s: zlib.compress(s, 1)
|
|
|
|
self.check_big_compress_buffer(size, compress)
|
2003-02-03 16:45:52 -04:00
|
|
|
|
2011-10-04 05:22:36 -03:00
|
|
|
@bigmemtest(size=_1G + 1024 * 1024, memuse=2)
|
2010-05-07 14:04:02 -03:00
|
|
|
def test_big_decompress_buffer(self, size):
|
|
|
|
self.check_big_decompress_buffer(size, zlib.decompress)
|
2003-02-03 16:45:52 -04:00
|
|
|
|
2015-11-20 04:13:35 -04:00
|
|
|
@bigmemtest(size=_4G, memuse=1)
|
|
|
|
def test_large_bufsize(self, size):
|
|
|
|
# Test decompress(bufsize) parameter greater than the internal limit
|
|
|
|
data = HAMLET_SCENE * 10
|
|
|
|
compressed = zlib.compress(data, 1)
|
|
|
|
self.assertEqual(zlib.decompress(compressed, 15, size), data)
|
|
|
|
|
|
|
|
def test_custom_bufsize(self):
|
|
|
|
data = HAMLET_SCENE * 10
|
|
|
|
compressed = zlib.compress(data, 1)
|
|
|
|
self.assertEqual(zlib.decompress(compressed, 15, CustomInt()), data)
|
|
|
|
|
2016-07-23 00:02:07 -03:00
|
|
|
@unittest.skipUnless(sys.maxsize > 2**32, 'requires 64bit platform')
|
|
|
|
@bigmemtest(size=_4G + 100, memuse=4)
|
|
|
|
def test_64bit_compress(self, size):
|
|
|
|
data = b'x' * size
|
|
|
|
try:
|
|
|
|
comp = zlib.compress(data, 0)
|
|
|
|
self.assertEqual(zlib.decompress(comp), data)
|
|
|
|
finally:
|
|
|
|
comp = data = None
|
|
|
|
|
2010-05-07 14:04:02 -03:00
|
|
|
|
|
|
|
class CompressObjectTestCase(BaseCompressTestCase, unittest.TestCase):
|
2003-02-03 16:45:52 -04:00
|
|
|
# Test compression object
|
2022-02-24 19:32:02 -04:00
|
|
|
@skip_on_s390x
|
2003-02-03 16:45:52 -04:00
|
|
|
def test_pair(self):
|
2004-06-05 16:34:28 -03:00
|
|
|
# straightforward compress/decompress objects
|
2009-12-14 14:00:06 -04:00
|
|
|
datasrc = HAMLET_SCENE * 128
|
|
|
|
datazip = zlib.compress(datasrc)
|
|
|
|
# should compress both bytes and bytearray data
|
|
|
|
for data in (datasrc, bytearray(datasrc)):
|
|
|
|
co = zlib.compressobj()
|
|
|
|
x1 = co.compress(data)
|
|
|
|
x2 = co.flush()
|
|
|
|
self.assertRaises(zlib.error, co.flush) # second flush should not work
|
|
|
|
self.assertEqual(x1 + x2, datazip)
|
|
|
|
for v1, v2 in ((x1, x2), (bytearray(x1), bytearray(x2))):
|
|
|
|
dco = zlib.decompressobj()
|
|
|
|
y1 = dco.decompress(v1 + v2)
|
|
|
|
y2 = dco.flush()
|
|
|
|
self.assertEqual(data, y1 + y2)
|
|
|
|
self.assertIsInstance(dco.unconsumed_tail, bytes)
|
|
|
|
self.assertIsInstance(dco.unused_data, bytes)
|
2003-02-03 16:45:52 -04:00
|
|
|
|
2016-08-15 04:06:16 -03:00
|
|
|
def test_keywords(self):
|
|
|
|
level = 2
|
|
|
|
method = zlib.DEFLATED
|
|
|
|
wbits = -12
|
|
|
|
memLevel = 9
|
|
|
|
strategy = zlib.Z_FILTERED
|
|
|
|
co = zlib.compressobj(level=level,
|
|
|
|
method=method,
|
|
|
|
wbits=wbits,
|
|
|
|
memLevel=memLevel,
|
|
|
|
strategy=strategy,
|
|
|
|
zdict=b"")
|
|
|
|
do = zlib.decompressobj(wbits=wbits, zdict=b"")
|
|
|
|
with self.assertRaises(TypeError):
|
|
|
|
co.compress(data=HAMLET_SCENE)
|
|
|
|
with self.assertRaises(TypeError):
|
|
|
|
do.decompress(data=zlib.compress(HAMLET_SCENE))
|
|
|
|
x = co.compress(HAMLET_SCENE) + co.flush()
|
|
|
|
y = do.decompress(x, max_length=len(HAMLET_SCENE)) + do.flush()
|
|
|
|
self.assertEqual(HAMLET_SCENE, y)
|
|
|
|
|
2004-06-05 16:02:52 -03:00
|
|
|
def test_compressoptions(self):
|
|
|
|
# specify lots of options to compressobj()
|
|
|
|
level = 2
|
|
|
|
method = zlib.DEFLATED
|
|
|
|
wbits = -12
|
2015-09-08 22:01:13 -03:00
|
|
|
memLevel = 9
|
2004-06-05 16:02:52 -03:00
|
|
|
strategy = zlib.Z_FILTERED
|
2015-09-08 22:01:13 -03:00
|
|
|
co = zlib.compressobj(level, method, wbits, memLevel, strategy)
|
2004-06-05 16:34:28 -03:00
|
|
|
x1 = co.compress(HAMLET_SCENE)
|
2004-06-05 16:02:52 -03:00
|
|
|
x2 = co.flush()
|
|
|
|
dco = zlib.decompressobj(wbits)
|
|
|
|
y1 = dco.decompress(x1 + x2)
|
|
|
|
y2 = dco.flush()
|
2004-06-05 16:34:28 -03:00
|
|
|
self.assertEqual(HAMLET_SCENE, y1 + y2)
|
2004-06-05 16:02:52 -03:00
|
|
|
|
2003-02-03 16:45:52 -04:00
|
|
|
def test_compressincremental(self):
|
|
|
|
# compress object in steps, decompress object as one-shot
|
2004-06-05 16:34:28 -03:00
|
|
|
data = HAMLET_SCENE * 128
|
2004-06-05 16:02:52 -03:00
|
|
|
co = zlib.compressobj()
|
2003-02-03 16:45:52 -04:00
|
|
|
bufs = []
|
|
|
|
for i in range(0, len(data), 256):
|
|
|
|
bufs.append(co.compress(data[i:i+256]))
|
|
|
|
bufs.append(co.flush())
|
2007-05-22 19:44:07 -03:00
|
|
|
combuf = b''.join(bufs)
|
2003-02-03 16:45:52 -04:00
|
|
|
|
2004-06-05 16:02:52 -03:00
|
|
|
dco = zlib.decompressobj()
|
2007-05-22 19:44:07 -03:00
|
|
|
y1 = dco.decompress(b''.join(bufs))
|
2003-02-03 16:45:52 -04:00
|
|
|
y2 = dco.flush()
|
|
|
|
self.assertEqual(data, y1 + y2)
|
|
|
|
|
2004-06-05 16:34:28 -03:00
|
|
|
def test_decompinc(self, flush=False, source=None, cx=256, dcx=64):
|
2003-02-03 16:45:52 -04:00
|
|
|
# compress object in steps, decompress object in steps
|
2004-06-05 16:34:28 -03:00
|
|
|
source = source or HAMLET_SCENE
|
|
|
|
data = source * 128
|
2004-06-05 16:02:52 -03:00
|
|
|
co = zlib.compressobj()
|
2003-02-03 16:45:52 -04:00
|
|
|
bufs = []
|
2004-06-05 16:34:28 -03:00
|
|
|
for i in range(0, len(data), cx):
|
|
|
|
bufs.append(co.compress(data[i:i+cx]))
|
2003-02-03 16:45:52 -04:00
|
|
|
bufs.append(co.flush())
|
2007-05-22 19:44:07 -03:00
|
|
|
combuf = b''.join(bufs)
|
2003-02-03 16:45:52 -04:00
|
|
|
|
2008-09-06 17:13:06 -03:00
|
|
|
decombuf = zlib.decompress(combuf)
|
|
|
|
# Test type of return value
|
2010-01-24 15:26:24 -04:00
|
|
|
self.assertIsInstance(decombuf, bytes)
|
2008-09-06 17:13:06 -03:00
|
|
|
|
|
|
|
self.assertEqual(data, decombuf)
|
2003-02-03 16:45:52 -04:00
|
|
|
|
2004-06-05 16:02:52 -03:00
|
|
|
dco = zlib.decompressobj()
|
2003-02-03 16:45:52 -04:00
|
|
|
bufs = []
|
2004-06-05 16:34:28 -03:00
|
|
|
for i in range(0, len(combuf), dcx):
|
|
|
|
bufs.append(dco.decompress(combuf[i:i+dcx]))
|
2007-05-22 19:44:07 -03:00
|
|
|
self.assertEqual(b'', dco.unconsumed_tail, ########
|
|
|
|
"(A) uct should be b'': not %d long" %
|
2004-06-05 16:34:28 -03:00
|
|
|
len(dco.unconsumed_tail))
|
2008-07-02 17:50:16 -03:00
|
|
|
self.assertEqual(b'', dco.unused_data)
|
2004-06-05 16:34:28 -03:00
|
|
|
if flush:
|
|
|
|
bufs.append(dco.flush())
|
|
|
|
else:
|
|
|
|
while True:
|
2009-12-14 14:00:06 -04:00
|
|
|
chunk = dco.decompress(b'')
|
2004-06-05 16:34:28 -03:00
|
|
|
if chunk:
|
|
|
|
bufs.append(chunk)
|
|
|
|
else:
|
|
|
|
break
|
2007-05-22 19:44:07 -03:00
|
|
|
self.assertEqual(b'', dco.unconsumed_tail, ########
|
|
|
|
"(B) uct should be b'': not %d long" %
|
2004-06-05 16:34:28 -03:00
|
|
|
len(dco.unconsumed_tail))
|
2008-07-02 17:50:16 -03:00
|
|
|
self.assertEqual(b'', dco.unused_data)
|
2007-05-22 19:44:07 -03:00
|
|
|
self.assertEqual(data, b''.join(bufs))
|
2003-02-03 16:45:52 -04:00
|
|
|
# Failure means: "decompressobj with init options failed"
|
|
|
|
|
2004-06-05 16:34:28 -03:00
|
|
|
def test_decompincflush(self):
|
|
|
|
self.test_decompinc(flush=True)
|
2003-02-03 16:45:52 -04:00
|
|
|
|
2004-06-05 16:34:28 -03:00
|
|
|
def test_decompimax(self, source=None, cx=256, dcx=64):
|
|
|
|
# compress in steps, decompress in length-restricted steps
|
|
|
|
source = source or HAMLET_SCENE
|
2003-02-03 16:45:52 -04:00
|
|
|
# Check a decompression object with max_length specified
|
2004-06-05 16:34:28 -03:00
|
|
|
data = source * 128
|
2004-06-05 16:02:52 -03:00
|
|
|
co = zlib.compressobj()
|
2003-02-03 16:45:52 -04:00
|
|
|
bufs = []
|
2004-06-05 16:34:28 -03:00
|
|
|
for i in range(0, len(data), cx):
|
|
|
|
bufs.append(co.compress(data[i:i+cx]))
|
2003-02-03 16:45:52 -04:00
|
|
|
bufs.append(co.flush())
|
2007-05-22 19:44:07 -03:00
|
|
|
combuf = b''.join(bufs)
|
2004-06-05 16:02:52 -03:00
|
|
|
self.assertEqual(data, zlib.decompress(combuf),
|
2003-02-03 16:45:52 -04:00
|
|
|
'compressed data failure')
|
|
|
|
|
2004-06-05 16:02:52 -03:00
|
|
|
dco = zlib.decompressobj()
|
2003-02-03 16:45:52 -04:00
|
|
|
bufs = []
|
|
|
|
cb = combuf
|
|
|
|
while cb:
|
2004-06-05 16:34:28 -03:00
|
|
|
#max_length = 1 + len(cb)//10
|
|
|
|
chunk = dco.decompress(cb, dcx)
|
2009-06-30 20:06:06 -03:00
|
|
|
self.assertFalse(len(chunk) > dcx,
|
2004-06-05 16:34:28 -03:00
|
|
|
'chunk too big (%d>%d)' % (len(chunk), dcx))
|
2003-02-03 16:45:52 -04:00
|
|
|
bufs.append(chunk)
|
|
|
|
cb = dco.unconsumed_tail
|
|
|
|
bufs.append(dco.flush())
|
2007-05-22 19:44:07 -03:00
|
|
|
self.assertEqual(data, b''.join(bufs), 'Wrong data retrieved')
|
2003-02-03 16:45:52 -04:00
|
|
|
|
2004-06-05 16:34:28 -03:00
|
|
|
def test_decompressmaxlen(self, flush=False):
|
|
|
|
# Check a decompression object with max_length specified
|
|
|
|
data = HAMLET_SCENE * 128
|
2004-06-05 16:02:52 -03:00
|
|
|
co = zlib.compressobj()
|
2003-02-03 16:45:52 -04:00
|
|
|
bufs = []
|
|
|
|
for i in range(0, len(data), 256):
|
|
|
|
bufs.append(co.compress(data[i:i+256]))
|
|
|
|
bufs.append(co.flush())
|
2007-05-22 19:44:07 -03:00
|
|
|
combuf = b''.join(bufs)
|
2004-06-05 16:02:52 -03:00
|
|
|
self.assertEqual(data, zlib.decompress(combuf),
|
2004-06-05 16:34:28 -03:00
|
|
|
'compressed data failure')
|
2003-02-03 16:45:52 -04:00
|
|
|
|
2004-06-05 16:02:52 -03:00
|
|
|
dco = zlib.decompressobj()
|
2003-02-03 16:45:52 -04:00
|
|
|
bufs = []
|
|
|
|
cb = combuf
|
|
|
|
while cb:
|
2003-02-27 14:39:18 -04:00
|
|
|
max_length = 1 + len(cb)//10
|
2003-02-03 16:45:52 -04:00
|
|
|
chunk = dco.decompress(cb, max_length)
|
2009-06-30 20:06:06 -03:00
|
|
|
self.assertFalse(len(chunk) > max_length,
|
2003-02-03 16:45:52 -04:00
|
|
|
'chunk too big (%d>%d)' % (len(chunk),max_length))
|
|
|
|
bufs.append(chunk)
|
|
|
|
cb = dco.unconsumed_tail
|
2004-06-05 16:34:28 -03:00
|
|
|
if flush:
|
|
|
|
bufs.append(dco.flush())
|
|
|
|
else:
|
|
|
|
while chunk:
|
2009-12-14 14:00:06 -04:00
|
|
|
chunk = dco.decompress(b'', max_length)
|
2009-06-30 20:06:06 -03:00
|
|
|
self.assertFalse(len(chunk) > max_length,
|
2004-06-05 16:34:28 -03:00
|
|
|
'chunk too big (%d>%d)' % (len(chunk),max_length))
|
|
|
|
bufs.append(chunk)
|
2007-05-22 19:44:07 -03:00
|
|
|
self.assertEqual(data, b''.join(bufs), 'Wrong data retrieved')
|
2003-02-03 16:45:52 -04:00
|
|
|
|
2004-06-05 16:34:28 -03:00
|
|
|
def test_decompressmaxlenflush(self):
|
|
|
|
self.test_decompressmaxlen(flush=True)
|
|
|
|
|
2003-02-03 16:45:52 -04:00
|
|
|
def test_maxlenmisc(self):
|
|
|
|
# Misc tests of max_length
|
2004-06-05 16:02:52 -03:00
|
|
|
dco = zlib.decompressobj()
|
2009-12-14 14:00:06 -04:00
|
|
|
self.assertRaises(ValueError, dco.decompress, b"", -1)
|
2007-05-22 19:44:07 -03:00
|
|
|
self.assertEqual(b'', dco.unconsumed_tail)
|
2003-02-03 16:45:52 -04:00
|
|
|
|
2015-11-20 04:13:35 -04:00
|
|
|
def test_maxlen_large(self):
|
|
|
|
# Sizes up to sys.maxsize should be accepted, although zlib is
|
|
|
|
# internally limited to expressing sizes with unsigned int
|
|
|
|
data = HAMLET_SCENE * 10
|
|
|
|
self.assertGreater(len(data), zlib.DEF_BUF_SIZE)
|
|
|
|
compressed = zlib.compress(data, 1)
|
|
|
|
dco = zlib.decompressobj()
|
|
|
|
self.assertEqual(dco.decompress(compressed, sys.maxsize), data)
|
|
|
|
|
|
|
|
def test_maxlen_custom(self):
|
|
|
|
data = HAMLET_SCENE * 10
|
|
|
|
compressed = zlib.compress(data, 1)
|
|
|
|
dco = zlib.decompressobj()
|
|
|
|
self.assertEqual(dco.decompress(compressed, CustomInt()), data[:100])
|
|
|
|
|
2011-05-14 09:05:20 -03:00
|
|
|
def test_clear_unconsumed_tail(self):
|
|
|
|
# Issue #12050: calling decompress() without providing max_length
|
|
|
|
# should clear the unconsumed_tail attribute.
|
|
|
|
cdata = b"x\x9cKLJ\x06\x00\x02M\x01" # "abc"
|
|
|
|
dco = zlib.decompressobj()
|
|
|
|
ddata = dco.decompress(cdata, 1)
|
|
|
|
ddata += dco.decompress(dco.unconsumed_tail)
|
|
|
|
self.assertEqual(dco.unconsumed_tail, b"")
|
|
|
|
|
2003-02-03 16:45:52 -04:00
|
|
|
def test_flushes(self):
|
|
|
|
# Test flush() with the various options, using all the
|
|
|
|
# different levels in order to provide more variations.
|
2018-03-07 01:05:37 -04:00
|
|
|
sync_opt = ['Z_NO_FLUSH', 'Z_SYNC_FLUSH', 'Z_FULL_FLUSH',
|
2018-09-24 08:44:50 -03:00
|
|
|
'Z_PARTIAL_FLUSH']
|
|
|
|
|
|
|
|
ver = tuple(int(v) for v in zlib.ZLIB_RUNTIME_VERSION.split('.'))
|
|
|
|
# Z_BLOCK has a known failure prior to 1.2.5.3
|
|
|
|
if ver >= (1, 2, 5, 3):
|
|
|
|
sync_opt.append('Z_BLOCK')
|
|
|
|
|
2003-02-03 16:45:52 -04:00
|
|
|
sync_opt = [getattr(zlib, opt) for opt in sync_opt
|
|
|
|
if hasattr(zlib, opt)]
|
2004-06-05 16:34:28 -03:00
|
|
|
data = HAMLET_SCENE * 8
|
2003-02-03 16:45:52 -04:00
|
|
|
|
|
|
|
for sync in sync_opt:
|
|
|
|
for level in range(10):
|
2018-09-24 08:44:50 -03:00
|
|
|
try:
|
|
|
|
obj = zlib.compressobj( level )
|
|
|
|
a = obj.compress( data[:3000] )
|
|
|
|
b = obj.flush( sync )
|
|
|
|
c = obj.compress( data[3000:] )
|
|
|
|
d = obj.flush()
|
|
|
|
except:
|
|
|
|
print("Error for flush mode={}, level={}"
|
|
|
|
.format(sync, level))
|
|
|
|
raise
|
2007-05-22 19:44:07 -03:00
|
|
|
self.assertEqual(zlib.decompress(b''.join([a,b,c,d])),
|
2003-02-03 16:45:52 -04:00
|
|
|
data, ("Decompress failed: flush "
|
|
|
|
"mode=%i, level=%i") % (sync, level))
|
|
|
|
del obj
|
|
|
|
|
2013-11-03 15:31:38 -04:00
|
|
|
@unittest.skipUnless(hasattr(zlib, 'Z_SYNC_FLUSH'),
|
|
|
|
'requires zlib.Z_SYNC_FLUSH')
|
2003-02-03 16:45:52 -04:00
|
|
|
def test_odd_flush(self):
|
|
|
|
# Test for odd flushing bugs noted in 2.0, and hopefully fixed in 2.1
|
|
|
|
import random
|
2013-11-03 15:31:38 -04:00
|
|
|
# Testing on 17K of "random" data
|
2003-02-03 16:45:52 -04:00
|
|
|
|
2013-11-03 15:31:38 -04:00
|
|
|
# Create compressor and decompressor objects
|
|
|
|
co = zlib.compressobj(zlib.Z_BEST_COMPRESSION)
|
|
|
|
dco = zlib.decompressobj()
|
2003-02-03 16:45:52 -04:00
|
|
|
|
2013-11-03 15:31:38 -04:00
|
|
|
# Try 17K of data
|
|
|
|
# generate random data stream
|
2023-10-04 07:51:45 -03:00
|
|
|
data = random.randbytes(17 * 1024)
|
2013-11-03 15:31:38 -04:00
|
|
|
|
|
|
|
# compress, sync-flush, and decompress
|
|
|
|
first = co.compress(data)
|
|
|
|
second = co.flush(zlib.Z_SYNC_FLUSH)
|
|
|
|
expanded = dco.decompress(first + second)
|
|
|
|
|
|
|
|
# if decompressed data is different from the input data, choke.
|
|
|
|
self.assertEqual(expanded, data, "17K random source doesn't match")
|
2003-02-03 16:45:52 -04:00
|
|
|
|
2004-12-28 16:10:48 -04:00
|
|
|
def test_empty_flush(self):
|
|
|
|
# Test that calling .flush() on unused objects works.
|
|
|
|
# (Bug #1083110 -- calling .flush() on decompress objects
|
|
|
|
# caused a core dump.)
|
|
|
|
|
|
|
|
co = zlib.compressobj(zlib.Z_BEST_COMPRESSION)
|
2009-06-30 20:06:06 -03:00
|
|
|
self.assertTrue(co.flush()) # Returns a zlib header
|
2004-12-28 16:10:48 -04:00
|
|
|
dco = zlib.decompressobj()
|
2007-05-22 19:44:07 -03:00
|
|
|
self.assertEqual(dco.flush(), b"") # Returns nothing
|
2005-01-07 12:01:32 -04:00
|
|
|
|
2012-06-20 21:13:12 -03:00
|
|
|
def test_dictionary(self):
|
|
|
|
h = HAMLET_SCENE
|
2012-06-21 19:35:57 -03:00
|
|
|
# Build a simulated dictionary out of the words in HAMLET.
|
2012-06-20 21:13:12 -03:00
|
|
|
words = h.split()
|
|
|
|
random.shuffle(words)
|
|
|
|
zdict = b''.join(words)
|
2012-06-21 19:35:57 -03:00
|
|
|
# Use it to compress HAMLET.
|
2012-06-20 21:13:12 -03:00
|
|
|
co = zlib.compressobj(zdict=zdict)
|
|
|
|
cd = co.compress(h) + co.flush()
|
2012-06-21 19:35:57 -03:00
|
|
|
# Verify that it will decompress with the dictionary.
|
2012-06-20 21:13:12 -03:00
|
|
|
dco = zlib.decompressobj(zdict=zdict)
|
|
|
|
self.assertEqual(dco.decompress(cd) + dco.flush(), h)
|
2012-06-21 19:35:57 -03:00
|
|
|
# Verify that it fails when not given the dictionary.
|
2012-06-20 21:13:12 -03:00
|
|
|
dco = zlib.decompressobj()
|
|
|
|
self.assertRaises(zlib.error, dco.decompress, cd)
|
|
|
|
|
|
|
|
def test_dictionary_streaming(self):
|
2012-06-21 19:35:57 -03:00
|
|
|
# This simulates the reuse of a compressor object for compressing
|
|
|
|
# several separate data streams.
|
2012-06-20 21:13:12 -03:00
|
|
|
co = zlib.compressobj(zdict=HAMLET_SCENE)
|
|
|
|
do = zlib.decompressobj(zdict=HAMLET_SCENE)
|
|
|
|
piece = HAMLET_SCENE[1000:1500]
|
|
|
|
d0 = co.compress(piece) + co.flush(zlib.Z_SYNC_FLUSH)
|
|
|
|
d1 = co.compress(piece[100:]) + co.flush(zlib.Z_SYNC_FLUSH)
|
|
|
|
d2 = co.compress(piece[:-100]) + co.flush(zlib.Z_SYNC_FLUSH)
|
|
|
|
self.assertEqual(do.decompress(d0), piece)
|
|
|
|
self.assertEqual(do.decompress(d1), piece[100:])
|
|
|
|
self.assertEqual(do.decompress(d2), piece[:-100])
|
|
|
|
|
2010-05-11 20:36:40 -03:00
|
|
|
def test_decompress_incomplete_stream(self):
|
|
|
|
# This is 'foo', deflated
|
|
|
|
x = b'x\x9cK\xcb\xcf\x07\x00\x02\x82\x01E'
|
|
|
|
# For the record
|
|
|
|
self.assertEqual(zlib.decompress(x), b'foo')
|
|
|
|
self.assertRaises(zlib.error, zlib.decompress, x[:-5])
|
|
|
|
# Omitting the stream end works with decompressor objects
|
|
|
|
# (see issue #8672).
|
|
|
|
dco = zlib.decompressobj()
|
|
|
|
y = dco.decompress(x[:-5])
|
|
|
|
y += dco.flush()
|
|
|
|
self.assertEqual(y, b'foo')
|
|
|
|
|
2011-08-13 10:22:40 -03:00
|
|
|
def test_decompress_eof(self):
|
|
|
|
x = b'x\x9cK\xcb\xcf\x07\x00\x02\x82\x01E' # 'foo'
|
|
|
|
dco = zlib.decompressobj()
|
|
|
|
self.assertFalse(dco.eof)
|
|
|
|
dco.decompress(x[:-5])
|
|
|
|
self.assertFalse(dco.eof)
|
|
|
|
dco.decompress(x[-5:])
|
|
|
|
self.assertTrue(dco.eof)
|
|
|
|
dco.flush()
|
|
|
|
self.assertTrue(dco.eof)
|
|
|
|
|
|
|
|
def test_decompress_eof_incomplete_stream(self):
|
|
|
|
x = b'x\x9cK\xcb\xcf\x07\x00\x02\x82\x01E' # 'foo'
|
|
|
|
dco = zlib.decompressobj()
|
|
|
|
self.assertFalse(dco.eof)
|
|
|
|
dco.decompress(x[:-5])
|
|
|
|
self.assertFalse(dco.eof)
|
|
|
|
dco.flush()
|
|
|
|
self.assertFalse(dco.eof)
|
|
|
|
|
2012-11-04 19:37:42 -04:00
|
|
|
def test_decompress_unused_data(self):
|
|
|
|
# Repeated calls to decompress() after EOF should accumulate data in
|
|
|
|
# dco.unused_data, instead of just storing the arg to the last call.
|
2012-11-10 21:14:36 -04:00
|
|
|
source = b'abcdefghijklmnopqrstuvwxyz'
|
|
|
|
remainder = b'0123456789'
|
|
|
|
y = zlib.compress(source)
|
|
|
|
x = y + remainder
|
|
|
|
for maxlen in 0, 1000:
|
|
|
|
for step in 1, 2, len(y), len(x):
|
|
|
|
dco = zlib.decompressobj()
|
|
|
|
data = b''
|
|
|
|
for i in range(0, len(x), step):
|
|
|
|
if i < len(y):
|
|
|
|
self.assertEqual(dco.unused_data, b'')
|
|
|
|
if maxlen == 0:
|
|
|
|
data += dco.decompress(x[i : i + step])
|
|
|
|
self.assertEqual(dco.unconsumed_tail, b'')
|
|
|
|
else:
|
|
|
|
data += dco.decompress(
|
|
|
|
dco.unconsumed_tail + x[i : i + step], maxlen)
|
|
|
|
data += dco.flush()
|
2012-11-10 21:21:22 -04:00
|
|
|
self.assertTrue(dco.eof)
|
2012-11-10 21:14:36 -04:00
|
|
|
self.assertEqual(data, source)
|
|
|
|
self.assertEqual(dco.unconsumed_tail, b'')
|
|
|
|
self.assertEqual(dco.unused_data, remainder)
|
2012-11-04 19:37:42 -04:00
|
|
|
|
2016-06-05 07:48:34 -03:00
|
|
|
# issue27164
|
|
|
|
def test_decompress_raw_with_dictionary(self):
|
|
|
|
zdict = b'abcdefghijklmnopqrstuvwxyz'
|
|
|
|
co = zlib.compressobj(wbits=-zlib.MAX_WBITS, zdict=zdict)
|
|
|
|
comp = co.compress(zdict) + co.flush()
|
|
|
|
dco = zlib.decompressobj(wbits=-zlib.MAX_WBITS, zdict=zdict)
|
|
|
|
uncomp = dco.decompress(comp) + dco.flush()
|
|
|
|
self.assertEqual(zdict, uncomp)
|
|
|
|
|
2012-11-10 22:15:32 -04:00
|
|
|
def test_flush_with_freed_input(self):
|
|
|
|
# Issue #16411: decompressor accesses input to last decompress() call
|
|
|
|
# in flush(), even if this object has been freed in the meanwhile.
|
|
|
|
input1 = b'abcdefghijklmnopqrstuvwxyz'
|
|
|
|
input2 = b'QWERTYUIOPASDFGHJKLZXCVBNM'
|
|
|
|
data = zlib.compress(input1)
|
|
|
|
dco = zlib.decompressobj()
|
|
|
|
dco.decompress(data, 1)
|
|
|
|
del data
|
|
|
|
data = zlib.compress(input2)
|
|
|
|
self.assertEqual(dco.flush(), input1[1:])
|
|
|
|
|
2015-11-20 04:13:35 -04:00
|
|
|
@bigmemtest(size=_4G, memuse=1)
|
|
|
|
def test_flush_large_length(self, size):
|
|
|
|
# Test flush(length) parameter greater than internal limit UINT_MAX
|
|
|
|
input = HAMLET_SCENE * 10
|
|
|
|
data = zlib.compress(input, 1)
|
|
|
|
dco = zlib.decompressobj()
|
|
|
|
dco.decompress(data, 1)
|
|
|
|
self.assertEqual(dco.flush(size), input[1:])
|
|
|
|
|
|
|
|
def test_flush_custom_length(self):
|
|
|
|
input = HAMLET_SCENE * 10
|
|
|
|
data = zlib.compress(input, 1)
|
|
|
|
dco = zlib.decompressobj()
|
|
|
|
dco.decompress(data, 1)
|
|
|
|
self.assertEqual(dco.flush(CustomInt()), input[1:])
|
|
|
|
|
2013-11-03 15:31:38 -04:00
|
|
|
@requires_Compress_copy
|
|
|
|
def test_compresscopy(self):
|
|
|
|
# Test copying a compression object
|
|
|
|
data0 = HAMLET_SCENE
|
|
|
|
data1 = bytes(str(HAMLET_SCENE, "ascii").swapcase(), "ascii")
|
2018-06-27 15:04:51 -03:00
|
|
|
for func in lambda c: c.copy(), copy.copy, copy.deepcopy:
|
|
|
|
c0 = zlib.compressobj(zlib.Z_BEST_COMPRESSION)
|
|
|
|
bufs0 = []
|
|
|
|
bufs0.append(c0.compress(data0))
|
2013-11-03 15:31:38 -04:00
|
|
|
|
2018-06-27 15:04:51 -03:00
|
|
|
c1 = func(c0)
|
|
|
|
bufs1 = bufs0[:]
|
2013-11-03 15:31:38 -04:00
|
|
|
|
2018-06-27 15:04:51 -03:00
|
|
|
bufs0.append(c0.compress(data0))
|
|
|
|
bufs0.append(c0.flush())
|
|
|
|
s0 = b''.join(bufs0)
|
2013-11-03 15:31:38 -04:00
|
|
|
|
2018-06-27 15:04:51 -03:00
|
|
|
bufs1.append(c1.compress(data1))
|
|
|
|
bufs1.append(c1.flush())
|
|
|
|
s1 = b''.join(bufs1)
|
2013-11-03 15:31:38 -04:00
|
|
|
|
2018-06-27 15:04:51 -03:00
|
|
|
self.assertEqual(zlib.decompress(s0),data0+data0)
|
|
|
|
self.assertEqual(zlib.decompress(s1),data0+data1)
|
2013-11-03 15:31:38 -04:00
|
|
|
|
|
|
|
@requires_Compress_copy
|
|
|
|
def test_badcompresscopy(self):
|
|
|
|
# Test copying a compression object in an inconsistent state
|
|
|
|
c = zlib.compressobj()
|
|
|
|
c.compress(HAMLET_SCENE)
|
|
|
|
c.flush()
|
|
|
|
self.assertRaises(ValueError, c.copy)
|
2018-06-27 15:04:51 -03:00
|
|
|
self.assertRaises(ValueError, copy.copy, c)
|
|
|
|
self.assertRaises(ValueError, copy.deepcopy, c)
|
2013-11-03 15:31:38 -04:00
|
|
|
|
|
|
|
@requires_Decompress_copy
|
|
|
|
def test_decompresscopy(self):
|
|
|
|
# Test copying a decompression object
|
|
|
|
data = HAMLET_SCENE
|
|
|
|
comp = zlib.compress(data)
|
|
|
|
# Test type of return value
|
|
|
|
self.assertIsInstance(comp, bytes)
|
|
|
|
|
2018-06-27 15:04:51 -03:00
|
|
|
for func in lambda c: c.copy(), copy.copy, copy.deepcopy:
|
|
|
|
d0 = zlib.decompressobj()
|
|
|
|
bufs0 = []
|
|
|
|
bufs0.append(d0.decompress(comp[:32]))
|
2013-11-03 15:31:38 -04:00
|
|
|
|
2018-06-27 15:04:51 -03:00
|
|
|
d1 = func(d0)
|
|
|
|
bufs1 = bufs0[:]
|
2013-11-03 15:31:38 -04:00
|
|
|
|
2018-06-27 15:04:51 -03:00
|
|
|
bufs0.append(d0.decompress(comp[32:]))
|
|
|
|
s0 = b''.join(bufs0)
|
2013-11-03 15:31:38 -04:00
|
|
|
|
2018-06-27 15:04:51 -03:00
|
|
|
bufs1.append(d1.decompress(comp[32:]))
|
|
|
|
s1 = b''.join(bufs1)
|
2013-11-03 15:31:38 -04:00
|
|
|
|
2018-06-27 15:04:51 -03:00
|
|
|
self.assertEqual(s0,s1)
|
|
|
|
self.assertEqual(s0,data)
|
2013-11-03 15:31:38 -04:00
|
|
|
|
|
|
|
@requires_Decompress_copy
|
|
|
|
def test_baddecompresscopy(self):
|
|
|
|
# Test copying a compression object in an inconsistent state
|
|
|
|
data = zlib.compress(HAMLET_SCENE)
|
|
|
|
d = zlib.decompressobj()
|
|
|
|
d.decompress(data)
|
|
|
|
d.flush()
|
|
|
|
self.assertRaises(ValueError, d.copy)
|
2018-06-27 15:04:51 -03:00
|
|
|
self.assertRaises(ValueError, copy.copy, d)
|
|
|
|
self.assertRaises(ValueError, copy.deepcopy, d)
|
2003-02-03 16:45:52 -04:00
|
|
|
|
2015-11-12 05:23:04 -04:00
|
|
|
def test_compresspickle(self):
|
|
|
|
for proto in range(pickle.HIGHEST_PROTOCOL + 1):
|
|
|
|
with self.assertRaises((TypeError, pickle.PicklingError)):
|
|
|
|
pickle.dumps(zlib.compressobj(zlib.Z_BEST_COMPRESSION), proto)
|
|
|
|
|
|
|
|
def test_decompresspickle(self):
|
|
|
|
for proto in range(pickle.HIGHEST_PROTOCOL + 1):
|
|
|
|
with self.assertRaises((TypeError, pickle.PicklingError)):
|
|
|
|
pickle.dumps(zlib.decompressobj(), proto)
|
|
|
|
|
2010-05-07 14:04:02 -03:00
|
|
|
# Memory use of the following functions takes into account overallocation
|
|
|
|
|
2011-10-04 05:22:36 -03:00
|
|
|
@bigmemtest(size=_1G + 1024 * 1024, memuse=3)
|
2010-05-07 14:04:02 -03:00
|
|
|
def test_big_compress_buffer(self, size):
|
|
|
|
c = zlib.compressobj(1)
|
|
|
|
compress = lambda s: c.compress(s) + c.flush()
|
|
|
|
self.check_big_compress_buffer(size, compress)
|
|
|
|
|
2011-10-04 05:22:36 -03:00
|
|
|
@bigmemtest(size=_1G + 1024 * 1024, memuse=2)
|
2010-05-07 14:04:02 -03:00
|
|
|
def test_big_decompress_buffer(self, size):
|
|
|
|
d = zlib.decompressobj()
|
|
|
|
decompress = lambda s: d.decompress(s) + d.flush()
|
|
|
|
self.check_big_decompress_buffer(size, decompress)
|
|
|
|
|
2016-07-23 00:02:07 -03:00
|
|
|
@unittest.skipUnless(sys.maxsize > 2**32, 'requires 64bit platform')
|
|
|
|
@bigmemtest(size=_4G + 100, memuse=4)
|
|
|
|
def test_64bit_compress(self, size):
|
2011-05-14 19:19:50 -03:00
|
|
|
data = b'x' * size
|
2016-07-23 00:02:07 -03:00
|
|
|
co = zlib.compressobj(0)
|
|
|
|
do = zlib.decompressobj()
|
2011-05-14 19:19:50 -03:00
|
|
|
try:
|
2016-07-23 00:02:07 -03:00
|
|
|
comp = co.compress(data) + co.flush()
|
|
|
|
uncomp = do.decompress(comp) + do.flush()
|
|
|
|
self.assertEqual(uncomp, data)
|
2011-05-14 19:19:50 -03:00
|
|
|
finally:
|
2016-07-23 00:02:07 -03:00
|
|
|
comp = uncomp = data = None
|
|
|
|
|
|
|
|
@unittest.skipUnless(sys.maxsize > 2**32, 'requires 64bit platform')
|
|
|
|
@bigmemtest(size=_4G + 100, memuse=3)
|
|
|
|
def test_large_unused_data(self, size):
|
|
|
|
data = b'abcdefghijklmnop'
|
|
|
|
unused = b'x' * size
|
|
|
|
comp = zlib.compress(data) + unused
|
|
|
|
do = zlib.decompressobj()
|
|
|
|
try:
|
|
|
|
uncomp = do.decompress(comp) + do.flush()
|
|
|
|
self.assertEqual(unused, do.unused_data)
|
|
|
|
self.assertEqual(uncomp, data)
|
|
|
|
finally:
|
|
|
|
unused = comp = do = None
|
|
|
|
|
|
|
|
@unittest.skipUnless(sys.maxsize > 2**32, 'requires 64bit platform')
|
|
|
|
@bigmemtest(size=_4G + 100, memuse=5)
|
|
|
|
def test_large_unconsumed_tail(self, size):
|
|
|
|
data = b'x' * size
|
|
|
|
do = zlib.decompressobj()
|
|
|
|
try:
|
|
|
|
comp = zlib.compress(data, 0)
|
|
|
|
uncomp = do.decompress(comp, 1) + do.flush()
|
|
|
|
self.assertEqual(uncomp, data)
|
|
|
|
self.assertEqual(do.unconsumed_tail, b'')
|
|
|
|
finally:
|
|
|
|
comp = uncomp = data = None
|
2011-05-14 19:19:50 -03:00
|
|
|
|
2016-05-27 04:32:11 -03:00
|
|
|
def test_wbits(self):
|
2016-05-27 08:20:21 -03:00
|
|
|
# wbits=0 only supported since zlib v1.2.3.5
|
|
|
|
# Register "1.2.3" as "1.2.3.0"
|
2018-02-18 23:45:11 -04:00
|
|
|
# or "1.2.0-linux","1.2.0.f","1.2.0.f-linux"
|
|
|
|
v = zlib.ZLIB_RUNTIME_VERSION.split('-', 1)[0].split('.')
|
|
|
|
if len(v) < 4:
|
|
|
|
v.append('0')
|
|
|
|
elif not v[-1].isnumeric():
|
|
|
|
v[-1] = '0'
|
|
|
|
|
|
|
|
v = tuple(map(int, v))
|
|
|
|
supports_wbits_0 = v >= (1, 2, 3, 5)
|
2016-05-27 08:20:21 -03:00
|
|
|
|
2016-05-27 04:32:11 -03:00
|
|
|
co = zlib.compressobj(level=1, wbits=15)
|
|
|
|
zlib15 = co.compress(HAMLET_SCENE) + co.flush()
|
|
|
|
self.assertEqual(zlib.decompress(zlib15, 15), HAMLET_SCENE)
|
2016-05-27 08:20:21 -03:00
|
|
|
if supports_wbits_0:
|
|
|
|
self.assertEqual(zlib.decompress(zlib15, 0), HAMLET_SCENE)
|
2016-05-27 04:32:11 -03:00
|
|
|
self.assertEqual(zlib.decompress(zlib15, 32 + 15), HAMLET_SCENE)
|
|
|
|
with self.assertRaisesRegex(zlib.error, 'invalid window size'):
|
|
|
|
zlib.decompress(zlib15, 14)
|
|
|
|
dco = zlib.decompressobj(wbits=32 + 15)
|
|
|
|
self.assertEqual(dco.decompress(zlib15), HAMLET_SCENE)
|
|
|
|
dco = zlib.decompressobj(wbits=14)
|
|
|
|
with self.assertRaisesRegex(zlib.error, 'invalid window size'):
|
|
|
|
dco.decompress(zlib15)
|
|
|
|
|
|
|
|
co = zlib.compressobj(level=1, wbits=9)
|
|
|
|
zlib9 = co.compress(HAMLET_SCENE) + co.flush()
|
|
|
|
self.assertEqual(zlib.decompress(zlib9, 9), HAMLET_SCENE)
|
|
|
|
self.assertEqual(zlib.decompress(zlib9, 15), HAMLET_SCENE)
|
2016-05-27 08:20:21 -03:00
|
|
|
if supports_wbits_0:
|
|
|
|
self.assertEqual(zlib.decompress(zlib9, 0), HAMLET_SCENE)
|
2016-05-27 04:32:11 -03:00
|
|
|
self.assertEqual(zlib.decompress(zlib9, 32 + 9), HAMLET_SCENE)
|
|
|
|
dco = zlib.decompressobj(wbits=32 + 9)
|
|
|
|
self.assertEqual(dco.decompress(zlib9), HAMLET_SCENE)
|
|
|
|
|
|
|
|
co = zlib.compressobj(level=1, wbits=-15)
|
|
|
|
deflate15 = co.compress(HAMLET_SCENE) + co.flush()
|
|
|
|
self.assertEqual(zlib.decompress(deflate15, -15), HAMLET_SCENE)
|
|
|
|
dco = zlib.decompressobj(wbits=-15)
|
|
|
|
self.assertEqual(dco.decompress(deflate15), HAMLET_SCENE)
|
|
|
|
|
|
|
|
co = zlib.compressobj(level=1, wbits=-9)
|
|
|
|
deflate9 = co.compress(HAMLET_SCENE) + co.flush()
|
|
|
|
self.assertEqual(zlib.decompress(deflate9, -9), HAMLET_SCENE)
|
|
|
|
self.assertEqual(zlib.decompress(deflate9, -15), HAMLET_SCENE)
|
|
|
|
dco = zlib.decompressobj(wbits=-9)
|
|
|
|
self.assertEqual(dco.decompress(deflate9), HAMLET_SCENE)
|
|
|
|
|
|
|
|
co = zlib.compressobj(level=1, wbits=16 + 15)
|
|
|
|
gzip = co.compress(HAMLET_SCENE) + co.flush()
|
|
|
|
self.assertEqual(zlib.decompress(gzip, 16 + 15), HAMLET_SCENE)
|
|
|
|
self.assertEqual(zlib.decompress(gzip, 32 + 15), HAMLET_SCENE)
|
|
|
|
dco = zlib.decompressobj(32 + 15)
|
|
|
|
self.assertEqual(dco.decompress(gzip), HAMLET_SCENE)
|
|
|
|
|
2021-09-02 12:02:59 -03:00
|
|
|
for wbits in (-15, 15, 31):
|
|
|
|
with self.subTest(wbits=wbits):
|
|
|
|
expected = HAMLET_SCENE
|
|
|
|
actual = zlib.decompress(
|
|
|
|
zlib.compress(HAMLET_SCENE, wbits=wbits), wbits=wbits
|
|
|
|
)
|
|
|
|
self.assertEqual(expected, actual)
|
2010-05-07 14:04:02 -03:00
|
|
|
|
2003-02-03 16:45:52 -04:00
|
|
|
def choose_lines(source, number, seed=None, generator=random):
|
|
|
|
"""Return a list of number lines randomly chosen from the source"""
|
|
|
|
if seed is not None:
|
|
|
|
generator.seed(seed)
|
|
|
|
sources = source.split('\n')
|
|
|
|
return [generator.choice(sources) for n in range(number)]
|
|
|
|
|
|
|
|
|
2007-05-22 19:44:07 -03:00
|
|
|
HAMLET_SCENE = b"""
|
2000-10-23 14:22:08 -03:00
|
|
|
LAERTES
|
1997-08-15 12:59:43 -03:00
|
|
|
|
|
|
|
O, fear me not.
|
|
|
|
I stay too long: but here my father comes.
|
|
|
|
|
|
|
|
Enter POLONIUS
|
|
|
|
|
|
|
|
A double blessing is a double grace,
|
|
|
|
Occasion smiles upon a second leave.
|
|
|
|
|
2000-10-23 14:22:08 -03:00
|
|
|
LORD POLONIUS
|
1997-08-15 12:59:43 -03:00
|
|
|
|
|
|
|
Yet here, Laertes! aboard, aboard, for shame!
|
|
|
|
The wind sits in the shoulder of your sail,
|
|
|
|
And you are stay'd for. There; my blessing with thee!
|
|
|
|
And these few precepts in thy memory
|
|
|
|
See thou character. Give thy thoughts no tongue,
|
|
|
|
Nor any unproportioned thought his act.
|
|
|
|
Be thou familiar, but by no means vulgar.
|
|
|
|
Those friends thou hast, and their adoption tried,
|
|
|
|
Grapple them to thy soul with hoops of steel;
|
|
|
|
But do not dull thy palm with entertainment
|
|
|
|
Of each new-hatch'd, unfledged comrade. Beware
|
|
|
|
Of entrance to a quarrel, but being in,
|
|
|
|
Bear't that the opposed may beware of thee.
|
|
|
|
Give every man thy ear, but few thy voice;
|
|
|
|
Take each man's censure, but reserve thy judgment.
|
|
|
|
Costly thy habit as thy purse can buy,
|
|
|
|
But not express'd in fancy; rich, not gaudy;
|
|
|
|
For the apparel oft proclaims the man,
|
|
|
|
And they in France of the best rank and station
|
|
|
|
Are of a most select and generous chief in that.
|
|
|
|
Neither a borrower nor a lender be;
|
|
|
|
For loan oft loses both itself and friend,
|
|
|
|
And borrowing dulls the edge of husbandry.
|
|
|
|
This above all: to thine ownself be true,
|
|
|
|
And it must follow, as the night the day,
|
|
|
|
Thou canst not then be false to any man.
|
|
|
|
Farewell: my blessing season this in thee!
|
|
|
|
|
2000-10-23 14:22:08 -03:00
|
|
|
LAERTES
|
1997-08-15 12:59:43 -03:00
|
|
|
|
|
|
|
Most humbly do I take my leave, my lord.
|
|
|
|
|
2000-10-23 14:22:08 -03:00
|
|
|
LORD POLONIUS
|
1997-08-15 12:59:43 -03:00
|
|
|
|
|
|
|
The time invites you; go; your servants tend.
|
|
|
|
|
2000-10-23 14:22:08 -03:00
|
|
|
LAERTES
|
1997-08-15 12:59:43 -03:00
|
|
|
|
|
|
|
Farewell, Ophelia; and remember well
|
|
|
|
What I have said to you.
|
|
|
|
|
2000-10-23 14:22:08 -03:00
|
|
|
OPHELIA
|
1997-08-15 12:59:43 -03:00
|
|
|
|
|
|
|
'Tis in my memory lock'd,
|
|
|
|
And you yourself shall keep the key of it.
|
|
|
|
|
2000-10-23 14:22:08 -03:00
|
|
|
LAERTES
|
1997-08-15 12:59:43 -03:00
|
|
|
|
|
|
|
Farewell.
|
|
|
|
"""
|
2003-02-03 16:45:52 -04:00
|
|
|
|
|
|
|
|
2023-02-04 16:07:30 -04:00
|
|
|
class ZlibDecompressorTest(unittest.TestCase):
|
2022-10-16 23:10:58 -03:00
|
|
|
# Test adopted from test_bz2.py
|
|
|
|
TEXT = HAMLET_SCENE
|
|
|
|
DATA = zlib.compress(HAMLET_SCENE)
|
|
|
|
BAD_DATA = b"Not a valid deflate block"
|
2023-02-04 16:07:30 -04:00
|
|
|
BIG_TEXT = DATA * ((128 * 1024 // len(DATA)) + 1)
|
|
|
|
BIG_DATA = zlib.compress(BIG_TEXT)
|
|
|
|
|
2022-10-16 23:10:58 -03:00
|
|
|
def test_Constructor(self):
|
2023-02-04 16:07:30 -04:00
|
|
|
self.assertRaises(TypeError, zlib._ZlibDecompressor, "ASDA")
|
|
|
|
self.assertRaises(TypeError, zlib._ZlibDecompressor, -15, "notbytes")
|
|
|
|
self.assertRaises(TypeError, zlib._ZlibDecompressor, -15, b"bytes", 5)
|
2022-10-16 23:10:58 -03:00
|
|
|
|
|
|
|
def testDecompress(self):
|
|
|
|
zlibd = zlib._ZlibDecompressor()
|
|
|
|
self.assertRaises(TypeError, zlibd.decompress)
|
|
|
|
text = zlibd.decompress(self.DATA)
|
|
|
|
self.assertEqual(text, self.TEXT)
|
|
|
|
|
|
|
|
def testDecompressChunks10(self):
|
|
|
|
zlibd = zlib._ZlibDecompressor()
|
|
|
|
text = b''
|
|
|
|
n = 0
|
|
|
|
while True:
|
|
|
|
str = self.DATA[n*10:(n+1)*10]
|
|
|
|
if not str:
|
|
|
|
break
|
|
|
|
text += zlibd.decompress(str)
|
|
|
|
n += 1
|
|
|
|
self.assertEqual(text, self.TEXT)
|
|
|
|
|
|
|
|
def testDecompressUnusedData(self):
|
|
|
|
zlibd = zlib._ZlibDecompressor()
|
|
|
|
unused_data = b"this is unused data"
|
|
|
|
text = zlibd.decompress(self.DATA+unused_data)
|
|
|
|
self.assertEqual(text, self.TEXT)
|
|
|
|
self.assertEqual(zlibd.unused_data, unused_data)
|
|
|
|
|
|
|
|
def testEOFError(self):
|
|
|
|
zlibd = zlib._ZlibDecompressor()
|
|
|
|
text = zlibd.decompress(self.DATA)
|
|
|
|
self.assertRaises(EOFError, zlibd.decompress, b"anything")
|
|
|
|
self.assertRaises(EOFError, zlibd.decompress, b"")
|
|
|
|
|
|
|
|
@support.skip_if_pgo_task
|
|
|
|
@bigmemtest(size=_4G + 100, memuse=3.3)
|
|
|
|
def testDecompress4G(self, size):
|
|
|
|
# "Test zlib._ZlibDecompressor.decompress() with >4GiB input"
|
2023-08-25 06:37:27 -03:00
|
|
|
blocksize = min(10 * 1024 * 1024, size)
|
2022-10-16 23:10:58 -03:00
|
|
|
block = random.randbytes(blocksize)
|
|
|
|
try:
|
2023-08-25 06:37:27 -03:00
|
|
|
data = block * ((size-1) // blocksize + 1)
|
2022-10-16 23:10:58 -03:00
|
|
|
compressed = zlib.compress(data)
|
|
|
|
zlibd = zlib._ZlibDecompressor()
|
|
|
|
decompressed = zlibd.decompress(compressed)
|
|
|
|
self.assertTrue(decompressed == data)
|
|
|
|
finally:
|
|
|
|
data = None
|
|
|
|
compressed = None
|
|
|
|
decompressed = None
|
|
|
|
|
|
|
|
def testPickle(self):
|
|
|
|
for proto in range(pickle.HIGHEST_PROTOCOL + 1):
|
|
|
|
with self.assertRaises(TypeError):
|
|
|
|
pickle.dumps(zlib._ZlibDecompressor(), proto)
|
|
|
|
|
|
|
|
def testDecompressorChunksMaxsize(self):
|
|
|
|
zlibd = zlib._ZlibDecompressor()
|
|
|
|
max_length = 100
|
|
|
|
out = []
|
|
|
|
|
|
|
|
# Feed some input
|
|
|
|
len_ = len(self.BIG_DATA) - 64
|
|
|
|
out.append(zlibd.decompress(self.BIG_DATA[:len_],
|
|
|
|
max_length=max_length))
|
|
|
|
self.assertFalse(zlibd.needs_input)
|
|
|
|
self.assertEqual(len(out[-1]), max_length)
|
|
|
|
|
|
|
|
# Retrieve more data without providing more input
|
|
|
|
out.append(zlibd.decompress(b'', max_length=max_length))
|
|
|
|
self.assertFalse(zlibd.needs_input)
|
|
|
|
self.assertEqual(len(out[-1]), max_length)
|
|
|
|
|
|
|
|
# Retrieve more data while providing more input
|
|
|
|
out.append(zlibd.decompress(self.BIG_DATA[len_:],
|
|
|
|
max_length=max_length))
|
|
|
|
self.assertLessEqual(len(out[-1]), max_length)
|
|
|
|
|
|
|
|
# Retrieve remaining uncompressed data
|
|
|
|
while not zlibd.eof:
|
|
|
|
out.append(zlibd.decompress(b'', max_length=max_length))
|
|
|
|
self.assertLessEqual(len(out[-1]), max_length)
|
|
|
|
|
|
|
|
out = b"".join(out)
|
|
|
|
self.assertEqual(out, self.BIG_TEXT)
|
|
|
|
self.assertEqual(zlibd.unused_data, b"")
|
|
|
|
|
|
|
|
def test_decompressor_inputbuf_1(self):
|
|
|
|
# Test reusing input buffer after moving existing
|
|
|
|
# contents to beginning
|
|
|
|
zlibd = zlib._ZlibDecompressor()
|
|
|
|
out = []
|
|
|
|
|
|
|
|
# Create input buffer and fill it
|
|
|
|
self.assertEqual(zlibd.decompress(self.DATA[:100],
|
|
|
|
max_length=0), b'')
|
|
|
|
|
|
|
|
# Retrieve some results, freeing capacity at beginning
|
|
|
|
# of input buffer
|
|
|
|
out.append(zlibd.decompress(b'', 2))
|
|
|
|
|
|
|
|
# Add more data that fits into input buffer after
|
|
|
|
# moving existing data to beginning
|
|
|
|
out.append(zlibd.decompress(self.DATA[100:105], 15))
|
|
|
|
|
|
|
|
# Decompress rest of data
|
|
|
|
out.append(zlibd.decompress(self.DATA[105:]))
|
|
|
|
self.assertEqual(b''.join(out), self.TEXT)
|
|
|
|
|
|
|
|
def test_decompressor_inputbuf_2(self):
|
|
|
|
# Test reusing input buffer by appending data at the
|
|
|
|
# end right away
|
|
|
|
zlibd = zlib._ZlibDecompressor()
|
|
|
|
out = []
|
|
|
|
|
|
|
|
# Create input buffer and empty it
|
|
|
|
self.assertEqual(zlibd.decompress(self.DATA[:200],
|
|
|
|
max_length=0), b'')
|
|
|
|
out.append(zlibd.decompress(b''))
|
|
|
|
|
|
|
|
# Fill buffer with new data
|
|
|
|
out.append(zlibd.decompress(self.DATA[200:280], 2))
|
|
|
|
|
|
|
|
# Append some more data, not enough to require resize
|
|
|
|
out.append(zlibd.decompress(self.DATA[280:300], 2))
|
|
|
|
|
|
|
|
# Decompress rest of data
|
|
|
|
out.append(zlibd.decompress(self.DATA[300:]))
|
|
|
|
self.assertEqual(b''.join(out), self.TEXT)
|
|
|
|
|
|
|
|
def test_decompressor_inputbuf_3(self):
|
|
|
|
# Test reusing input buffer after extending it
|
|
|
|
|
|
|
|
zlibd = zlib._ZlibDecompressor()
|
|
|
|
out = []
|
|
|
|
|
|
|
|
# Create almost full input buffer
|
|
|
|
out.append(zlibd.decompress(self.DATA[:200], 5))
|
|
|
|
|
|
|
|
# Add even more data to it, requiring resize
|
|
|
|
out.append(zlibd.decompress(self.DATA[200:300], 5))
|
|
|
|
|
|
|
|
# Decompress rest of data
|
|
|
|
out.append(zlibd.decompress(self.DATA[300:]))
|
|
|
|
self.assertEqual(b''.join(out), self.TEXT)
|
|
|
|
|
|
|
|
def test_failure(self):
|
|
|
|
zlibd = zlib._ZlibDecompressor()
|
|
|
|
self.assertRaises(Exception, zlibd.decompress, self.BAD_DATA * 30)
|
|
|
|
# Previously, a second call could crash due to internal inconsistency
|
|
|
|
self.assertRaises(Exception, zlibd.decompress, self.BAD_DATA * 30)
|
|
|
|
|
|
|
|
@support.refcount_test
|
|
|
|
def test_refleaks_in___init__(self):
|
|
|
|
gettotalrefcount = support.get_attribute(sys, 'gettotalrefcount')
|
|
|
|
zlibd = zlib._ZlibDecompressor()
|
|
|
|
refs_before = gettotalrefcount()
|
|
|
|
for i in range(100):
|
|
|
|
zlibd.__init__()
|
|
|
|
self.assertAlmostEqual(gettotalrefcount() - refs_before, 0, delta=10)
|
|
|
|
|
|
|
|
|
2015-11-20 04:13:35 -04:00
|
|
|
class CustomInt:
|
2019-02-25 11:57:58 -04:00
|
|
|
def __index__(self):
|
2015-11-20 04:13:35 -04:00
|
|
|
return 100
|
|
|
|
|
|
|
|
|
2003-02-03 16:45:52 -04:00
|
|
|
if __name__ == "__main__":
|
2015-04-13 17:00:43 -03:00
|
|
|
unittest.main()
|