diff options
Diffstat (limited to 'Lib/test')
-rw-r--r-- | Lib/test/dis_module.py | 5 | ||||
-rw-r--r-- | Lib/test/infinite_reload.py | 7 | ||||
-rw-r--r-- | Lib/test/output/test_pkg | 2 | ||||
-rwxr-xr-x | Lib/test/regrtest.py | 6 | ||||
-rw-r--r-- | Lib/test/test_MimeWriter.py | 291 | ||||
-rw-r--r-- | Lib/test/test___all__.py | 3 | ||||
-rw-r--r-- | Lib/test/test_builtin.py | 8 | ||||
-rw-r--r-- | Lib/test/test_dis.py | 18 | ||||
-rw-r--r-- | Lib/test/test_doctest.py | 2 | ||||
-rw-r--r-- | Lib/test/test_hmac.py | 10 | ||||
-rw-r--r-- | Lib/test/test_import.py | 76 | ||||
-rw-r--r-- | Lib/test/test_importhooks.py | 4 | ||||
-rw-r--r-- | Lib/test/test_inspect.py | 2 | ||||
-rw-r--r-- | Lib/test/test_optparse.py | 6 | ||||
-rw-r--r-- | Lib/test/test_os.py | 14 | ||||
-rw-r--r-- | Lib/test/test_pkg.py | 3 | ||||
-rw-r--r-- | Lib/test/test_subprocess.py | 8 | ||||
-rw-r--r-- | Lib/test/test_sundry.py | 5 | ||||
-rw-r--r-- | Lib/test/test_syntax.py | 18 | ||||
-rw-r--r-- | Lib/test/test_sys.py | 41 | ||||
-rw-r--r-- | Lib/test/test_tarfile.py | 245 | ||||
-rw-r--r-- | Lib/test/test_tokenize.py | 4 | ||||
-rw-r--r-- | Lib/test/test_traceback.py | 47 | ||||
-rw-r--r-- | Lib/test/test_urllib.py | 77 | ||||
-rw-r--r-- | Lib/test/test_xmlrpc.py | 7 | ||||
-rw-r--r-- | Lib/test/testtar.tar | bin | 256000 -> 264704 bytes |
26 files changed, 324 insertions, 585 deletions
diff --git a/Lib/test/dis_module.py b/Lib/test/dis_module.py new file mode 100644 index 0000000..afbf600 --- /dev/null +++ b/Lib/test/dis_module.py @@ -0,0 +1,5 @@ + +# A simple module for testing the dis module. + +def f(): pass +def g(): pass diff --git a/Lib/test/infinite_reload.py b/Lib/test/infinite_reload.py deleted file mode 100644 index bfbec91..0000000 --- a/Lib/test/infinite_reload.py +++ /dev/null @@ -1,7 +0,0 @@ -# For testing http://python.org/sf/742342, which reports that Python -# segfaults (infinite recursion in C) in the presence of infinite -# reload()ing. This module is imported by test_import.py:test_infinite_reload -# to make sure this doesn't happen any more. - -import infinite_reload -reload(infinite_reload) diff --git a/Lib/test/output/test_pkg b/Lib/test/output/test_pkg index 8a5ab8d..d1a891b 100644 --- a/Lib/test/output/test_pkg +++ b/Lib/test/output/test_pkg @@ -15,8 +15,6 @@ running test t3 t3 loading t3.sub.subsub loading t3 t3.sub t3.sub.subsub -t3 loading -t3.sub.subsub loading running test t4 t4 loading t4.sub.subsub loading diff --git a/Lib/test/regrtest.py b/Lib/test/regrtest.py index 90a030d..de0b9f0 100755 --- a/Lib/test/regrtest.py +++ b/Lib/test/regrtest.py @@ -669,7 +669,8 @@ def dash_R(the_module, test, indirect_test, huntrleaks): indirect_test() else: def run_the_test(): - reload(the_module) + del sys.modules[the_module.__name__] + exec('import ' + the_module.__name__) deltas = [] nwarmup, ntracked, fname = huntrleaks @@ -841,7 +842,6 @@ _expectations = { test_signal test_sunaudiodev test_threadsignals - test_timing test_wait3 test_wait4 """, @@ -894,7 +894,6 @@ _expectations = { test_sunaudiodev test_sundry test_tarfile - test_timing """, 'unixware7': """ @@ -992,7 +991,6 @@ _expectations = { test_threaded_import test_threadedtempfile test_threading - test_timing """, 'darwin': """ diff --git a/Lib/test/test_MimeWriter.py b/Lib/test/test_MimeWriter.py deleted file mode 100644 index feca163..0000000 --- a/Lib/test/test_MimeWriter.py +++ /dev/null @@ -1,291 +0,0 @@ -"""Test program for MimeWriter module. - -The test program was too big to comfortably fit in the MimeWriter -class, so it's here in its own file. - -This should generate Barry's example, modulo some quotes and newlines. - -""" - -import unittest, sys, StringIO -from test.test_support import run_unittest - -from MimeWriter import MimeWriter - -SELLER = '''\ -INTERFACE Seller-1; - -TYPE Seller = OBJECT - DOCUMENTATION "A simple Seller interface to test ILU" - METHODS - price():INTEGER, - END; -''' - -BUYER = '''\ -class Buyer: - def __setup__(self, maxprice): - self._maxprice = maxprice - - def __main__(self, kos): - """Entry point upon arrival at a new KOS.""" - broker = kos.broker() - # B4 == Barry's Big Bass Business :-) - seller = broker.lookup('Seller_1.Seller', 'B4') - if seller: - price = seller.price() - print 'Seller wants $', price, '... ' - if price > self._maxprice: - print 'too much!' - else: - print "I'll take it!" - else: - print 'no seller found here' -''' # Don't ask why this comment is here - -STATE = '''\ -# instantiate a buyer instance and put it in a magic place for the KOS -# to find. -__kp__ = Buyer() -__kp__.__setup__(500) -''' - -SIMPLE_METADATA = [ - ("Interpreter", "python"), - ("Interpreter-Version", "1.3"), - ("Owner-Name", "Barry Warsaw"), - ("Owner-Rendezvous", "bwarsaw@cnri.reston.va.us"), - ("Home-KSS", "kss.cnri.reston.va.us"), - ("Identifier", "hdl://cnri.kss/my_first_knowbot"), - ("Launch-Date", "Mon Feb 12 16:39:03 EST 1996"), - ] - -COMPLEX_METADATA = [ - ("Metadata-Type", "complex"), - ("Metadata-Key", "connection"), - ("Access", "read-only"), - ("Connection-Description", "Barry's Big Bass Business"), - ("Connection-Id", "B4"), - ("Connection-Direction", "client"), - ] - -EXTERNAL_METADATA = [ - ("Metadata-Type", "complex"), - ("Metadata-Key", "generic-interface"), - ("Access", "read-only"), - ("Connection-Description", "Generic Interface for All Knowbots"), - ("Connection-Id", "generic-kp"), - ("Connection-Direction", "client"), - ] - - -OUTPUT = '''\ -From: bwarsaw@cnri.reston.va.us -Date: Mon Feb 12 17:21:48 EST 1996 -To: kss-submit@cnri.reston.va.us -MIME-Version: 1.0 -Content-Type: multipart/knowbot; - boundary="801spam999"; - version="0.1" - -This is a multi-part message in MIME format. - ---801spam999 -Content-Type: multipart/knowbot-metadata; - boundary="802spam999" - - ---802spam999 -Content-Type: message/rfc822 -KP-Metadata-Type: simple -KP-Access: read-only - -KPMD-Interpreter: python -KPMD-Interpreter-Version: 1.3 -KPMD-Owner-Name: Barry Warsaw -KPMD-Owner-Rendezvous: bwarsaw@cnri.reston.va.us -KPMD-Home-KSS: kss.cnri.reston.va.us -KPMD-Identifier: hdl://cnri.kss/my_first_knowbot -KPMD-Launch-Date: Mon Feb 12 16:39:03 EST 1996 - ---802spam999 -Content-Type: text/isl -KP-Metadata-Type: complex -KP-Metadata-Key: connection -KP-Access: read-only -KP-Connection-Description: Barry's Big Bass Business -KP-Connection-Id: B4 -KP-Connection-Direction: client - -INTERFACE Seller-1; - -TYPE Seller = OBJECT - DOCUMENTATION "A simple Seller interface to test ILU" - METHODS - price():INTEGER, - END; - ---802spam999 -Content-Type: message/external-body; - access-type="URL"; - URL="hdl://cnri.kss/generic-knowbot" - -Content-Type: text/isl -KP-Metadata-Type: complex -KP-Metadata-Key: generic-interface -KP-Access: read-only -KP-Connection-Description: Generic Interface for All Knowbots -KP-Connection-Id: generic-kp -KP-Connection-Direction: client - - ---802spam999-- - ---801spam999 -Content-Type: multipart/knowbot-code; - boundary="803spam999" - - ---803spam999 -Content-Type: text/plain -KP-Module-Name: BuyerKP - -class Buyer: - def __setup__(self, maxprice): - self._maxprice = maxprice - - def __main__(self, kos): - """Entry point upon arrival at a new KOS.""" - broker = kos.broker() - # B4 == Barry's Big Bass Business :-) - seller = broker.lookup('Seller_1.Seller', 'B4') - if seller: - price = seller.price() - print 'Seller wants $', price, '... ' - if price > self._maxprice: - print 'too much!' - else: - print "I'll take it!" - else: - print 'no seller found here' - ---803spam999-- - ---801spam999 -Content-Type: multipart/knowbot-state; - boundary="804spam999" -KP-Main-Module: main - - ---804spam999 -Content-Type: text/plain -KP-Module-Name: main - -# instantiate a buyer instance and put it in a magic place for the KOS -# to find. -__kp__ = Buyer() -__kp__.__setup__(500) - ---804spam999-- - ---801spam999-- -''' - -class MimewriterTest(unittest.TestCase): - - def test(self): - buf = StringIO.StringIO() - - # Toplevel headers - - toplevel = MimeWriter(buf) - toplevel.addheader("From", "bwarsaw@cnri.reston.va.us") - toplevel.addheader("Date", "Mon Feb 12 17:21:48 EST 1996") - toplevel.addheader("To", "kss-submit@cnri.reston.va.us") - toplevel.addheader("MIME-Version", "1.0") - - # Toplevel body parts - - f = toplevel.startmultipartbody("knowbot", "801spam999", - [("version", "0.1")], prefix=0) - f.write("This is a multi-part message in MIME format.\n") - - # First toplevel body part: metadata - - md = toplevel.nextpart() - md.startmultipartbody("knowbot-metadata", "802spam999") - - # Metadata part 1 - - md1 = md.nextpart() - md1.addheader("KP-Metadata-Type", "simple") - md1.addheader("KP-Access", "read-only") - m = MimeWriter(md1.startbody("message/rfc822")) - for key, value in SIMPLE_METADATA: - m.addheader("KPMD-" + key, value) - m.flushheaders() - del md1 - - # Metadata part 2 - - md2 = md.nextpart() - for key, value in COMPLEX_METADATA: - md2.addheader("KP-" + key, value) - f = md2.startbody("text/isl") - f.write(SELLER) - del md2 - - # Metadata part 3 - - md3 = md.nextpart() - f = md3.startbody("message/external-body", - [("access-type", "URL"), - ("URL", "hdl://cnri.kss/generic-knowbot")]) - m = MimeWriter(f) - for key, value in EXTERNAL_METADATA: - md3.addheader("KP-" + key, value) - md3.startbody("text/isl") - # Phantom body doesn't need to be written - - md.lastpart() - - # Second toplevel body part: code - - code = toplevel.nextpart() - code.startmultipartbody("knowbot-code", "803spam999") - - # Code: buyer program source - - buyer = code.nextpart() - buyer.addheader("KP-Module-Name", "BuyerKP") - f = buyer.startbody("text/plain") - f.write(BUYER) - - code.lastpart() - - # Third toplevel body part: state - - state = toplevel.nextpart() - state.addheader("KP-Main-Module", "main") - state.startmultipartbody("knowbot-state", "804spam999") - - # State: a bunch of assignments - - st = state.nextpart() - st.addheader("KP-Module-Name", "main") - f = st.startbody("text/plain") - f.write(STATE) - - state.lastpart() - - # End toplevel body parts - - toplevel.lastpart() - - self.assertEqual(buf.getvalue(), OUTPUT) - -def test_main(): - run_unittest(MimewriterTest) - -if __name__ == '__main__': - test_main() diff --git a/Lib/test/test___all__.py b/Lib/test/test___all__.py index cc3780d..f5dd431 100644 --- a/Lib/test/test___all__.py +++ b/Lib/test/test___all__.py @@ -1,7 +1,6 @@ import unittest from test.test_support import verbose, run_unittest import sys -import warnings class AllTest(unittest.TestCase): @@ -34,7 +33,6 @@ class AllTest(unittest.TestCase): self.check_all("CGIHTTPServer") self.check_all("ConfigParser") self.check_all("Cookie") - self.check_all("MimeWriter") self.check_all("Queue") self.check_all("SimpleHTTPServer") self.check_all("SocketServer") @@ -92,7 +90,6 @@ class AllTest(unittest.TestCase): self.check_all("mhlib") self.check_all("mimetools") self.check_all("mimetypes") - self.check_all("mimify") self.check_all("multifile") self.check_all("netrc") self.check_all("nntplib") diff --git a/Lib/test/test_builtin.py b/Lib/test/test_builtin.py index 4e1375a..1c1998d 100644 --- a/Lib/test/test_builtin.py +++ b/Lib/test/test_builtin.py @@ -1485,14 +1485,6 @@ class BuiltinTest(unittest.TestCase): fp.close() unlink(TESTFN) - def test_reload(self): - import marshal - reload(marshal) - import string - reload(string) - ## import sys - ## self.assertRaises(ImportError, reload, sys) - def test_repr(self): self.assertEqual(repr(''), '\'\'') self.assertEqual(repr(0), '0') diff --git a/Lib/test/test_dis.py b/Lib/test/test_dis.py index dfb307d..f1bd3e7 100644 --- a/Lib/test/test_dis.py +++ b/Lib/test/test_dis.py @@ -89,6 +89,18 @@ _BIG_LINENO_FORMAT = """\ 7 RETURN_VALUE """ +dis_module_expected_results = """\ +Disassembly of f: + 4 0 LOAD_CONST 0 (None) + 3 RETURN_VALUE + +Disassembly of g: + 5 0 LOAD_CONST 0 (None) + 3 RETURN_VALUE + +""" + + class DisTests(unittest.TestCase): def do_disassembly_test(self, func, expected): s = StringIO.StringIO() @@ -127,6 +139,7 @@ class DisTests(unittest.TestCase): self.do_disassembly_test(bug708901, dis_bug708901) def test_bug_1333982(self): + # XXX: re-enable this test! # This one is checking bytecodes generated for an `assert` statement, # so fails if the tests are run with -O. Skip this test then. pass # Test has been disabled due to change in the way @@ -153,9 +166,12 @@ class DisTests(unittest.TestCase): expected = _BIG_LINENO_FORMAT % (i + 2) self.do_disassembly_test(func(i), expected) + def test_big_linenos(self): + from test import dis_module + self.do_disassembly_test(dis_module, dis_module_expected_results) + def test_main(): run_unittest(DisTests) - if __name__ == "__main__": test_main() diff --git a/Lib/test/test_doctest.py b/Lib/test/test_doctest.py index 3adb98c..5730a59 100644 --- a/Lib/test/test_doctest.py +++ b/Lib/test/test_doctest.py @@ -2409,7 +2409,7 @@ import trace, sys, re, StringIO def test_coverage(coverdir): tracer = trace.Trace(ignoredirs=[sys.prefix, sys.exec_prefix,], trace=0, count=1) - tracer.run('reload(doctest); test_main()') + tracer.run('test_main()') r = tracer.results() print('Writing coverage results...') r.write_results(show_missing=True, summary=True, diff --git a/Lib/test/test_hmac.py b/Lib/test/test_hmac.py index 9d094d2..d28490d 100644 --- a/Lib/test/test_hmac.py +++ b/Lib/test/test_hmac.py @@ -1,5 +1,5 @@ import hmac -import sha +from hashlib import sha1 import unittest from test import test_support @@ -43,7 +43,7 @@ class TestVectorsTestCase(unittest.TestCase): def test_sha_vectors(self): def shatest(key, data, digest): - h = hmac.HMAC(key, data, digestmod=sha) + h = hmac.HMAC(key, data, digestmod=sha1) self.assertEqual(h.hexdigest().upper(), digest.upper()) shatest(chr(0x0b) * 20, @@ -95,11 +95,11 @@ class ConstructorTestCase(unittest.TestCase): def test_withmodule(self): # Constructor call with text and digest module. - import sha + from hashlib import sha1 try: - h = hmac.HMAC("key", "", sha) + h = hmac.HMAC("key", "", sha1) except: - self.fail("Constructor call with sha module raised exception.") + self.fail("Constructor call with hashlib.sha1 raised exception.") class SanityTestCase(unittest.TestCase): diff --git a/Lib/test/test_import.py b/Lib/test/test_import.py index 87907c8..193de40 100644 --- a/Lib/test/test_import.py +++ b/Lib/test/test_import.py @@ -6,6 +6,7 @@ import random import sys import py_compile import warnings +from test.test_support import unlink def remove_files(name): @@ -63,22 +64,9 @@ class ImportTest(unittest.TestCase): self.assertEquals(mod.b, b, "module loaded (%s) but contents invalid" % mod) finally: - os.unlink(source) - - try: - try: - reload(mod) - except ImportError as err: - self.fail("import from .pyc/.pyo failed: %s" % err) - finally: - try: - os.unlink(pyc) - except OSError: - pass - try: - os.unlink(pyo) - except OSError: - pass + unlink(source) + unlink(pyc) + unlink(pyo) del sys.modules[TESTFN] sys.path.insert(0, os.curdir) @@ -136,6 +124,8 @@ class ImportTest(unittest.TestCase): # New in 2.4, we shouldn't be able to import that no matter how often # we try. sys.path.insert(0, os.curdir) + if TESTFN in sys.modules: + del sys.modules[TESTFN] try: for i in 1, 2, 3: try: @@ -149,60 +139,6 @@ class ImportTest(unittest.TestCase): sys.path.pop(0) remove_files(TESTFN) - def test_failing_reload(self): - # A failing reload should leave the module object in sys.modules. - source = TESTFN + os.extsep + "py" - f = open(source, "w") - print("a = 1", file=f) - print("b = 2", file=f) - f.close() - - sys.path.insert(0, os.curdir) - try: - mod = __import__(TESTFN) - self.assert_(TESTFN in sys.modules, "expected module in sys.modules") - self.assertEquals(mod.a, 1, "module has wrong attribute values") - self.assertEquals(mod.b, 2, "module has wrong attribute values") - - # On WinXP, just replacing the .py file wasn't enough to - # convince reload() to reparse it. Maybe the timestamp didn't - # move enough. We force it to get reparsed by removing the - # compiled file too. - remove_files(TESTFN) - - # Now damage the module. - f = open(source, "w") - print("a = 10", file=f) - print("b = 20//0", file=f) - f.close() - - self.assertRaises(ZeroDivisionError, reload, mod) - - # But we still expect the module to be in sys.modules. - mod = sys.modules.get(TESTFN) - self.failIf(mod is None, "expected module to still be in sys.modules") - - # We should have replaced a w/ 10, but the old b value should - # stick. - self.assertEquals(mod.a, 10, "module has wrong attribute values") - self.assertEquals(mod.b, 2, "module has wrong attribute values") - - finally: - sys.path.pop(0) - remove_files(TESTFN) - if TESTFN in sys.modules: - del sys.modules[TESTFN] - - def test_infinite_reload(self): - # Bug #742342 reports that Python segfaults (infinite recursion in C) - # when faced with self-recursive reload()ing. - - sys.path.insert(0, os.path.dirname(__file__)) - try: - import infinite_reload - finally: - sys.path.pop(0) - def test_import_name_binding(self): # import x.y.z binds x in the current namespace import test as x diff --git a/Lib/test/test_importhooks.py b/Lib/test/test_importhooks.py index 02268ab..18f3fc4 100644 --- a/Lib/test/test_importhooks.py +++ b/Lib/test/test_importhooks.py @@ -190,10 +190,6 @@ class ImportHooksTestCase(ImportHooksBaseTestCase): import reloadmodule self.failIf(hasattr(reloadmodule,'reloaded')) - TestImporter.modules['reloadmodule'] = (False, reload_co) - reload(reloadmodule) - self.failUnless(hasattr(reloadmodule,'reloaded')) - import hooktestpackage.newrel self.assertEqual(hooktestpackage.newrel.get_name(), "hooktestpackage.newrel") diff --git a/Lib/test/test_inspect.py b/Lib/test/test_inspect.py index 6fe1437..bdd7c34 100644 --- a/Lib/test/test_inspect.py +++ b/Lib/test/test_inspect.py @@ -26,7 +26,7 @@ import __builtin__ try: 1/0 except: - tb = sys.exc_traceback + tb = sys.exc_info()[2] git = mod.StupidGit() diff --git a/Lib/test/test_optparse.py b/Lib/test/test_optparse.py index 811ec34..751f7a2 100644 --- a/Lib/test/test_optparse.py +++ b/Lib/test/test_optparse.py @@ -27,12 +27,6 @@ from optparse import make_option, Option, IndentedHelpFormatter, \ from optparse import _match_abbrev from optparse import _parse_num -# Do the right thing with boolean values for all known Python versions. -try: - True, False -except NameError: - (True, False) = (1, 0) - retype = type(re.compile('')) class InterceptedError(Exception): diff --git a/Lib/test/test_os.py b/Lib/test/test_os.py index ed044f6..9673172 100644 --- a/Lib/test/test_os.py +++ b/Lib/test/test_os.py @@ -381,7 +381,7 @@ class WalkTests(unittest.TestCase): os.remove(dirname) os.rmdir(test_support.TESTFN) -class MakedirTests (unittest.TestCase): +class MakedirTests(unittest.TestCase): def setUp(self): os.mkdir(test_support.TESTFN) @@ -400,9 +400,6 @@ class MakedirTests (unittest.TestCase): 'dir5', 'dir6') os.makedirs(path) - - - def tearDown(self): path = os.path.join(test_support.TESTFN, 'dir1', 'dir2', 'dir3', 'dir4', 'dir5', 'dir6') @@ -414,7 +411,7 @@ class MakedirTests (unittest.TestCase): os.removedirs(path) -class DevNullTests (unittest.TestCase): +class DevNullTests(unittest.TestCase): def test_devnull(self): f = open(os.devnull, 'w') f.write('hello') @@ -423,7 +420,7 @@ class DevNullTests (unittest.TestCase): self.assertEqual(f.read(), '') f.close() -class URandomTests (unittest.TestCase): +class URandomTests(unittest.TestCase): def test_urandom(self): try: self.assertEqual(len(os.urandom(1)), 1) @@ -433,6 +430,10 @@ class URandomTests (unittest.TestCase): except NotImplementedError: pass +class ExecTests(unittest.TestCase): + def test_execvpe_with_bad_program(self): + self.assertRaises(OSError, os.execvpe, 'no such app-', [], None) + class Win32ErrorTests(unittest.TestCase): def test_rename(self): self.assertRaises(WindowsError, os.rename, test_support.TESTFN, test_support.TESTFN+".bak") @@ -469,6 +470,7 @@ def test_main(): MakedirTests, DevNullTests, URandomTests, + ExecTests, Win32ErrorTests ) diff --git a/Lib/test/test_pkg.py b/Lib/test/test_pkg.py index ad9cc1a..1a3f2a9 100644 --- a/Lib/test/test_pkg.py +++ b/Lib/test/test_pkg.py @@ -120,9 +120,6 @@ print(dir()) """ import t3.sub.subsub print(t3.__name__, t3.sub.__name__, t3.sub.subsub.__name__) -reload(t3) -reload(t3.sub) -reload(t3.sub.subsub) """), ("t4", [ diff --git a/Lib/test/test_subprocess.py b/Lib/test/test_subprocess.py index 0592787..ec004bf 100644 --- a/Lib/test/test_subprocess.py +++ b/Lib/test/test_subprocess.py @@ -604,8 +604,16 @@ class ProcessTestCase(unittest.TestCase): self.assertRaises(ValueError, subprocess.call, [sys.executable, "-c", "import sys; sys.exit(47)"], + stdout=subprocess.PIPE, close_fds=True) + def test_close_fds(self): + # close file descriptors + rc = subprocess.call([sys.executable, "-c", + "import sys; sys.exit(47)"], + close_fds=True) + self.assertEqual(rc, 47) + def test_shell_sequence(self): # Run command through the shell (sequence) newenv = os.environ.copy() diff --git a/Lib/test/test_sundry.py b/Lib/test/test_sundry.py index eb4149f..3c0346d 100644 --- a/Lib/test/test_sundry.py +++ b/Lib/test/test_sundry.py @@ -4,9 +4,6 @@ from test.test_support import guard_warnings_filter import warnings with guard_warnings_filter(): - warnings.filterwarnings('ignore', r".*posixfile", - DeprecationWarning) - from test.test_support import verbose import BaseHTTPServer @@ -33,7 +30,6 @@ with guard_warnings_filter(): import linecache import macurl2path import mailcap - import mimify import mutex import nntplib import nturl2path @@ -42,7 +38,6 @@ with guard_warnings_filter(): import pdb import pipes #import poplib - import posixfile import pstats import py_compile import pydoc diff --git a/Lib/test/test_syntax.py b/Lib/test/test_syntax.py index 2b48ea6..ab60a56 100644 --- a/Lib/test/test_syntax.py +++ b/Lib/test/test_syntax.py @@ -27,15 +27,13 @@ In ast.c, syntax errors are raised by calling ast_error(). Errors from set_context(): -TODO(jhylton): "assignment to None" is inconsistent with other messages - >>> obj.None = 1 Traceback (most recent call last): -SyntaxError: assignment to None (<doctest test.test_syntax[1]>, line 1) +SyntaxError: invalid syntax >>> None = 1 Traceback (most recent call last): -SyntaxError: assignment to None (<doctest test.test_syntax[2]>, line 1) +SyntaxError: assignment to keyword (<doctest test.test_syntax[2]>, line 1) It's a syntax error to assign to the empty tuple. Why isn't it an error to assign to the empty list? It will always raise some error at @@ -95,7 +93,7 @@ From compiler_complex_args(): >>> def f(None=1): ... pass Traceback (most recent call last): -SyntaxError: assignment to None (<doctest test.test_syntax[14]>, line 1) +SyntaxError: invalid syntax From ast_for_arguments(): @@ -108,17 +106,17 @@ SyntaxError: non-default argument follows default argument (<doctest test.test_s >>> def f(x, None): ... pass Traceback (most recent call last): -SyntaxError: assignment to None (<doctest test.test_syntax[16]>, line 1) +SyntaxError: invalid syntax >>> def f(*None): ... pass Traceback (most recent call last): -SyntaxError: assignment to None (<doctest test.test_syntax[17]>, line 1) +SyntaxError: invalid syntax >>> def f(**None): ... pass Traceback (most recent call last): -SyntaxError: assignment to None (<doctest test.test_syntax[18]>, line 1) +SyntaxError: invalid syntax From ast_for_funcdef(): @@ -126,7 +124,7 @@ From ast_for_funcdef(): >>> def None(x): ... pass Traceback (most recent call last): -SyntaxError: assignment to None (<doctest test.test_syntax[19]>, line 1) +SyntaxError: invalid syntax From ast_for_call(): @@ -231,7 +229,7 @@ Traceback (most recent call last): SyntaxError: augmented assignment to generator expression not possible (<doctest test.test_syntax[31]>, line 1) >>> None += 1 Traceback (most recent call last): -SyntaxError: assignment to None (<doctest test.test_syntax[32]>, line 1) +SyntaxError: assignment to keyword (<doctest test.test_syntax[32]>, line 1) >>> f() += 1 Traceback (most recent call last): SyntaxError: illegal expression for augmented assignment (<doctest test.test_syntax[33]>, line 1) diff --git a/Lib/test/test_sys.py b/Lib/test/test_sys.py index 8862661..b038ff4 100644 --- a/Lib/test/test_sys.py +++ b/Lib/test/test_sys.py @@ -63,47 +63,6 @@ class SysModuleTest(unittest.TestCase): # FIXME: testing the code for a lost or replaced excepthook in # Python/pythonrun.c::PyErr_PrintEx() is tricky. - def test_exc_clear(self): - self.assertRaises(TypeError, sys.exc_clear, 42) - - # Verify that exc_info is present and matches exc, then clear it, and - # check that it worked. - def clear_check(exc): - typ, value, traceback = sys.exc_info() - self.assert_(typ is not None) - self.assert_(value is exc) - self.assert_(traceback is not None) - - sys.exc_clear() - - typ, value, traceback = sys.exc_info() - self.assert_(typ is None) - self.assert_(value is None) - self.assert_(traceback is None) - - def clear(): - try: - raise ValueError, 42 - except ValueError as exc: - clear_check(exc) - - # Raise an exception and check that it can be cleared - clear() - - # Verify that a frame currently handling an exception is - # unaffected by calling exc_clear in a nested frame. - try: - raise ValueError, 13 - except ValueError as exc: - typ1, value1, traceback1 = sys.exc_info() - clear() - typ2, value2, traceback2 = sys.exc_info() - - self.assert_(typ1 is typ2) - self.assert_(value1 is exc) - self.assert_(value1 is value2) - self.assert_(traceback1 is traceback2) - def test_exit(self): self.assertRaises(TypeError, sys.exit, 42, 42) diff --git a/Lib/test/test_tarfile.py b/Lib/test/test_tarfile.py index 312050b..636a45e 100644 --- a/Lib/test/test_tarfile.py +++ b/Lib/test/test_tarfile.py @@ -1,4 +1,4 @@ -# encoding: iso8859-1 +# -*- coding: iso-8859-15 -*- import sys import os @@ -372,9 +372,9 @@ class LongnameTest(ReadTest): def test_read_longname(self): # Test reading of longname (bug #1471427). - name = self.subdir + "/" + "123/" * 125 + "longname" + longname = self.subdir + "/" + "123/" * 125 + "longname" try: - tarinfo = self.tar.getmember(name) + tarinfo = self.tar.getmember(longname) except KeyError: self.fail("longname not found") self.assert_(tarinfo.type != tarfile.DIRTYPE, "read longname as dirtype") @@ -393,13 +393,24 @@ class LongnameTest(ReadTest): tarinfo = self.tar.getmember(longname) offset = tarinfo.offset self.tar.fileobj.seek(offset) - fobj = StringIO.StringIO(self.tar.fileobj.read(1536)) + fobj = StringIO.StringIO(self.tar.fileobj.read(3 * 512)) self.assertRaises(tarfile.ReadError, tarfile.open, name="foo.tar", fileobj=fobj) + def test_header_offset(self): + # Test if the start offset of the TarInfo object includes + # the preceding extended header. + longname = self.subdir + "/" + "123/" * 125 + "longname" + offset = self.tar.getmember(longname).offset + fobj = open(tarname) + fobj.seek(offset) + tarinfo = tarfile.TarInfo.frombuf(fobj.read(512)) + self.assertEqual(tarinfo.type, self.longnametype) + class GNUReadTest(LongnameTest): subdir = "gnu" + longnametype = tarfile.GNUTYPE_LONGNAME def test_sparse_file(self): tarinfo1 = self.tar.getmember("ustar/sparse") @@ -410,26 +421,40 @@ class GNUReadTest(LongnameTest): "sparse file extraction failed") -class PaxReadTest(ReadTest): +class PaxReadTest(LongnameTest): subdir = "pax" + longnametype = tarfile.XHDTYPE - def test_pax_globheaders(self): + def test_pax_global_headers(self): tar = tarfile.open(tarname, encoding="iso8859-1") + tarinfo = tar.getmember("pax/regtype1") self.assertEqual(tarinfo.uname, "foo") self.assertEqual(tarinfo.gname, "bar") - self.assertEqual(tarinfo.pax_headers.get("VENDOR.umlauts"), "ÄÖÜäöüß") + self.assertEqual(tarinfo.pax_headers.get("VENDOR.umlauts"), u"ÄÖÜäöüß") tarinfo = tar.getmember("pax/regtype2") self.assertEqual(tarinfo.uname, "") self.assertEqual(tarinfo.gname, "bar") - self.assertEqual(tarinfo.pax_headers.get("VENDOR.umlauts"), "ÄÖÜäöüß") + self.assertEqual(tarinfo.pax_headers.get("VENDOR.umlauts"), u"ÄÖÜäöüß") tarinfo = tar.getmember("pax/regtype3") self.assertEqual(tarinfo.uname, "tarfile") self.assertEqual(tarinfo.gname, "tarfile") - self.assertEqual(tarinfo.pax_headers.get("VENDOR.umlauts"), "ÄÖÜäöüß") + self.assertEqual(tarinfo.pax_headers.get("VENDOR.umlauts"), u"ÄÖÜäöüß") + + def test_pax_number_fields(self): + # All following number fields are read from the pax header. + tar = tarfile.open(tarname, encoding="iso8859-1") + tarinfo = tar.getmember("pax/regtype4") + self.assertEqual(tarinfo.size, 7011) + self.assertEqual(tarinfo.uid, 123) + self.assertEqual(tarinfo.gid, 123) + self.assertEqual(tarinfo.mtime, 1041808783.0) + self.assertEqual(type(tarinfo.mtime), float) + self.assertEqual(float(tarinfo.pax_headers["atime"]), 1041808783.0) + self.assertEqual(float(tarinfo.pax_headers["ctime"]), 1041808783.0) class WriteTest(unittest.TestCase): @@ -700,68 +725,160 @@ class PaxWriteTest(GNUWriteTest): n = tar.getmembers()[0].name self.assert_(name == n, "PAX longname creation failed") - def test_iso8859_15_filename(self): - self._test_unicode_filename("iso8859-15") + def test_pax_global_header(self): + pax_headers = { + u"foo": u"bar", + u"uid": u"0", + u"mtime": u"1.23", + u"test": u"äöü", + u"äöü": u"test"} + + tar = tarfile.open(tmpname, "w", format=tarfile.PAX_FORMAT, \ + pax_headers=pax_headers) + tar.addfile(tarfile.TarInfo("test")) + tar.close() + + # Test if the global header was written correctly. + tar = tarfile.open(tmpname, encoding="iso8859-1") + self.assertEqual(tar.pax_headers, pax_headers) + self.assertEqual(tar.getmembers()[0].pax_headers, pax_headers) + + # Test if all the fields are unicode. + for key, val in tar.pax_headers.items(): + self.assert_(type(key) is unicode) + self.assert_(type(val) is unicode) + if key in tarfile.PAX_NUMBER_FIELDS: + try: + tarfile.PAX_NUMBER_FIELDS[key](val) + except (TypeError, ValueError): + self.fail("unable to convert pax header field") + + def test_pax_extended_header(self): + # The fields from the pax header have priority over the + # TarInfo. + pax_headers = {u"path": u"foo", u"uid": u"123"} + + tar = tarfile.open(tmpname, "w", format=tarfile.PAX_FORMAT, encoding="iso8859-1") + t = tarfile.TarInfo() + t.name = u"äöü" # non-ASCII + t.uid = 8**8 # too large + t.pax_headers = pax_headers + tar.addfile(t) + tar.close() + + tar = tarfile.open(tmpname, encoding="iso8859-1") + t = tar.getmembers()[0] + self.assertEqual(t.pax_headers, pax_headers) + self.assertEqual(t.name, "foo") + self.assertEqual(t.uid, 123) + + +class UstarUnicodeTest(unittest.TestCase): + # All *UnicodeTests FIXME + + format = tarfile.USTAR_FORMAT + + def test_iso8859_1_filename(self): + self._test_unicode_filename("iso8859-1") + + def test_utf7_filename(self): + self._test_unicode_filename("utf7") def test_utf8_filename(self): self._test_unicode_filename("utf8") - def test_utf16_filename(self): - self._test_unicode_filename("utf16") - def _test_unicode_filename(self, encoding): - tar = tarfile.open(tmpname, "w", format=tarfile.PAX_FORMAT) - name = "\u20ac".encode(encoding) # Euro sign - tar.encoding = encoding + tar = tarfile.open(tmpname, "w", format=self.format, encoding=encoding, errors="strict") + name = "äöü" tar.addfile(tarfile.TarInfo(name)) tar.close() tar = tarfile.open(tmpname, encoding=encoding) - self.assertEqual(tar.getmembers()[0].name, name) + self.assert_(type(tar.getnames()[0]) is not unicode) + self.assertEqual(tar.getmembers()[0].name, name.encode(encoding)) tar.close() def test_unicode_filename_error(self): - # The euro sign filename cannot be translated to iso8859-1 encoding. - tar = tarfile.open(tmpname, "w", format=tarfile.PAX_FORMAT, encoding="utf8") - name = "\u20ac".encode("utf8") # Euro sign - tar.addfile(tarfile.TarInfo(name)) + tar = tarfile.open(tmpname, "w", format=self.format, encoding="ascii", errors="strict") + tarinfo = tarfile.TarInfo() + + tarinfo.name = "äöü" + if self.format == tarfile.PAX_FORMAT: + self.assertRaises(UnicodeError, tar.addfile, tarinfo) + else: + tar.addfile(tarinfo) + + tarinfo.name = u"äöü" + self.assertRaises(UnicodeError, tar.addfile, tarinfo) + + tarinfo.name = "foo" + tarinfo.uname = u"äöü" + self.assertRaises(UnicodeError, tar.addfile, tarinfo) + + def test_unicode_argument(self): + tar = tarfile.open(tarname, "r", encoding="iso8859-1", errors="strict") + for t in tar: + self.assert_(type(t.name) is str) + self.assert_(type(t.linkname) is str) + self.assert_(type(t.uname) is str) + self.assert_(type(t.gname) is str) tar.close() - self.assertRaises(UnicodeError, tarfile.open, tmpname, encoding="iso8859-1") + def test_uname_unicode(self): + for name in (u"äöü", "äöü"): + t = tarfile.TarInfo("foo") + t.uname = name + t.gname = name - def test_pax_headers(self): - self._test_pax_headers({"foo": "bar", "uid": 0, "mtime": 1.23}) + fobj = StringIO.StringIO() + tar = tarfile.open("foo.tar", mode="w", fileobj=fobj, format=self.format, encoding="iso8859-1") + tar.addfile(t) + tar.close() + fobj.seek(0) - self._test_pax_headers({"euro": "\u20ac".encode("utf8")}) + tar = tarfile.open("foo.tar", fileobj=fobj, encoding="iso8859-1") + t = tar.getmember("foo") + self.assertEqual(t.uname, "äöü") + self.assertEqual(t.gname, "äöü") - self._test_pax_headers({"euro": "\u20ac"}, - {"euro": "\u20ac".encode("utf8")}) +class GNUUnicodeTest(UstarUnicodeTest): - self._test_pax_headers({"\u20ac": "euro"}, - {"\u20ac".encode("utf8"): "euro"}) + format = tarfile.GNU_FORMAT - def _test_pax_headers(self, pax_headers, cmp_headers=None): - if cmp_headers is None: - cmp_headers = pax_headers - tar = tarfile.open(tmpname, "w", format=tarfile.PAX_FORMAT, \ - pax_headers=pax_headers, encoding="utf8") - tar.addfile(tarfile.TarInfo("test")) - tar.close() +class PaxUnicodeTest(UstarUnicodeTest): - tar = tarfile.open(tmpname, encoding="utf8") - self.assertEqual(tar.pax_headers, cmp_headers) + format = tarfile.PAX_FORMAT - def test_truncated_header(self): - tar = tarfile.open(tmpname, "w", format=tarfile.PAX_FORMAT) - tarinfo = tarfile.TarInfo("123/" * 126 + "longname") - tar.addfile(tarinfo) + def _create_unicode_name(self, name): + tar = tarfile.open(tmpname, "w", format=self.format) + t = tarfile.TarInfo() + t.pax_headers["path"] = name + tar.addfile(t) tar.close() - # Simulate a premature EOF. - open(tmpname, "rb+").truncate(1536) - tar = tarfile.open(tmpname) - self.assertEqual(tar.getmembers(), []) + def test_error_handlers(self): + # Test if the unicode error handlers work correctly for characters + # that cannot be expressed in a given encoding. + self._create_unicode_name(u"äöü") + + for handler, name in (("utf-8", u"äöü".encode("utf8")), + ("replace", "???"), ("ignore", "")): + tar = tarfile.open(tmpname, format=self.format, encoding="ascii", + errors=handler) + self.assertEqual(tar.getnames()[0], name) + + self.assertRaises(UnicodeError, tarfile.open, tmpname, + encoding="ascii", errors="strict") + + def test_error_handler_utf8(self): + # Create a pathname that has one component representable using + # iso8859-1 and the other only in iso8859-15. + self._create_unicode_name(u"äöü/¤") + + tar = tarfile.open(tmpname, format=self.format, encoding="iso8859-1", + errors="utf-8") + self.assertEqual(tar.getnames()[0], "äöü/" + u"¤".encode("utf8")) class AppendTest(unittest.TestCase): @@ -836,63 +953,58 @@ class LimitsTest(unittest.TestCase): def test_ustar_limits(self): # 100 char name tarinfo = tarfile.TarInfo("0123456789" * 10) - tarinfo.create_ustar_header() + tarinfo.tobuf(tarfile.USTAR_FORMAT) # 101 char name that cannot be stored tarinfo = tarfile.TarInfo("0123456789" * 10 + "0") - self.assertRaises(ValueError, tarinfo.create_ustar_header) + self.assertRaises(ValueError, tarinfo.tobuf, tarfile.USTAR_FORMAT) # 256 char name with a slash at pos 156 tarinfo = tarfile.TarInfo("123/" * 62 + "longname") - tarinfo.create_ustar_header() + tarinfo.tobuf(tarfile.USTAR_FORMAT) # 256 char name that cannot be stored tarinfo = tarfile.TarInfo("1234567/" * 31 + "longname") - self.assertRaises(ValueError, tarinfo.create_ustar_header) + self.assertRaises(ValueError, tarinfo.tobuf, tarfile.USTAR_FORMAT) # 512 char name tarinfo = tarfile.TarInfo("123/" * 126 + "longname") - self.assertRaises(ValueError, tarinfo.create_ustar_header) + self.assertRaises(ValueError, tarinfo.tobuf, tarfile.USTAR_FORMAT) # 512 char linkname tarinfo = tarfile.TarInfo("longlink") tarinfo.linkname = "123/" * 126 + "longname" - self.assertRaises(ValueError, tarinfo.create_ustar_header) + self.assertRaises(ValueError, tarinfo.tobuf, tarfile.USTAR_FORMAT) # uid > 8 digits tarinfo = tarfile.TarInfo("name") tarinfo.uid = 010000000 - self.assertRaises(ValueError, tarinfo.create_ustar_header) + self.assertRaises(ValueError, tarinfo.tobuf, tarfile.USTAR_FORMAT) def test_gnu_limits(self): tarinfo = tarfile.TarInfo("123/" * 126 + "longname") - tarinfo.create_gnu_header() + tarinfo.tobuf(tarfile.GNU_FORMAT) tarinfo = tarfile.TarInfo("longlink") tarinfo.linkname = "123/" * 126 + "longname" - tarinfo.create_gnu_header() + tarinfo.tobuf(tarfile.GNU_FORMAT) # uid >= 256 ** 7 tarinfo = tarfile.TarInfo("name") tarinfo.uid = 04000000000000000000 - self.assertRaises(ValueError, tarinfo.create_gnu_header) + self.assertRaises(ValueError, tarinfo.tobuf, tarfile.GNU_FORMAT) def test_pax_limits(self): - # A 256 char name that can be stored without an extended header. - tarinfo = tarfile.TarInfo("123/" * 62 + "longname") - self.assert_(len(tarinfo.create_pax_header("utf8")) == 512, - "create_pax_header attached superfluous extended header") - tarinfo = tarfile.TarInfo("123/" * 126 + "longname") - tarinfo.create_pax_header("utf8") + tarinfo.tobuf(tarfile.PAX_FORMAT) tarinfo = tarfile.TarInfo("longlink") tarinfo.linkname = "123/" * 126 + "longname" - tarinfo.create_pax_header("utf8") + tarinfo.tobuf(tarfile.PAX_FORMAT) tarinfo = tarfile.TarInfo("name") tarinfo.uid = 04000000000000000000 - tarinfo.create_pax_header("utf8") + tarinfo.tobuf(tarfile.PAX_FORMAT) class GzipMiscReadTest(MiscReadTest): @@ -940,6 +1052,9 @@ def test_main(): StreamWriteTest, GNUWriteTest, PaxWriteTest, + UstarUnicodeTest, + GNUUnicodeTest, + PaxUnicodeTest, AppendTest, LimitsTest, ] diff --git a/Lib/test/test_tokenize.py b/Lib/test/test_tokenize.py index 0880f0f..7e1708e 100644 --- a/Lib/test/test_tokenize.py +++ b/Lib/test/test_tokenize.py @@ -19,7 +19,7 @@ whether the line contains the completion of a statement. >>> dump_tokens("if False:\\n" ... " # NL\\n" -... " True = False # NEWLINE\\n") +... " a = False # NEWLINE\\n") NAME 'if' (1, 0) (1, 2) NAME 'False' (1, 3) (1, 8) OP ':' (1, 8) (1, 9) @@ -27,7 +27,7 @@ NEWLINE '\\n' (1, 9) (1, 10) COMMENT '# NL' (2, 4) (2, 8) NL '\\n' (2, 8) (2, 9) INDENT ' ' (3, 0) (3, 4) -NAME 'True' (3, 4) (3, 8) +NAME 'a' (3, 4) (3, 5) OP '=' (3, 9) (3, 10) NAME 'False' (3, 11) (3, 16) COMMENT '# NEWLINE' (3, 17) (3, 26) diff --git a/Lib/test/test_traceback.py b/Lib/test/test_traceback.py index 1b9e2f8..98d3beb 100644 --- a/Lib/test/test_traceback.py +++ b/Lib/test/test_traceback.py @@ -52,58 +52,13 @@ class TracebackCases(unittest.TestCase): self.assert_("^" in err[2]) self.assert_(err[1].find(")") == err[2].find("^")) - def test_bug737473(self): - import sys, os, tempfile, time - - savedpath = sys.path[:] - testdir = tempfile.mkdtemp() - try: - sys.path.insert(0, testdir) - testfile = os.path.join(testdir, 'test_bug737473.py') - print(""" -def test(): - raise ValueError""", file=open(testfile, 'w')) - - if 'test_bug737473' in sys.modules: - del sys.modules['test_bug737473'] - import test_bug737473 - - try: - test_bug737473.test() - except ValueError: - # this loads source code to linecache - traceback.extract_tb(sys.exc_traceback) - - # If this test runs too quickly, test_bug737473.py's mtime - # attribute will remain unchanged even if the file is rewritten. - # Consequently, the file would not reload. So, added a sleep() - # delay to assure that a new, distinct timestamp is written. - # Since WinME with FAT32 has multisecond resolution, more than - # three seconds are needed for this test to pass reliably :-( - time.sleep(4) - - print(""" -def test(): - raise NotImplementedError""", file=open(testfile, 'w')) - reload(test_bug737473) - try: - test_bug737473.test() - except NotImplementedError: - src = traceback.extract_tb(sys.exc_traceback)[-1][-1] - self.failUnlessEqual(src, 'raise NotImplementedError') - finally: - sys.path[:] = savedpath - for f in os.listdir(testdir): - os.unlink(os.path.join(testdir, f)) - os.rmdir(testdir) - def test_members(self): # Covers Python/structmember.c::listmembers() try: 1/0 except: import sys - sys.exc_traceback.__members__ + sys.exc_info()[2].__members__ def test_base_exception(self): # Test that exceptions derived from BaseException are formatted right diff --git a/Lib/test/test_urllib.py b/Lib/test/test_urllib.py index a62afde..7a3f207 100644 --- a/Lib/test/test_urllib.py +++ b/Lib/test/test_urllib.py @@ -8,6 +8,10 @@ import os import mimetools import tempfile import StringIO +import ftplib +import threading +import socket +import time def hexescape(char): """Escape char as RFC 2396 specifies""" @@ -541,6 +545,76 @@ class Pathname_Tests(unittest.TestCase): "url2pathname() failed; %s != %s" % (expect, result)) +# Just commented them out. +# Can't really tell why keep failing in windows and sparc. +# Everywhere else they work ok, but on those machines, someteimes +# fail in one of the tests, sometimes in other. I have a linux, and +# the tests go ok. +# If anybody has one of the problematic enviroments, please help! +# . Facundo +# +# def server(evt): +# serv = socket.socket(socket.AF_INET, socket.SOCK_STREAM) +# serv.settimeout(3) +# serv.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) +# serv.bind(("", 9093)) +# serv.listen(5) +# try: +# conn, addr = serv.accept() +# conn.send("1 Hola mundo\n") +# cantdata = 0 +# while cantdata < 13: +# data = conn.recv(13-cantdata) +# cantdata += len(data) +# time.sleep(.3) +# conn.send("2 No more lines\n") +# conn.close() +# except socket.timeout: +# pass +# finally: +# serv.close() +# evt.set() +# +# class FTPWrapperTests(unittest.TestCase): +# +# def setUp(self): +# ftplib.FTP.port = 9093 +# self.evt = threading.Event() +# threading.Thread(target=server, args=(self.evt,)).start() +# time.sleep(.1) +# +# def tearDown(self): +# self.evt.wait() +# +# def testBasic(self): +# # connects +# ftp = urllib.ftpwrapper("myuser", "mypass", "localhost", 9093, []) +# ftp.ftp.sock.close() +# +# def testTimeoutDefault(self): +# # default +# ftp = urllib.ftpwrapper("myuser", "mypass", "localhost", 9093, []) +# self.assertTrue(ftp.ftp.sock.gettimeout() is None) +# ftp.ftp.sock.close() +# +# def testTimeoutValue(self): +# # a value +# ftp = urllib.ftpwrapper("myuser", "mypass", "localhost", 9093, [], timeout=30) +# self.assertEqual(ftp.ftp.sock.gettimeout(), 30) +# ftp.ftp.sock.close() +# +# def testTimeoutNone(self): +# # None, having other default +# previous = socket.getdefaulttimeout() +# socket.setdefaulttimeout(30) +# try: +# ftp = urllib.ftpwrapper("myuser", "mypass", "localhost", 9093, []) +# finally: +# socket.setdefaulttimeout(previous) +# self.assertEqual(ftp.ftp.sock.gettimeout(), 30) +# ftp.ftp.close() +# + def test_main(): @@ -551,7 +625,8 @@ def test_main(): QuotingTests, UnquotingTests, urlencode_Tests, - Pathname_Tests + Pathname_Tests, + #FTPWrapperTests, ) diff --git a/Lib/test/test_xmlrpc.py b/Lib/test/test_xmlrpc.py index 76ec018..1bf6294 100644 --- a/Lib/test/test_xmlrpc.py +++ b/Lib/test/test_xmlrpc.py @@ -17,7 +17,7 @@ alist = [{'astring': 'foo@bar.baz.spam', 'ashortlong': 2, 'anotherlist': ['.zyx.41'], 'abase64': xmlrpclib.Binary("my dog has fleas"), - 'boolean': xmlrpclib.False, + 'boolean': False, 'unicode': '\u4000\u6000\u8000', 'ukey\u4000': 'regular value', 'datetime1': xmlrpclib.DateTime('20050210T11:41:23'), @@ -133,10 +133,11 @@ class XMLRPCTestCase(unittest.TestCase): """ # sys.setdefaultencoding() normally doesn't exist after site.py is - # loaded. reload(sys) is the way to get it back. + # loaded. Re-initializing sys again is the way to get it back. :-( old_encoding = sys.getdefaultencoding() setdefaultencoding_existed = hasattr(sys, "setdefaultencoding") - reload(sys) # ugh! + import imp + imp.init_builtin('sys') sys.setdefaultencoding("iso-8859-1") try: (s, d), m = xmlrpclib.loads(utf8) diff --git a/Lib/test/testtar.tar b/Lib/test/testtar.tar Binary files differindex c4c82b8..3529bdf 100644 --- a/Lib/test/testtar.tar +++ b/Lib/test/testtar.tar |