diff options
Diffstat (limited to 'Lib')
-rw-r--r-- | Lib/ctypes/__init__.py | 5 | ||||
-rw-r--r-- | Lib/ctypes/test/test_arrays.py | 2 | ||||
-rw-r--r-- | Lib/ctypes/test/test_callbacks.py | 4 | ||||
-rw-r--r-- | Lib/ctypes/test/test_cfuncs.py | 12 | ||||
-rw-r--r-- | Lib/ctypes/test/test_functions.py | 12 | ||||
-rw-r--r-- | Lib/ctypes/test/test_repr.py | 2 | ||||
-rw-r--r-- | Lib/distutils/dep_util.py | 3 | ||||
-rw-r--r-- | Lib/httplib.py | 4 | ||||
-rw-r--r-- | Lib/imaplib.py | 4 | ||||
-rwxr-xr-x | Lib/smtplib.py | 6 | ||||
-rw-r--r-- | Lib/test/crashers/infinite_rec_1.py | 11 | ||||
-rw-r--r-- | Lib/test/crashers/infinite_rec_2.py | 10 | ||||
-rw-r--r-- | Lib/test/test_descr.py | 18 | ||||
-rw-r--r-- | Lib/test/test_ssl.py | 13 | ||||
-rw-r--r-- | Lib/test/test_uuid.py | 12 |
15 files changed, 78 insertions, 40 deletions
diff --git a/Lib/ctypes/__init__.py b/Lib/ctypes/__init__.py index f55d194b8f..c4131277e9 100644 --- a/Lib/ctypes/__init__.py +++ b/Lib/ctypes/__init__.py @@ -188,6 +188,11 @@ class c_double(_SimpleCData): _type_ = "d" _check_size(c_double) +class c_longdouble(_SimpleCData): + _type_ = "D" +if sizeof(c_longdouble) == sizeof(c_double): + c_longdouble = c_double + if _calcsize("l") == _calcsize("q"): # if long and long long have the same size, make c_longlong an alias for c_long c_longlong = c_long diff --git a/Lib/ctypes/test/test_arrays.py b/Lib/ctypes/test/test_arrays.py index f4870139ca..f8bce5a976 100644 --- a/Lib/ctypes/test/test_arrays.py +++ b/Lib/ctypes/test/test_arrays.py @@ -4,7 +4,7 @@ from ctypes import * formats = "bBhHiIlLqQfd" formats = c_byte, c_ubyte, c_short, c_ushort, c_int, c_uint, \ - c_long, c_ulonglong, c_float, c_double + c_long, c_ulonglong, c_float, c_double, c_longdouble class ArrayTestCase(unittest.TestCase): def test_simple(self): diff --git a/Lib/ctypes/test/test_callbacks.py b/Lib/ctypes/test/test_callbacks.py index 9b2ea8c9a4..d870eb424c 100644 --- a/Lib/ctypes/test/test_callbacks.py +++ b/Lib/ctypes/test/test_callbacks.py @@ -77,6 +77,10 @@ class Callbacks(unittest.TestCase): self.check_type(c_double, 3.14) self.check_type(c_double, -3.14) + def test_longdouble(self): + self.check_type(c_longdouble, 3.14) + self.check_type(c_longdouble, -3.14) + def test_char(self): self.check_type(c_char, b"x") self.check_type(c_char, b"a") diff --git a/Lib/ctypes/test/test_cfuncs.py b/Lib/ctypes/test/test_cfuncs.py index 63564a80ab..8f97fc46a1 100644 --- a/Lib/ctypes/test/test_cfuncs.py +++ b/Lib/ctypes/test/test_cfuncs.py @@ -158,6 +158,18 @@ class CFunctions(unittest.TestCase): self.failUnlessEqual(self._dll.tf_bd(0, 42.), 14.) self.failUnlessEqual(self.S(), 42) + def test_longdouble(self): + self._dll.tf_D.restype = c_longdouble + self._dll.tf_D.argtypes = (c_longdouble,) + self.failUnlessEqual(self._dll.tf_D(42.), 14.) + self.failUnlessEqual(self.S(), 42) + + def test_longdouble_plus(self): + self._dll.tf_bD.restype = c_longdouble + self._dll.tf_bD.argtypes = (c_byte, c_longdouble) + self.failUnlessEqual(self._dll.tf_bD(0, 42.), 14.) + self.failUnlessEqual(self.S(), 42) + def test_callwithresult(self): def process_result(result): return result * 2 diff --git a/Lib/ctypes/test/test_functions.py b/Lib/ctypes/test/test_functions.py index d7a3edf7d7..3af11cc5de 100644 --- a/Lib/ctypes/test/test_functions.py +++ b/Lib/ctypes/test/test_functions.py @@ -143,6 +143,18 @@ class FunctionTestCase(unittest.TestCase): self.failUnlessEqual(result, -21) self.failUnlessEqual(type(result), float) + def test_longdoubleresult(self): + f = dll._testfunc_D_bhilfD + f.argtypes = [c_byte, c_short, c_int, c_long, c_float, c_longdouble] + f.restype = c_longdouble + result = f(1, 2, 3, 4, 5.0, 6.0) + self.failUnlessEqual(result, 21) + self.failUnlessEqual(type(result), float) + + result = f(-1, -2, -3, -4, -5.0, -6.0) + self.failUnlessEqual(result, -21) + self.failUnlessEqual(type(result), float) + def test_longlongresult(self): try: c_longlong diff --git a/Lib/ctypes/test/test_repr.py b/Lib/ctypes/test/test_repr.py index 8e69444780..3f1e8191da 100644 --- a/Lib/ctypes/test/test_repr.py +++ b/Lib/ctypes/test/test_repr.py @@ -4,7 +4,7 @@ import unittest subclasses = [] for base in [c_byte, c_short, c_int, c_long, c_longlong, c_ubyte, c_ushort, c_uint, c_ulong, c_ulonglong, - c_float, c_double, c_bool]: + c_float, c_double, c_longdouble, c_bool]: class X(base): pass subclasses.append(X) diff --git a/Lib/distutils/dep_util.py b/Lib/distutils/dep_util.py index a9d589a256..07b3549c6f 100644 --- a/Lib/distutils/dep_util.py +++ b/Lib/distutils/dep_util.py @@ -17,7 +17,8 @@ def newer (source, target): Raise DistutilsFileError if 'source' does not exist. """ if not os.path.exists(source): - raise DistutilsFileError("file '%s' does not exist" % source) + raise DistutilsFileError("file '%s' does not exist" % + os.path.abspath(source)) if not os.path.exists(target): return 1 diff --git a/Lib/httplib.py b/Lib/httplib.py index a6ac4e3034..3a830182d6 100644 --- a/Lib/httplib.py +++ b/Lib/httplib.py @@ -71,6 +71,7 @@ import io import mimetools import socket from urlparse import urlsplit +import warnings __all__ = ["HTTPResponse", "HTTPConnection", "HTTPException", "NotConnected", "UnknownProtocol", @@ -988,6 +989,9 @@ else: def FakeSocket (sock, sslobj): + warnings.warn("FakeSocket is deprecated, and won't be in 3.x. " + + "Use the result of ssl.sslsocket directly instead.", + DeprecationWarning, stacklevel=2) return sslobj __all__.append("HTTPSConnection") diff --git a/Lib/imaplib.py b/Lib/imaplib.py index 0a973720bd..78d17f8599 100644 --- a/Lib/imaplib.py +++ b/Lib/imaplib.py @@ -1165,7 +1165,6 @@ else: def readline(self): """Read line from remote.""" - # NB: socket.ssl needs a "readline" method, or perhaps a "makefile" method. line = [] while 1: char = self.sslobj.read(1) @@ -1175,7 +1174,6 @@ else: def send(self, data): """Send data to remote.""" - # NB: socket.ssl needs a "sendall" method to match socket objects. bytes = len(data) while bytes > 0: sent = self.sslobj.write(data) @@ -1201,7 +1199,7 @@ else: def ssl(self): """Return SSLObject instance used to communicate with the IMAP4 server. - ssl = <instance>.socket.ssl() + ssl = ssl.sslsocket(<instance>.socket) """ return self.sslobj diff --git a/Lib/smtplib.py b/Lib/smtplib.py index 7423ae0126..5e4ebe8e31 100755 --- a/Lib/smtplib.py +++ b/Lib/smtplib.py @@ -161,7 +161,6 @@ try: except ImportError: _have_ssl = False else: - class SSLFakeFile: """A fake file like object that really wraps a SSLObject. @@ -722,9 +721,8 @@ if _have_ssl: def _get_socket(self, host, port, timeout): if self.debuglevel > 0: print('connect:', (host, port), file=stderr) self.sock = socket.create_connection((host, port), timeout) - sslobj = socket.ssl(self.sock, self.keyfile, self.certfile) - self.sock = SSLFakeSocket(self.sock, sslobj) - self.file = SSLFakeFile(sslobj) + self.sock = ssl.sslsocket(self.sock, self.keyfile, self.certfile) + self.file = SSLFakeFile(self.sock) __all__.append("SMTP_SSL") diff --git a/Lib/test/crashers/infinite_rec_1.py b/Lib/test/crashers/infinite_rec_1.py deleted file mode 100644 index 573a509b5f..0000000000 --- a/Lib/test/crashers/infinite_rec_1.py +++ /dev/null @@ -1,11 +0,0 @@ - -# http://python.org/sf/1202533 - -import new, operator - -class A: - pass -A.__mul__ = new.instancemethod(operator.mul, None, A) - -if __name__ == '__main__': - A()*2 # segfault: infinite recursion in C diff --git a/Lib/test/crashers/infinite_rec_2.py b/Lib/test/crashers/infinite_rec_2.py deleted file mode 100644 index 5a14b33eaa..0000000000 --- a/Lib/test/crashers/infinite_rec_2.py +++ /dev/null @@ -1,10 +0,0 @@ - -# http://python.org/sf/1202533 - -class A(str): - __get__ = getattr - -if __name__ == '__main__': - a = A('a') - A.a = a - a.a # segfault: infinite recursion in C diff --git a/Lib/test/test_descr.py b/Lib/test/test_descr.py index bfa6a642ec..12bec1a304 100644 --- a/Lib/test/test_descr.py +++ b/Lib/test/test_descr.py @@ -4,6 +4,7 @@ from test.test_support import verify, vereq, verbose, TestFailed, TESTFN from test.test_support import get_original_stdout from copy import deepcopy import types +import new def veris(a, b): if a is not b: @@ -1834,6 +1835,10 @@ def specials(): ## unsafecmp(1, 1L) ## unsafecmp(1L, 1) +def recursions(): + if verbose: + print("Testing recursion checks ...") + ## class Letter(str): ## def __new__(cls, letter): ## if letter == 'EPS': @@ -1843,7 +1848,6 @@ def specials(): ## if not self: ## return 'EPS' ## return self - ## # sys.stdout needs to be the original to trigger the recursion bug ## import sys ## test_stdout = sys.stdout @@ -1857,6 +1861,17 @@ def specials(): ## raise TestFailed, "expected a RuntimeError for print recursion" ## sys.stdout = test_stdout + # Bug #1202533. + class A(object): + pass + A.__mul__ = new.instancemethod(lambda self, x: self * x, None, A) + try: + A()*2 + except RuntimeError: + pass + else: + raise TestFailed("expected a RuntimeError") + def weakrefs(): if verbose: print("Testing weak references...") import weakref @@ -4153,6 +4168,7 @@ def test_main(): overloading() methods() specials() + recursions() weakrefs() properties() supers() diff --git a/Lib/test/test_ssl.py b/Lib/test/test_ssl.py index 35c6af994c..04daab2f36 100644 --- a/Lib/test/test_ssl.py +++ b/Lib/test/test_ssl.py @@ -137,18 +137,15 @@ class ConnectedTests(unittest.TestCase): cert = c2.getpeercert() if not cert: raise test_support.TestFailed("Can't get peer certificate.") + if test_support.verbose: + sys.stdout.write(pprint.pformat(cert) + '\n') if not cert.has_key('subject'): raise test_support.TestFailed( "No subject field in certificate: %s." % pprint.pformat(cert)) - if not (cert['subject'].has_key('organizationName')): - raise test_support.TestFailed( - "No 'organizationName' field in certificate subject: %s." % - pprint.pformat(cert)) - if (cert['subject']['organizationName'] != - "Python Software Foundation"): + if not ('organizationName', 'Python Software Foundation') in cert['subject']: raise test_support.TestFailed( - "Invalid 'organizationName' field in certificate subject; " + "Missing or invalid 'organizationName' field in certificate subject; " "should be 'Python Software Foundation'."); c2.close() @@ -336,7 +333,7 @@ def create_cert_files(hostname=None): def test_main(verbose=False): if skip_expected: - raise test_support.TestSkipped("socket module has no ssl support") + raise test_support.TestSkipped("No SSL support") global CERTFILE CERTFILE = os.path.join(os.path.dirname(__file__) or os.curdir, diff --git a/Lib/test/test_uuid.py b/Lib/test/test_uuid.py index 5ccdcb1926..92d62946e1 100644 --- a/Lib/test/test_uuid.py +++ b/Lib/test/test_uuid.py @@ -364,6 +364,12 @@ class TestUUID(TestCase): self.assertEqual(node1, node2) def test_uuid1(self): + # uuid1 requires ctypes. + try: + import ctypes + except ImportError: + return + equal = self.assertEqual # Make sure uuid1() generates UUIDs that are actually version 1. @@ -417,6 +423,12 @@ class TestUUID(TestCase): equal(str(u), v) def test_uuid4(self): + # uuid4 requires ctypes. + try: + import ctypes + except ImportError: + return + equal = self.assertEqual # Make sure uuid4() generates UUIDs that are actually version 4. |