mirror of
https://github.com/python/cpython.git
synced 2025-10-28 09:10:36 +00:00
First merge from the trunk straight into the py3k branch. I'm not
using the message generated by svnmerge, because it contains a lot of stuff about the Doc tree, which I'm not merging this time due to the way the Doc tree was initially added. I am however adding roman.py which was added later to Doc/tools. I'll try to diff the two Doc trees separately to see if there's stuff I missed.
This commit is contained in:
parent
10c17ba299
commit
af554a0e17
16 changed files with 206 additions and 33 deletions
|
|
@ -612,7 +612,8 @@ class Decimal(object):
|
|||
except ValueError:
|
||||
self._is_special = True
|
||||
self._sign, self._int, self._exp = \
|
||||
context._raise_error(ConversionSyntax)
|
||||
context._raise_error(ConversionSyntax,
|
||||
"Invalid literal for Decimal: %r" % value)
|
||||
return self
|
||||
|
||||
raise TypeError("Cannot convert %r to Decimal" % value)
|
||||
|
|
|
|||
|
|
@ -5,8 +5,7 @@ import sys
|
|||
import unittest
|
||||
import pickle
|
||||
|
||||
from test.test_support import (TESTFN, unlink, run_unittest,
|
||||
guard_warnings_filter)
|
||||
from test.test_support import TESTFN, unlink, run_unittest
|
||||
|
||||
# XXX This is not really enough, each *operation* should be tested!
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
from test.test_support import TESTFN, run_unittest, guard_warnings_filter
|
||||
from test.test_support import TESTFN, run_unittest, catch_warning
|
||||
|
||||
import unittest
|
||||
import os
|
||||
|
|
@ -151,7 +151,7 @@ class ImportTest(unittest.TestCase):
|
|||
self.assert_(y is test.test_support, y.__name__)
|
||||
|
||||
def test_import_initless_directory_warning(self):
|
||||
with guard_warnings_filter():
|
||||
with catch_warning():
|
||||
# Just a random non-package directory we always expect to be
|
||||
# somewhere in sys.path...
|
||||
warnings.simplefilter('error', ImportWarning)
|
||||
|
|
|
|||
|
|
@ -52,7 +52,7 @@ class TestMacostools(unittest.TestCase):
|
|||
def test_touched(self):
|
||||
# This really only tests that nothing unforeseen happens.
|
||||
import warnings
|
||||
with test_support.guard_warnings_filter():
|
||||
with test_support.catch_warning():
|
||||
warnings.filterwarnings('ignore', 'macostools.touched*',
|
||||
DeprecationWarning)
|
||||
macostools.touched(test_support.TESTFN)
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import unittest
|
||||
import __builtin__
|
||||
import warnings
|
||||
from test.test_support import run_unittest, guard_warnings_filter
|
||||
from test.test_support import run_unittest
|
||||
import os
|
||||
from platform import system as platform_system
|
||||
|
||||
|
|
|
|||
|
|
@ -182,7 +182,7 @@ class WichmannHill_TestBasicOps(TestBasicOps):
|
|||
|
||||
def test_bigrand(self):
|
||||
# Verify warnings are raised when randrange is too large for random()
|
||||
with test_support.guard_warnings_filter():
|
||||
with test_support.catch_warning():
|
||||
warnings.filterwarnings("error", "Underlying random")
|
||||
self.assertRaises(UserWarning, self.gen.randrange, 2**60)
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import sys
|
||||
sys.path = ['.'] + sys.path
|
||||
|
||||
from test.test_support import verbose, run_unittest, guard_warnings_filter
|
||||
from test.test_support import verbose, run_unittest, catch_warning
|
||||
import re
|
||||
from re import Scanner
|
||||
import sys, os, traceback
|
||||
|
|
@ -414,7 +414,7 @@ class ReTests(unittest.TestCase):
|
|||
self.pickle_test(pickle)
|
||||
# old pickles expect the _compile() reconstructor in sre module
|
||||
import warnings
|
||||
with guard_warnings_filter():
|
||||
with catch_warning():
|
||||
warnings.filterwarnings("ignore", "The sre module is deprecated",
|
||||
DeprecationWarning)
|
||||
from sre import _compile
|
||||
|
|
|
|||
|
|
@ -50,7 +50,7 @@ def any_err(func, *args):
|
|||
|
||||
def with_warning_restore(func):
|
||||
def _with_warning_restore(*args, **kw):
|
||||
with test.test_support.guard_warnings_filter():
|
||||
with test.test_support.catch_warning():
|
||||
# Grrr, we need this function to warn every time. Without removing
|
||||
# the warningregistry, running test_tarfile then test_struct would fail
|
||||
# on 64-bit platforms.
|
||||
|
|
|
|||
|
|
@ -1,10 +1,10 @@
|
|||
"""Do a minimal test of all the modules that aren't otherwise tested."""
|
||||
|
||||
from test.test_support import guard_warnings_filter
|
||||
from test.test_support import catch_warning
|
||||
import sys
|
||||
import warnings
|
||||
|
||||
with guard_warnings_filter():
|
||||
with catch_warning():
|
||||
from test.test_support import verbose
|
||||
|
||||
import BaseHTTPServer
|
||||
|
|
|
|||
|
|
@ -261,14 +261,6 @@ def open_urlresource(url):
|
|||
fn, _ = urllib.urlretrieve(url, filename)
|
||||
return open(fn)
|
||||
|
||||
@contextlib.contextmanager
|
||||
def guard_warnings_filter():
|
||||
"""Guard the warnings filter from being permanently changed."""
|
||||
original_filters = warnings.filters[:]
|
||||
try:
|
||||
yield
|
||||
finally:
|
||||
warnings.filters = original_filters
|
||||
|
||||
class WarningMessage(object):
|
||||
"Holds the result of the latest showwarning() call"
|
||||
|
|
@ -292,7 +284,7 @@ def catch_warning():
|
|||
|
||||
Use like this:
|
||||
|
||||
with catch_warning as w:
|
||||
with catch_warning() as w:
|
||||
warnings.warn("foo")
|
||||
assert str(w.message) == "foo"
|
||||
"""
|
||||
|
|
|
|||
|
|
@ -61,7 +61,7 @@ class TestModule(unittest.TestCase):
|
|||
def test_options(self):
|
||||
# Uses the private _setoption() function to test the parsing
|
||||
# of command-line warning arguments
|
||||
with test_support.guard_warnings_filter():
|
||||
with test_support.catch_warning():
|
||||
self.assertRaises(warnings._OptionError,
|
||||
warnings._setoption, '1:2:3:4:5:6')
|
||||
self.assertRaises(warnings._OptionError,
|
||||
|
|
|
|||
|
|
@ -4,6 +4,8 @@ import sys
|
|||
import time
|
||||
import unittest
|
||||
import xmlrpclib
|
||||
import SimpleXMLRPCServer
|
||||
import threading
|
||||
from test import test_support
|
||||
|
||||
alist = [{'astring': 'foo@bar.baz.spam',
|
||||
|
|
@ -239,10 +241,108 @@ class BinaryTestCase(unittest.TestCase):
|
|||
self.assertEqual(str(t2), d)
|
||||
|
||||
|
||||
def test_main():
|
||||
test_support.run_unittest(XMLRPCTestCase, HelperTestCase,
|
||||
DateTimeTestCase, BinaryTestCase, FaultTestCase)
|
||||
PORT = None
|
||||
|
||||
def http_server(evt, numrequests):
|
||||
class TestInstanceClass:
|
||||
def div(self, x, y):
|
||||
'''This is the div function'''
|
||||
return x // y
|
||||
|
||||
|
||||
serv = SimpleXMLRPCServer.SimpleXMLRPCServer(("localhost", 0),
|
||||
logRequests=False, bind_and_activate=False)
|
||||
|
||||
try:
|
||||
serv.socket.settimeout(3)
|
||||
serv.server_bind()
|
||||
global PORT
|
||||
PORT = serv.socket.getsockname()[1]
|
||||
serv.server_activate()
|
||||
serv.register_introspection_functions()
|
||||
serv.register_multicall_functions()
|
||||
serv.register_function(pow)
|
||||
serv.register_function(lambda x,y: x+y, 'add')
|
||||
serv.register_instance(TestInstanceClass())
|
||||
|
||||
# handle up to 'numrequests' requests
|
||||
while numrequests > 0:
|
||||
serv.handle_request()
|
||||
numrequests -= 1
|
||||
|
||||
except socket.timeout:
|
||||
pass
|
||||
finally:
|
||||
serv.socket.close()
|
||||
PORT = None
|
||||
evt.set()
|
||||
|
||||
|
||||
class HTTPTestCase(unittest.TestCase):
|
||||
def setUp(self):
|
||||
self.evt = threading.Event()
|
||||
# start server thread to handle just one request
|
||||
threading.Thread(target=http_server, args=(self.evt,2)).start()
|
||||
|
||||
# wait for port to be assigned to server
|
||||
n = 1000
|
||||
while n > 0 and PORT is None:
|
||||
time.sleep(0.001)
|
||||
n -= 1
|
||||
|
||||
time.sleep(0.5)
|
||||
|
||||
def tearDown(self):
|
||||
# wait on the server thread to terminate
|
||||
self.evt.wait()
|
||||
|
||||
def test_simple1(self):
|
||||
p = xmlrpclib.ServerProxy('http://localhost:%d' % PORT)
|
||||
self.assertEqual(p.pow(6,8), 6**8)
|
||||
|
||||
def test_introspection1(self):
|
||||
p = xmlrpclib.ServerProxy('http://localhost:%d' % PORT)
|
||||
meth = p.system.listMethods()
|
||||
expected_methods = set(['pow', 'div', 'add', 'system.listMethods',
|
||||
'system.methodHelp', 'system.methodSignature', 'system.multicall'])
|
||||
self.assertEqual(set(meth), expected_methods)
|
||||
|
||||
def test_introspection2(self):
|
||||
p = xmlrpclib.ServerProxy('http://localhost:%d' % PORT)
|
||||
divhelp = p.system.methodHelp('div')
|
||||
self.assertEqual(divhelp, 'This is the div function')
|
||||
|
||||
def test_introspection3(self):
|
||||
# the SimpleXMLRPCServer doesn't support signatures, but
|
||||
# at least check that we can try
|
||||
p = xmlrpclib.ServerProxy('http://localhost:%d' % PORT)
|
||||
divsig = p.system.methodSignature('div')
|
||||
self.assertEqual(divsig, 'signatures not supported')
|
||||
|
||||
def test_multicall(self):
|
||||
p = xmlrpclib.ServerProxy('http://localhost:%d' % PORT)
|
||||
multicall = xmlrpclib.MultiCall(p)
|
||||
multicall.add(2,3)
|
||||
multicall.pow(6,8)
|
||||
multicall.div(127,42)
|
||||
add_result, pow_result, div_result = multicall()
|
||||
self.assertEqual(add_result, 2+3)
|
||||
self.assertEqual(pow_result, 6**8)
|
||||
self.assertEqual(div_result, 127//42)
|
||||
|
||||
|
||||
def test_main():
|
||||
xmlrpc_tests = [XMLRPCTestCase, HelperTestCase, DateTimeTestCase,
|
||||
BinaryTestCase, FaultTestCase]
|
||||
|
||||
# The test cases against a SimpleXMLRPCServer raise a socket error
|
||||
# 10035 (WSAEWOULDBLOCK) in the server thread handle_request call when
|
||||
# run on Windows. This only happens on the first test to run, but it
|
||||
# fails every time and so these tests are skipped on win32 platforms.
|
||||
if sys.platform != 'win32':
|
||||
xmlrpc_tests.append(HTTPTestCase)
|
||||
|
||||
test_support.run_unittest(*xmlrpc_tests)
|
||||
|
||||
if __name__ == "__main__":
|
||||
test_main()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue