summaryrefslogtreecommitdiff
path: root/Lib/test
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/test')
-rw-r--r--Lib/test/output/test_extcall15
-rwxr-xr-xLib/test/regrtest.py15
-rw-r--r--Lib/test/test___all__.py5
-rw-r--r--Lib/test/test_ast.py2
-rwxr-xr-xLib/test/test_binascii.py4
-rw-r--r--Lib/test/test_bool.py4
-rw-r--r--Lib/test/test_builtin.py13
-rw-r--r--Lib/test/test_codeop.py4
-rw-r--r--Lib/test/test_collections.py6
-rw-r--r--Lib/test/test_decorators.py36
-rw-r--r--Lib/test/test_extcall.py7
-rw-r--r--Lib/test/test_httplib.py10
-rwxr-xr-xLib/test/test_imageop.py177
-rw-r--r--Lib/test/test_macfs.py78
-rw-r--r--Lib/test/test_macostools.py6
-rw-r--r--Lib/test/test_marshal.py24
-rw-r--r--Lib/test/test_rgbimg.py70
-rw-r--r--Lib/test/test_socket.py2
-rw-r--r--Lib/test/test_sundry.py133
-rw-r--r--Lib/test/test_urllib2net.py15
-rw-r--r--Lib/test/test_xml_etree.py2
-rw-r--r--Lib/test/test_xml_etree_c.py2
-rw-r--r--Lib/test/time_hashlib.py2
23 files changed, 184 insertions, 448 deletions
diff --git a/Lib/test/output/test_extcall b/Lib/test/output/test_extcall
index faf0902718..323fe7ac14 100644
--- a/Lib/test/output/test_extcall
+++ b/Lib/test/output/test_extcall
@@ -9,6 +9,9 @@ test_extcall
(1, 2, 3) {'a': 4, 'b': 5}
(1, 2, 3, 4, 5) {'a': 6, 'b': 7}
(1, 2, 3, 6, 7) {'a': 8, 'b': 9, 'x': 4, 'y': 5}
+(1, 2, 3) {'a': 4, 'b': 5}
+(1, 2, 3, 4, 5) {'a': 6, 'b': 7}
+(1, 2, 3, 6, 7) {'a': 8, 'b': 9, 'x': 4, 'y': 5}
TypeError: g() takes at least 1 positional argument (0 given)
TypeError: g() takes at least 1 positional argument (0 given)
TypeError: g() takes at least 1 positional argument (0 given)
@@ -25,12 +28,12 @@ g() got multiple values for keyword argument 'x'
g() got multiple values for keyword argument 'b'
f() keywords must be strings
h() got an unexpected keyword argument 'e'
-h() argument after * must be a sequence
-dir() argument after * must be a sequence
-NoneType object argument after * must be a sequence
-h() argument after ** must be a dictionary
-dir() argument after ** must be a dictionary
-NoneType object argument after ** must be a dictionary
+h() argument after * must be a sequence, not function
+dir() argument after * must be a sequence, not function
+NoneType object argument after * must be a sequence, not function
+h() argument after ** must be a mapping, not function
+dir() argument after ** must be a mapping, not function
+NoneType object argument after ** must be a mapping, not function
dir() got multiple values for keyword argument 'b'
3 512 True
3
diff --git a/Lib/test/regrtest.py b/Lib/test/regrtest.py
index 1cd553c859..90a030d6ad 100755
--- a/Lib/test/regrtest.py
+++ b/Lib/test/regrtest.py
@@ -1108,7 +1108,6 @@ _expectations = {
test_gdbm
test_linuxaudiodev
test_locale
- test_macfs
test_macostools
test_nis
test_ossaudiodev
@@ -1139,7 +1138,6 @@ _expectations = {
test_gdbm
test_gzip
test_linuxaudiodev
- test_macfs
test_macostools
test_nis
test_ossaudiodev
@@ -1163,7 +1161,6 @@ _expectations = {
test_gdbm
test_linuxaudiodev
test_locale
- test_macfs
test_macostools
test_nis
test_normalization
@@ -1191,7 +1188,6 @@ _expectations = {
test_gdbm
test_linuxaudiodev
test_locale
- test_macfs
test_macostools
test_nis
test_ossaudiodev
@@ -1229,12 +1225,8 @@ class _ExpectedSkips:
if test_timeout.skip_expected:
self.expected.add('test_timeout')
- if sys.maxint == 9223372036854775807:
- self.expected.add('test_rgbimg')
- self.expected.add('test_imageop')
-
if not sys.platform in ("mac", "darwin"):
- MAC_ONLY = ["test_macostools", "test_macfs", "test_aepack",
+ MAC_ONLY = ["test_macostools", "test_aepack",
"test_plistlib", "test_scriptpackages"]
for skip in MAC_ONLY:
self.expected.add(skip)
@@ -1245,6 +1237,11 @@ class _ExpectedSkips:
for skip in WIN_ONLY:
self.expected.add(skip)
+ if sys.platform != 'irix':
+ IRIX_ONLY =["test_imageop"]
+ for skip in IRIX_ONLY:
+ self.expected.add(skip)
+
self.valid = True
def isvalid(self):
diff --git a/Lib/test/test___all__.py b/Lib/test/test___all__.py
index 2c4e103522..cc3780de06 100644
--- a/Lib/test/test___all__.py
+++ b/Lib/test/test___all__.py
@@ -3,10 +3,6 @@ from test.test_support import verbose, run_unittest
import sys
import warnings
-warnings.filterwarnings("ignore",
- "the gopherlib module is deprecated",
- DeprecationWarning,
- "<string>")
class AllTest(unittest.TestCase):
@@ -78,7 +74,6 @@ class AllTest(unittest.TestCase):
self.check_all("getpass")
self.check_all("gettext")
self.check_all("glob")
- self.check_all("gopherlib")
self.check_all("gzip")
self.check_all("heapq")
self.check_all("htmllib")
diff --git a/Lib/test/test_ast.py b/Lib/test/test_ast.py
index 308ddaea8c..b8c1ed9d4d 100644
--- a/Lib/test/test_ast.py
+++ b/Lib/test/test_ast.py
@@ -152,7 +152,7 @@ def run_tests():
#### EVERYTHING BELOW IS GENERATED #####
exec_results = [
('Module', [('FunctionDef', (1, 0), 'f', ('arguments', [], None, None, [], None, None, [], []), [('Pass', (1, 9))], [], None)]),
-('Module', [('ClassDef', (1, 0), 'C', [], [], None, None, [('Pass', (1, 8))])]),
+('Module', [('ClassDef', (1, 0), 'C', [], [], None, None, [('Pass', (1, 8))], [], )]),
('Module', [('FunctionDef', (1, 0), 'f', ('arguments', [], None, None, [], None, None, [], []), [('Return', (1, 8), ('Num', (1, 15), 1))], [], None)]),
('Module', [('Delete', (1, 0), [('Name', (1, 4), 'v', ('Del',))])]),
('Module', [('Assign', (1, 0), [('Name', (1, 0), 'v', ('Store',))], ('Num', (1, 4), 1))]),
diff --git a/Lib/test/test_binascii.py b/Lib/test/test_binascii.py
index 6a295e984e..a4ee7f8984 100755
--- a/Lib/test/test_binascii.py
+++ b/Lib/test/test_binascii.py
@@ -26,10 +26,10 @@ class BinASCIITest(unittest.TestCase):
prefixes.extend(["crc_", "rlecode_", "rledecode_"])
for prefix in prefixes:
name = prefix + suffix
- self.assert_(callable(getattr(binascii, name)))
+ self.assert_(hasattr(getattr(binascii, name), '__call__'))
self.assertRaises(TypeError, getattr(binascii, name))
for name in ("hexlify", "unhexlify"):
- self.assert_(callable(getattr(binascii, name)))
+ self.assert_(hasattr(getattr(binascii, name), '__call__'))
self.assertRaises(TypeError, getattr(binascii, name))
def test_base64valid(self):
diff --git a/Lib/test/test_bool.py b/Lib/test/test_bool.py
index 3788f08776..1fc9c05165 100644
--- a/Lib/test/test_bool.py
+++ b/Lib/test/test_bool.py
@@ -168,8 +168,8 @@ class BoolTest(unittest.TestCase):
self.assertIs(hasattr([], "wobble"), False)
def test_callable(self):
- self.assertIs(callable(len), True)
- self.assertIs(callable(1), False)
+ self.assertIs(hasattr(len, '__call__'), True)
+ self.assertIs(hasattr(1, '__call__'), False)
def test_isinstance(self):
self.assertIs(isinstance(True, bool), True)
diff --git a/Lib/test/test_builtin.py b/Lib/test/test_builtin.py
index 7f1b848110..4e1375a1bf 100644
--- a/Lib/test/test_builtin.py
+++ b/Lib/test/test_builtin.py
@@ -146,20 +146,21 @@ class BuiltinTest(unittest.TestCase):
self.assert_(isinstance(x, int))
self.assertEqual(-x, sys.maxint+1)
+ # XXX(nnorwitz): This test case for callable should probably be removed.
def test_callable(self):
- self.assert_(callable(len))
+ self.assert_(hasattr(len, '__call__'))
def f(): pass
- self.assert_(callable(f))
+ self.assert_(hasattr(f, '__call__'))
class C:
def meth(self): pass
- self.assert_(callable(C))
+ self.assert_(hasattr(C, '__call__'))
x = C()
- self.assert_(callable(x.meth))
- self.assert_(not callable(x))
+ self.assert_(hasattr(x.meth, '__call__'))
+ self.assert_(not hasattr(x, '__call__'))
class D(C):
def __call__(self): pass
y = D()
- self.assert_(callable(y))
+ self.assert_(hasattr(y, '__call__'))
y()
def test_chr(self):
diff --git a/Lib/test/test_codeop.py b/Lib/test/test_codeop.py
index 38a192b387..b3fd18af6a 100644
--- a/Lib/test/test_codeop.py
+++ b/Lib/test/test_codeop.py
@@ -13,8 +13,8 @@ if is_jython:
def unify_callables(d):
for n,v in d.items():
- if callable(v):
- d[n] = callable
+ if hasattr(v, '__call__'):
+ d[n] = True
return d
class CodeopTests(unittest.TestCase):
diff --git a/Lib/test/test_collections.py b/Lib/test/test_collections.py
index a139129007..f5dad7d223 100644
--- a/Lib/test/test_collections.py
+++ b/Lib/test/test_collections.py
@@ -11,7 +11,9 @@ class TestNamedTuple(unittest.TestCase):
self.assertEqual(Point.__slots__, ())
self.assertEqual(Point.__module__, __name__)
self.assertEqual(Point.__getitem__, tuple.__getitem__)
- self.assert_('__getitem__' in Point.__dict__) # superclass methods localized
+ self.assertRaises(ValueError, NamedTuple, 'abc%', 'def ghi')
+ self.assertRaises(ValueError, NamedTuple, 'abc', 'def g%hi')
+ NamedTuple('Point0', 'x1 y2') # Verify that numbers are allowed in names
def test_instance(self):
Point = NamedTuple('Point', 'x y')
@@ -50,8 +52,10 @@ class TestNamedTuple(unittest.TestCase):
def test_main(verbose=None):
+ import collections as CollectionsModule
test_classes = [TestNamedTuple]
test_support.run_unittest(*test_classes)
+ test_support.run_doctest(CollectionsModule, verbose)
if __name__ == "__main__":
test_main(verbose=True)
diff --git a/Lib/test/test_decorators.py b/Lib/test/test_decorators.py
index 2558247b2a..1499004154 100644
--- a/Lib/test/test_decorators.py
+++ b/Lib/test/test_decorators.py
@@ -266,8 +266,44 @@ class TestDecorators(unittest.TestCase):
self.assertEqual(bar(), 42)
self.assertEqual(actions, expected_actions)
+class TestClassDecorators(unittest.TestCase):
+
+ def test_simple(self):
+ def plain(x):
+ x.extra = 'Hello'
+ return x
+ @plain
+ class C(object): pass
+ self.assertEqual(C.extra, 'Hello')
+
+ def test_double(self):
+ def ten(x):
+ x.extra = 10
+ return x
+ def add_five(x):
+ x.extra += 5
+ return x
+
+ @add_five
+ @ten
+ class C(object): pass
+ self.assertEqual(C.extra, 15)
+
+ def test_order(self):
+ def applied_first(x):
+ x.extra = 'first'
+ return x
+ def applied_second(x):
+ x.extra = 'second'
+ return x
+ @applied_second
+ @applied_first
+ class C(object): pass
+ self.assertEqual(C.extra, 'second')
+
def test_main():
test_support.run_unittest(TestDecorators)
+ test_support.run_unittest(TestClassDecorators)
if __name__=="__main__":
test_main()
diff --git a/Lib/test/test_extcall.py b/Lib/test/test_extcall.py
index 552583201c..b183189fcf 100644
--- a/Lib/test/test_extcall.py
+++ b/Lib/test/test_extcall.py
@@ -1,5 +1,6 @@
from test.test_support import verify, verbose, TestFailed, sortdict
from UserList import UserList
+from UserDict import UserDict
def e(a, b):
print(a, b)
@@ -25,6 +26,12 @@ f(1, 2, 3, **{'a':4, 'b':5})
f(1, 2, 3, *(4, 5), **{'a':6, 'b':7})
f(1, 2, 3, x=4, y=5, *(6, 7), **{'a':8, 'b':9})
+
+f(1, 2, 3, **UserDict(a=4, b=5))
+f(1, 2, 3, *(4, 5), **UserDict(a=6, b=7))
+f(1, 2, 3, x=4, y=5, *(6, 7), **UserDict(a=8, b=9))
+
+
# Verify clearing of SF bug #733667
try:
e(c=3)
diff --git a/Lib/test/test_httplib.py b/Lib/test/test_httplib.py
index 035f0b909e..9238eea202 100644
--- a/Lib/test/test_httplib.py
+++ b/Lib/test/test_httplib.py
@@ -194,8 +194,16 @@ class TimeoutTest(TestCase):
httpConn.close()
+class HTTPSTimeoutTest(TestCase):
+# XXX Here should be tests for HTTPS, there isn't any right now!
+
+ def test_attributes(self):
+ # simple test to check it's storing it
+ h = httplib.HTTPSConnection(HOST, PORT, timeout=30)
+ self.assertEqual(h.timeout, 30)
+
def test_main(verbose=None):
- test_support.run_unittest(HeaderTests, OfflineTest, BasicTest, TimeoutTest)
+ test_support.run_unittest(HeaderTests, OfflineTest, BasicTest, TimeoutTest, HTTPSTimeoutTest)
if __name__ == '__main__':
test_main()
diff --git a/Lib/test/test_imageop.py b/Lib/test/test_imageop.py
deleted file mode 100755
index d0794735fa..0000000000
--- a/Lib/test/test_imageop.py
+++ /dev/null
@@ -1,177 +0,0 @@
-#! /usr/bin/env python
-
-"""Test script for the imageop module. This has the side
- effect of partially testing the imgfile module as well.
- Roger E. Masse
-"""
-
-from test.test_support import verbose, unlink
-
-import imageop, uu, os
-
-import warnings
-warnings.filterwarnings("ignore",
- "the rgbimg module is deprecated",
- DeprecationWarning,
- ".*test_imageop")
-
-def main(use_rgbimg=1):
-
- # Create binary test files
- uu.decode(get_qualified_path('testrgb'+os.extsep+'uue'), 'test'+os.extsep+'rgb')
-
- if use_rgbimg:
- image, width, height = getrgbimage('test'+os.extsep+'rgb')
- else:
- image, width, height = getimage('test'+os.extsep+'rgb')
-
- # Return the selected part of image, which should by width by height
- # in size and consist of pixels of psize bytes.
- if verbose:
- print('crop')
- newimage = imageop.crop (image, 4, width, height, 0, 0, 1, 1)
-
- # Return image scaled to size newwidth by newheight. No interpolation
- # is done, scaling is done by simple-minded pixel duplication or removal.
- # Therefore, computer-generated images or dithered images will
- # not look nice after scaling.
- if verbose:
- print('scale')
- scaleimage = imageop.scale(image, 4, width, height, 1, 1)
-
- # Run a vertical low-pass filter over an image. It does so by computing
- # each destination pixel as the average of two vertically-aligned source
- # pixels. The main use of this routine is to forestall excessive flicker
- # if the image two vertically-aligned source pixels, hence the name.
- if verbose:
- print('tovideo')
- videoimage = imageop.tovideo (image, 4, width, height)
-
- # Convert an rgb image to an 8 bit rgb
- if verbose:
- print('rgb2rgb8')
- greyimage = imageop.rgb2rgb8(image, width, height)
-
- # Convert an 8 bit rgb image to a 24 bit rgb image
- if verbose:
- print('rgb82rgb')
- image = imageop.rgb82rgb(greyimage, width, height)
-
- # Convert an rgb image to an 8 bit greyscale image
- if verbose:
- print('rgb2grey')
- greyimage = imageop.rgb2grey(image, width, height)
-
- # Convert an 8 bit greyscale image to a 24 bit rgb image
- if verbose:
- print('grey2rgb')
- image = imageop.grey2rgb(greyimage, width, height)
-
- # Convert a 8-bit deep greyscale image to a 1-bit deep image by
- # thresholding all the pixels. The resulting image is tightly packed
- # and is probably only useful as an argument to mono2grey.
- if verbose:
- print('grey2mono')
- monoimage = imageop.grey2mono (greyimage, width, height, 0)
-
- # monoimage, width, height = getimage('monotest.rgb')
- # Convert a 1-bit monochrome image to an 8 bit greyscale or color image.
- # All pixels that are zero-valued on input get value p0 on output and
- # all one-value input pixels get value p1 on output. To convert a
- # monochrome black-and-white image to greyscale pass the values 0 and
- # 255 respectively.
- if verbose:
- print('mono2grey')
- greyimage = imageop.mono2grey (monoimage, width, height, 0, 255)
-
- # Convert an 8-bit greyscale image to a 1-bit monochrome image using a
- # (simple-minded) dithering algorithm.
- if verbose:
- print('dither2mono')
- monoimage = imageop.dither2mono (greyimage, width, height)
-
- # Convert an 8-bit greyscale image to a 4-bit greyscale image without
- # dithering.
- if verbose:
- print('grey2grey4')
- grey4image = imageop.grey2grey4 (greyimage, width, height)
-
- # Convert an 8-bit greyscale image to a 2-bit greyscale image without
- # dithering.
- if verbose:
- print('grey2grey2')
- grey2image = imageop.grey2grey2 (greyimage, width, height)
-
- # Convert an 8-bit greyscale image to a 2-bit greyscale image with
- # dithering. As for dither2mono, the dithering algorithm is currently
- # very simple.
- if verbose:
- print('dither2grey2')
- grey2image = imageop.dither2grey2 (greyimage, width, height)
-
- # Convert a 4-bit greyscale image to an 8-bit greyscale image.
- if verbose:
- print('grey42grey')
- greyimage = imageop.grey42grey (grey4image, width, height)
-
- # Convert a 2-bit greyscale image to an 8-bit greyscale image.
- if verbose:
- print('grey22grey')
- image = imageop.grey22grey (grey2image, width, height)
-
- # Cleanup
- unlink('test'+os.extsep+'rgb')
-
-def getrgbimage(name):
- """return a tuple consisting of image (in 'imgfile' format but
- using rgbimg instead) width and height"""
-
- import rgbimg
-
- try:
- sizes = rgbimg.sizeofimage(name)
- except rgbimg.error:
- name = get_qualified_path(name)
- sizes = rgbimg.sizeofimage(name)
- if verbose:
- print('rgbimg opening test image: %s, sizes: %s' % (name, str(sizes)))
-
- image = rgbimg.longimagedata(name)
- return (image, sizes[0], sizes[1])
-
-def getimage(name):
- """return a tuple consisting of
- image (in 'imgfile' format) width and height
- """
-
- import imgfile
-
- try:
- sizes = imgfile.getsizes(name)
- except imgfile.error:
- name = get_qualified_path(name)
- sizes = imgfile.getsizes(name)
- if verbose:
- print('imgfile opening test image: %s, sizes: %s' % (name, str(sizes)))
-
- image = imgfile.read(name)
- return (image, sizes[0], sizes[1])
-
-def get_qualified_path(name):
- """ return a more qualified path to name"""
- import sys
- import os
- path = sys.path
- try:
- path = [os.path.dirname(__file__)] + path
- except NameError:
- pass
- for dir in path:
- fullname = os.path.join(dir, name)
- if os.path.exists(fullname):
- return fullname
- return name
-
-# rgbimg (unlike imgfile) is portable to platforms other than SGI.
-# So we prefer to use it.
-main(use_rgbimg=1)
diff --git a/Lib/test/test_macfs.py b/Lib/test/test_macfs.py
deleted file mode 100644
index e25250ba4f..0000000000
--- a/Lib/test/test_macfs.py
+++ /dev/null
@@ -1,78 +0,0 @@
-# Copyright (C) 2003 Python Software Foundation
-
-import unittest
-import warnings
-warnings.filterwarnings("ignore", "macfs.*", DeprecationWarning, __name__)
-import macfs
-import os
-import sys
-import tempfile
-from test import test_support
-
-class TestMacfs(unittest.TestCase):
-
- def setUp(self):
- fp = open(test_support.TESTFN, 'w')
- fp.write('hello world\n')
- fp.close()
-
- def tearDown(self):
- try:
- os.unlink(test_support.TESTFN)
- except:
- pass
-
- def test_fsspec(self):
- fss = macfs.FSSpec(test_support.TESTFN)
- self.assertEqual(os.path.realpath(test_support.TESTFN), fss.as_pathname())
-
- def test_fsref(self):
- fsr = macfs.FSRef(test_support.TESTFN)
- self.assertEqual(os.path.realpath(test_support.TESTFN), fsr.as_pathname())
-
- def test_fsref_unicode(self):
- if sys.getfilesystemencoding():
- testfn_unicode = str(test_support.TESTFN)
- fsr = macfs.FSRef(testfn_unicode)
- self.assertEqual(os.path.realpath(test_support.TESTFN), fsr.as_pathname())
-
- def test_coercion(self):
- fss = macfs.FSSpec(test_support.TESTFN)
- fsr = macfs.FSRef(test_support.TESTFN)
- fss2 = fsr.as_fsspec()
- fsr2 = fss.as_fsref()
- self.assertEqual(fss.as_pathname(), fss2.as_pathname())
- self.assertEqual(fsr.as_pathname(), fsr2.as_pathname())
-
- def test_dates(self):
- import time
- fss = macfs.FSSpec(test_support.TESTFN)
- now = int(time.time())
- fss.SetDates(now, now+1, now+2)
- dates = fss.GetDates()
- self.assertEqual(dates, (now, now+1, now+2))
-
- def test_ctor_type(self):
- fss = macfs.FSSpec(test_support.TESTFN)
- fss.SetCreatorType('Pyth', 'TEXT')
- filecr, filetp = fss.GetCreatorType()
- self.assertEqual((filecr, filetp), ('Pyth', 'TEXT'))
-
- def test_alias(self):
- fss = macfs.FSSpec(test_support.TESTFN)
- alias = fss.NewAlias()
- fss2, changed = alias.Resolve()
- self.assertEqual(changed, 0)
- self.assertEqual(fss.as_pathname(), fss2.as_pathname())
-
-
- def test_fss_alias(self):
- fss = macfs.FSSpec(test_support.TESTFN)
-
-
-def test_main():
- test_support.run_unittest(TestMacfs)
-
-
-if __name__ == '__main__':
- test_main()
diff --git a/Lib/test/test_macostools.py b/Lib/test/test_macostools.py
index f3292ced32..40b690a1f6 100644
--- a/Lib/test/test_macostools.py
+++ b/Lib/test/test_macostools.py
@@ -51,7 +51,11 @@ class TestMacostools(unittest.TestCase):
def test_touched(self):
# This really only tests that nothing unforeseen happens.
- macostools.touched(test_support.TESTFN)
+ import warnings
+ with test_support.guard_warnings_filter():
+ warnings.filterwarnings('ignore', 'macostools.touched*',
+ DeprecationWarning)
+ macostools.touched(test_support.TESTFN)
def test_copy(self):
try:
diff --git a/Lib/test/test_marshal.py b/Lib/test/test_marshal.py
index 2af6ae7c3a..70b192dbd7 100644
--- a/Lib/test/test_marshal.py
+++ b/Lib/test/test_marshal.py
@@ -220,6 +220,30 @@ class BugsTestCase(unittest.TestCase):
except Exception:
pass
+ def test_loads_recursion(self):
+ s = 'c' + ('X' * 4*4) + '{' * 2**20
+ self.assertRaises(ValueError, marshal.loads, s)
+
+ def test_recursion_limit(self):
+ # Create a deeply nested structure.
+ head = last = []
+ # The max stack depth should match the value in Python/marshal.c.
+ MAX_MARSHAL_STACK_DEPTH = 2000
+ for i in range(MAX_MARSHAL_STACK_DEPTH - 2):
+ last.append([0])
+ last = last[-1]
+
+ # Verify we don't blow out the stack with dumps/load.
+ data = marshal.dumps(head)
+ new_head = marshal.loads(data)
+ # Don't use == to compare objects, it can exceed the recursion limit.
+ self.assertEqual(len(new_head), len(head))
+ self.assertEqual(len(new_head[0]), len(head[0]))
+ self.assertEqual(len(new_head[-1]), len(head[-1]))
+
+ last.append([0])
+ self.assertRaises(ValueError, marshal.dumps, head)
+
def test_main():
test_support.run_unittest(IntTestCase,
FloatTestCase,
diff --git a/Lib/test/test_rgbimg.py b/Lib/test/test_rgbimg.py
deleted file mode 100644
index 65a0f422fa..0000000000
--- a/Lib/test/test_rgbimg.py
+++ /dev/null
@@ -1,70 +0,0 @@
-# Testing rgbimg module
-
-import warnings
-warnings.filterwarnings("ignore",
- "the rgbimg module is deprecated",
- DeprecationWarning,
- ".*test_rgbimg$")
-import rgbimg
-
-import os, uu
-
-from test.test_support import verbose, unlink, findfile
-
-class error(Exception):
- pass
-
-print('RGBimg test suite:')
-
-def testimg(rgb_file, raw_file):
- rgb_file = findfile(rgb_file)
- raw_file = findfile(raw_file)
- width, height = rgbimg.sizeofimage(rgb_file)
- rgb = rgbimg.longimagedata(rgb_file)
- if len(rgb) != width * height * 4:
- raise error, 'bad image length'
- raw = open(raw_file, 'rb').read()
- if rgb != raw:
- raise error, \
- 'images don\'t match for '+rgb_file+' and '+raw_file
- for depth in [1, 3, 4]:
- rgbimg.longstoimage(rgb, width, height, depth, '@.rgb')
- os.unlink('@.rgb')
-
-table = [
- ('testrgb'+os.extsep+'uue', 'test'+os.extsep+'rgb'),
- ('testimg'+os.extsep+'uue', 'test'+os.extsep+'rawimg'),
- ('testimgr'+os.extsep+'uue', 'test'+os.extsep+'rawimg'+os.extsep+'rev'),
- ]
-for source, target in table:
- source = findfile(source)
- target = findfile(target)
- if verbose:
- print("uudecoding", source, "->", target, "...")
- uu.decode(source, target)
-
-if verbose:
- print("testing...")
-
-ttob = rgbimg.ttob(0)
-if ttob != 0:
- raise error, 'ttob should start out as zero'
-
-testimg('test'+os.extsep+'rgb', 'test'+os.extsep+'rawimg')
-
-ttob = rgbimg.ttob(1)
-if ttob != 0:
- raise error, 'ttob should be zero'
-
-testimg('test'+os.extsep+'rgb', 'test'+os.extsep+'rawimg'+os.extsep+'rev')
-
-ttob = rgbimg.ttob(0)
-if ttob != 1:
- raise error, 'ttob should be one'
-
-ttob = rgbimg.ttob(0)
-if ttob != 0:
- raise error, 'ttob should be zero'
-
-for source, target in table:
- unlink(findfile(target))
diff --git a/Lib/test/test_socket.py b/Lib/test/test_socket.py
index 5158378603..cfb293fe19 100644
--- a/Lib/test/test_socket.py
+++ b/Lib/test/test_socket.py
@@ -124,7 +124,7 @@ class ThreadableTest:
self.server_ready.wait()
self.client_ready.set()
self.clientSetUp()
- if not callable(test_func):
+ if not hasattr(test_func, '__call__'):
raise TypeError, "test_func must be a callable function"
try:
test_func()
diff --git a/Lib/test/test_sundry.py b/Lib/test/test_sundry.py
index a37aad112d..eb4149f916 100644
--- a/Lib/test/test_sundry.py
+++ b/Lib/test/test_sundry.py
@@ -1,75 +1,72 @@
"""Do a minimal test of all the modules that aren't otherwise tested."""
+from test.test_support import guard_warnings_filter
import warnings
-warnings.filterwarnings('ignore', r".*posixfile module",
- DeprecationWarning, 'posixfile$')
-warnings.filterwarnings("ignore",
- "the gopherlib module is deprecated",
- DeprecationWarning,
- ".*test_sundry")
+with guard_warnings_filter():
+ warnings.filterwarnings('ignore', r".*posixfile",
+ DeprecationWarning)
-from test.test_support import verbose
+ from test.test_support import verbose
-import BaseHTTPServer
-import DocXMLRPCServer
-import CGIHTTPServer
-import SimpleHTTPServer
-import SimpleXMLRPCServer
-import aifc
-import audiodev
-import bdb
-import cgitb
-import cmd
-import code
-import compileall
-import encodings
-import formatter
-import ftplib
-import getpass
-import gopherlib
-import htmlentitydefs
-import ihooks
-import imghdr
-import imputil
-import keyword
-import linecache
-import macurl2path
-import mailcap
-import mimify
-import mutex
-import nntplib
-import nturl2path
-import opcode
-import os2emxpath
-import pdb
-import pipes
-#import poplib
-import posixfile
-import pstats
-import py_compile
-import pydoc
-import rlcompleter
-import sched
-import smtplib
-import sndhdr
-import statvfs
-import sunau
-import sunaudio
-import symbol
-import tabnanny
-import telnetlib
-import timeit
-import toaiff
-import token
-try:
- import tty # not available on Windows
-except ImportError:
- if verbose:
- print("skipping tty")
+ import BaseHTTPServer
+ import DocXMLRPCServer
+ import CGIHTTPServer
+ import SimpleHTTPServer
+ import SimpleXMLRPCServer
+ import aifc
+ import audiodev
+ import bdb
+ import cgitb
+ import cmd
+ import code
+ import compileall
+ import encodings
+ import formatter
+ import ftplib
+ import getpass
+ import htmlentitydefs
+ import ihooks
+ import imghdr
+ import imputil
+ import keyword
+ import linecache
+ import macurl2path
+ import mailcap
+ import mimify
+ import mutex
+ import nntplib
+ import nturl2path
+ import opcode
+ import os2emxpath
+ import pdb
+ import pipes
+ #import poplib
+ import posixfile
+ import pstats
+ import py_compile
+ import pydoc
+ import rlcompleter
+ import sched
+ import smtplib
+ import sndhdr
+ import statvfs
+ import sunau
+ import sunaudio
+ import symbol
+ import tabnanny
+ import telnetlib
+ import timeit
+ import toaiff
+ import token
+ try:
+ import tty # not available on Windows
+ except ImportError:
+ if verbose:
+ print("skipping tty")
-# Can't test the "user" module -- if the user has a ~/.pythonrc.py, it
-# can screw up all sorts of things (esp. if it prints!).
-#import user
-import webbrowser
-import xml
+ # Can't test the "user" module -- if the user has a ~/.pythonrc.py, it
+ # can screw up all sorts of things (esp. if it prints!).
+ #import user
+ import webbrowser
+ import xml
diff --git a/Lib/test/test_urllib2net.py b/Lib/test/test_urllib2net.py
index a52c3dd149..537b738d80 100644
--- a/Lib/test/test_urllib2net.py
+++ b/Lib/test/test_urllib2net.py
@@ -173,19 +173,6 @@ class OtherNetworkTests(unittest.TestCase):
]
self._test_urls(urls, self._extra_handlers())
- def test_gopher(self):
- import warnings
- warnings.filterwarnings("ignore",
- "the gopherlib module is deprecated",
- DeprecationWarning,
- "urllib2$")
- urls = [
- # Thanks to Fred for finding these!
- 'gopher://gopher.lib.ncsu.edu./11/library/stacks/Alex',
- 'gopher://gopher.vt.edu.:10010/10/33',
- ]
- self._test_urls(urls, self._extra_handlers())
-
def test_file(self):
TESTFN = test_support.TESTFN
f = open(TESTFN, 'w')
@@ -274,8 +261,6 @@ class OtherNetworkTests(unittest.TestCase):
def _extra_handlers(self):
handlers = []
- handlers.append(urllib2.GopherHandler)
-
cfh = urllib2.CacheFTPHandler()
cfh.setTimeout(1)
handlers.append(cfh)
diff --git a/Lib/test/test_xml_etree.py b/Lib/test/test_xml_etree.py
index 3e214f8dca..4e21fd9973 100644
--- a/Lib/test/test_xml_etree.py
+++ b/Lib/test/test_xml_etree.py
@@ -36,7 +36,7 @@ def sanity():
"""
def check_method(method):
- if not callable(method):
+ if not hasattr(method, '__call__'):
print(method, "not callable")
def serialize(ET, elem, encoding=None):
diff --git a/Lib/test/test_xml_etree_c.py b/Lib/test/test_xml_etree_c.py
index d9760c6aa5..1479247c92 100644
--- a/Lib/test/test_xml_etree_c.py
+++ b/Lib/test/test_xml_etree_c.py
@@ -34,7 +34,7 @@ def sanity():
"""
def check_method(method):
- if not callable(method):
+ if not hasattr(method, '__call__'):
print(method, "not callable")
def serialize(ET, elem, encoding=None):
diff --git a/Lib/test/time_hashlib.py b/Lib/test/time_hashlib.py
index 5b96d0e62f..df12f83d97 100644
--- a/Lib/test/time_hashlib.py
+++ b/Lib/test/time_hashlib.py
@@ -55,7 +55,7 @@ elif hName == '_hashlib' and len(sys.argv) == 3:
import _hashlib
exec('creatorFunc = lambda x=_hashlib.new : x(%r)' % sys.argv[2])
print("testing speed of _hashlib.new(%r)" % sys.argv[2])
-elif hasattr(hashlib, hName) and callable(getattr(hashlib, hName)):
+elif hasattr(hashlib, hName) and hasattr(getattr(hashlib, hName), '__call__'):
creatorFunc = getattr(hashlib, hName)
print("testing speed of hashlib."+hName, getattr(hashlib, hName))
else: