summaryrefslogtreecommitdiffstats
path: root/Lib/test
diff options
context:
space:
mode:
authorThomas Wouters <thomas@python.org>2007-02-05 01:24:16 (GMT)
committerThomas Wouters <thomas@python.org>2007-02-05 01:24:16 (GMT)
commit9fe394c1be9401c2b207b943f82e30af4ee32ab6 (patch)
treedb22bd046c9371b262c76c4bf59fee588e1d7c71 /Lib/test
parent08f00467b977325c55c99b160a29fd854597ccfe (diff)
downloadcpython-9fe394c1be9401c2b207b943f82e30af4ee32ab6.zip
cpython-9fe394c1be9401c2b207b943f82e30af4ee32ab6.tar.gz
cpython-9fe394c1be9401c2b207b943f82e30af4ee32ab6.tar.bz2
Merged revisions 53538-53622 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk ........ r53545 | andrew.kuchling | 2007-01-24 21:06:41 +0100 (Wed, 24 Jan 2007) | 1 line Strengthen warning about using lock() ........ r53556 | thomas.heller | 2007-01-25 19:34:14 +0100 (Thu, 25 Jan 2007) | 3 lines Fix for #1643874: When calling SysAllocString, create a PyCObject which will eventually call SysFreeString to free the BSTR resource. ........ r53563 | andrew.kuchling | 2007-01-25 21:02:13 +0100 (Thu, 25 Jan 2007) | 1 line Add item ........ r53564 | brett.cannon | 2007-01-25 21:22:02 +0100 (Thu, 25 Jan 2007) | 8 lines Fix time.strptime's %U support. Basically rewrote the algorithm to be more generic so that one only has to shift certain values based on whether the week was specified to start on Monday or Sunday. Cut out a lot of edge case code compared to the previous version. Also broke algorithm out into its own function (that is private to the module). Fixes bug #1643943 (thanks Biran Nahas for the report). ........ r53570 | brett.cannon | 2007-01-26 00:30:39 +0100 (Fri, 26 Jan 2007) | 4 lines Remove specific mention of my name and email address from modules. Not really needed and all bug reports should go to the bug tracker, not directly to me. Plus I am not the only person to have edited these files at this point. ........ r53573 | fred.drake | 2007-01-26 17:28:44 +0100 (Fri, 26 Jan 2007) | 1 line fix typo (extraneous ")") ........ r53575 | georg.brandl | 2007-01-27 18:43:02 +0100 (Sat, 27 Jan 2007) | 4 lines Patch #1638243: the compiler package is now able to correctly compile a with statement; previously, executing code containing a with statement compiled by the compiler package crashed the interpreter. ........ r53578 | georg.brandl | 2007-01-27 18:59:42 +0100 (Sat, 27 Jan 2007) | 3 lines Patch #1634778: add missing encoding aliases for iso8859_15 and iso8859_16. ........ r53579 | georg.brandl | 2007-01-27 20:38:50 +0100 (Sat, 27 Jan 2007) | 2 lines Bug #1645944: os.access now returns bool but docstring is not updated ........ r53590 | brett.cannon | 2007-01-28 21:58:00 +0100 (Sun, 28 Jan 2007) | 2 lines Use the thread lock's context manager instead of a try/finally statement. ........ r53591 | brett.cannon | 2007-01-29 05:41:44 +0100 (Mon, 29 Jan 2007) | 2 lines Add a test for slicing an exception. ........ r53594 | andrew.kuchling | 2007-01-29 21:21:43 +0100 (Mon, 29 Jan 2007) | 1 line Minor edits to the curses HOWTO ........ r53596 | andrew.kuchling | 2007-01-29 21:55:40 +0100 (Mon, 29 Jan 2007) | 1 line Various minor edits ........ r53597 | andrew.kuchling | 2007-01-29 22:28:48 +0100 (Mon, 29 Jan 2007) | 1 line More edits ........ r53601 | tim.peters | 2007-01-30 04:03:46 +0100 (Tue, 30 Jan 2007) | 2 lines Whitespace normalization. ........ r53603 | georg.brandl | 2007-01-30 21:21:30 +0100 (Tue, 30 Jan 2007) | 2 lines Bug #1648191: typo in docs. ........ r53605 | brett.cannon | 2007-01-30 22:34:36 +0100 (Tue, 30 Jan 2007) | 8 lines No more raising of string exceptions! The next step of PEP 352 (for 2.6) causes raising a string exception to trigger a TypeError. Trying to catch a string exception raises a DeprecationWarning. References to string exceptions has been removed from the docs since they are now just an error. ........ r53618 | raymond.hettinger | 2007-02-01 22:02:59 +0100 (Thu, 01 Feb 2007) | 1 line Bug #1648179: set.update() not recognizing __iter__ overrides in dict subclasses. ........
Diffstat (limited to 'Lib/test')
-rw-r--r--Lib/test/test_cfgparser.py6
-rw-r--r--Lib/test/test_compiler.py31
-rw-r--r--Lib/test/test_dumbdbm.py4
-rw-r--r--Lib/test/test_exceptions.py7
-rw-r--r--Lib/test/test_gzip.py2
-rw-r--r--Lib/test/test_mailbox.py8
-rw-r--r--Lib/test/test_old_mailbox.py2
-rw-r--r--Lib/test/test_pep352.py54
-rw-r--r--Lib/test/test_pty.py6
-rw-r--r--Lib/test/test_resource.py4
-rw-r--r--Lib/test/test_set.py4
-rw-r--r--Lib/test/test_strptime.py4
-rw-r--r--Lib/test/test_struct.py98
-rw-r--r--Lib/test/test_support.py2
14 files changed, 155 insertions, 77 deletions
diff --git a/Lib/test/test_cfgparser.py b/Lib/test/test_cfgparser.py
index 1b288b4..8aa1df3 100644
--- a/Lib/test/test_cfgparser.py
+++ b/Lib/test/test_cfgparser.py
@@ -15,7 +15,7 @@ class SortedDict(UserDict.UserDict):
result = self.data.keys()
result.sort()
return result
-
+
def values(self):
result = self.items()
return [i[1] for i in values]
@@ -446,12 +446,12 @@ class SortedTestCase(RawConfigParserTestCase):
"o2=3\n"
"o1=4\n"
"[a]\n"
- "k=v\n")
+ "k=v\n")
output = StringIO.StringIO()
self.cf.write(output)
self.assertEquals(output.getvalue(),
"[a]\n"
- "k = v\n\n"
+ "k = v\n\n"
"[b]\n"
"o1 = 4\n"
"o2 = 3\n"
diff --git a/Lib/test/test_compiler.py b/Lib/test/test_compiler.py
index ebccb36..7320368 100644
--- a/Lib/test/test_compiler.py
+++ b/Lib/test/test_compiler.py
@@ -7,6 +7,12 @@ from random import random
# How much time in seconds can pass before we print a 'Still working' message.
_PRINT_WORKING_MSG_INTERVAL = 5 * 60
+class TrivialContext(object):
+ def __enter__(self):
+ return self
+ def __exit__(self, *exc_info):
+ pass
+
class CompilerTest(unittest.TestCase):
def testCompileLibrary(self):
@@ -157,6 +163,31 @@ class CompilerTest(unittest.TestCase):
exec(c, dct)
self.assertEquals(dct['f'].func_annotations, expected)
+ def testWith(self):
+ # SF bug 1638243
+ c = compiler.compile('from __future__ import with_statement\n'
+ 'def f():\n'
+ ' with TrivialContext():\n'
+ ' return 1\n'
+ 'result = f()',
+ '<string>',
+ 'exec' )
+ dct = {'TrivialContext': TrivialContext}
+ exec(c, dct)
+ self.assertEquals(dct.get('result'), 1)
+
+ def testWithAss(self):
+ c = compiler.compile('from __future__ import with_statement\n'
+ 'def f():\n'
+ ' with TrivialContext() as tc:\n'
+ ' return 1\n'
+ 'result = f()',
+ '<string>',
+ 'exec' )
+ dct = {'TrivialContext': TrivialContext}
+ exec(c, dct)
+ self.assertEquals(dct.get('result'), 1)
+
NOLINENO = (compiler.ast.Module, compiler.ast.Stmt, compiler.ast.Discard)
diff --git a/Lib/test/test_dumbdbm.py b/Lib/test/test_dumbdbm.py
index 62fa3dd..041fac1 100644
--- a/Lib/test/test_dumbdbm.py
+++ b/Lib/test/test_dumbdbm.py
@@ -49,7 +49,7 @@ class DumbDBMTestCase(unittest.TestCase):
f.close()
finally:
os.umask(old_umask)
-
+
expected_mode = 0635
if os.name != 'posix':
# Windows only supports setting the read-only attribute.
@@ -61,7 +61,7 @@ class DumbDBMTestCase(unittest.TestCase):
self.assertEqual(stat.S_IMODE(st.st_mode), expected_mode)
st = os.stat(_fname + '.dir')
self.assertEqual(stat.S_IMODE(st.st_mode), expected_mode)
-
+
def test_close_twice(self):
f = dumbdbm.open(_fname)
f['a'] = 'b'
diff --git a/Lib/test/test_exceptions.py b/Lib/test/test_exceptions.py
index 4a6b8c5..4891f4b 100644
--- a/Lib/test/test_exceptions.py
+++ b/Lib/test/test_exceptions.py
@@ -311,6 +311,13 @@ class ExceptionTests(unittest.TestCase):
'pickled "%r", attribute "%s' %
(e, checkArgName))
+ def testSlicing(self):
+ # Test that you can slice an exception directly instead of requiring
+ # going through the 'args' attribute.
+ args = (1, 2, 3)
+ exc = BaseException(*args)
+ self.failUnlessEqual(exc[:], args)
+
def testKeywordArgs(self):
# test that builtin exception don't take keyword args,
# but user-defined subclasses can if they want
diff --git a/Lib/test/test_gzip.py b/Lib/test/test_gzip.py
index 9989a92..fbdbc30 100644
--- a/Lib/test/test_gzip.py
+++ b/Lib/test/test_gzip.py
@@ -138,7 +138,7 @@ class TestGzip(unittest.TestCase):
y = f.read(10)
f.close()
self.assertEquals(y, data1[20:30])
-
+
def test_seek_write(self):
# Try seek, write test
f = gzip.GzipFile(self.filename, 'w')
diff --git a/Lib/test/test_mailbox.py b/Lib/test/test_mailbox.py
index 41ca7c2..eb675f6 100644
--- a/Lib/test/test_mailbox.py
+++ b/Lib/test/test_mailbox.py
@@ -674,11 +674,11 @@ class TestMaildir(TestMailbox):
box = self._factory(self._path, factory=dummy_factory)
folder = box.add_folder('folder1')
self.assert_(folder._factory is dummy_factory)
-
+
folder1_alias = box.get_folder('folder1')
self.assert_(folder1_alias._factory is dummy_factory)
-
+
class _TestMboxMMDF(TestMailbox):
@@ -798,7 +798,7 @@ class TestMH(TestMailbox):
def dummy_factory (s):
return None
self._box = self._factory(self._path, dummy_factory)
-
+
new_folder = self._box.add_folder('foo.bar')
folder0 = self._box.get_folder('foo.bar')
folder0.add(self._template % 'bar')
@@ -894,7 +894,7 @@ class TestMH(TestMailbox):
self.assert_(self._box.get_sequences() ==
{'foo':[1, 2, 3, 4, 5],
'unseen':[1], 'bar':[3], 'replied':[3]})
-
+
def _get_lock_path(self):
return os.path.join(self._path, '.mh_sequences.lock')
diff --git a/Lib/test/test_old_mailbox.py b/Lib/test/test_old_mailbox.py
index c8f6bac..7bd5557 100644
--- a/Lib/test/test_old_mailbox.py
+++ b/Lib/test/test_old_mailbox.py
@@ -116,7 +116,7 @@ class MboxTestCase(unittest.TestCase):
def tearDown(self):
os.unlink(self._path)
-
+
def test_from_regex (self):
# Testing new regex from bug #1633678
f = open(self._path, 'w')
diff --git a/Lib/test/test_pep352.py b/Lib/test/test_pep352.py
index 75610b6..7f4a3dc 100644
--- a/Lib/test/test_pep352.py
+++ b/Lib/test/test_pep352.py
@@ -2,7 +2,7 @@ import unittest
import __builtin__
import exceptions
import warnings
-from test.test_support import run_unittest
+from test.test_support import run_unittest, guard_warnings_filter
import os
from platform import system as platform_system
@@ -113,13 +113,11 @@ class UsageTests(unittest.TestCase):
"""Test usage of exceptions"""
- def setUp(self):
- self._filters = warnings.filters[:]
-
- def tearDown(self):
- warnings.filters = self._filters[:]
-
def test_raise_new_style_non_exception(self):
+ # You cannot raise a new-style class that does not inherit from
+ # BaseException; the ability was not possible until BaseException's
+ # introduction so no need to support new-style objects that do not
+ # inherit from it.
class NewStyleClass(object):
pass
try:
@@ -127,13 +125,51 @@ class UsageTests(unittest.TestCase):
except TypeError:
pass
except:
- self.fail("unable to raise new-style class")
+ self.fail("able to raise new-style class")
try:
raise NewStyleClass()
except TypeError:
pass
except:
- self.fail("unable to raise new-style class instance")
+ self.fail("able to raise new-style class instance")
+
+ def test_raise_string(self):
+ # Raising a string raises TypeError.
+ try:
+ raise "spam"
+ except TypeError:
+ pass
+ except:
+ self.fail("was able to raise a string exception")
+
+ def test_catch_string(self):
+ # Catching a string should trigger a DeprecationWarning.
+ with guard_warnings_filter():
+ warnings.resetwarnings()
+ warnings.filterwarnings("error")
+ str_exc = "spam"
+ try:
+ try:
+ raise StandardError
+ except str_exc:
+ pass
+ except DeprecationWarning:
+ pass
+ except StandardError:
+ self.fail("catching a string exception did not raise "
+ "DeprecationWarning")
+ # Make sure that even if the string exception is listed in a tuple
+ # that a warning is raised.
+ try:
+ try:
+ raise StandardError
+ except (AssertionError, str_exc):
+ pass
+ except DeprecationWarning:
+ pass
+ except StandardError:
+ self.fail("catching a string exception specified in a tuple did "
+ "not raise DeprecationWarning")
def test_main():
run_unittest(ExceptionClassTests, UsageTests)
diff --git a/Lib/test/test_pty.py b/Lib/test/test_pty.py
index 8a83e39..02290be 100644
--- a/Lib/test/test_pty.py
+++ b/Lib/test/test_pty.py
@@ -120,7 +120,7 @@ else:
##if False and lines != ['In child, calling os.setsid()',
## 'Good: OSError was raised.', '']:
## raise TestFailed("Unexpected output from child: %r" % line)
-
+
(pid, status) = os.waitpid(pid, 0)
res = status >> 8
debug("Child (%d) exited with status %d (%d)."%(pid, res, status))
@@ -140,8 +140,8 @@ else:
## pass
##else:
## raise TestFailed("Read from master_fd did not raise exception")
-
-
+
+
os.close(master_fd)
# pty.fork() passed.
diff --git a/Lib/test/test_resource.py b/Lib/test/test_resource.py
index dd66e35..2450e78 100644
--- a/Lib/test/test_resource.py
+++ b/Lib/test/test_resource.py
@@ -15,7 +15,7 @@ class ResourceTest(unittest.TestCase):
self.assertRaises(TypeError, resource.setrlimit, 42, 42, 42)
def test_fsize_ismax(self):
-
+
try:
(cur, max) = resource.getrlimit(resource.RLIMIT_FSIZE)
except AttributeError:
@@ -39,7 +39,7 @@ class ResourceTest(unittest.TestCase):
# versions of Python were terminated by an uncaught SIGXFSZ, but
# pythonrun.c has been fixed to ignore that exception. If so, the
# write() should return EFBIG when the limit is exceeded.
-
+
# At least one platform has an unlimited RLIMIT_FSIZE and attempts
# to change it raise ValueError instead.
try:
diff --git a/Lib/test/test_set.py b/Lib/test/test_set.py
index a1c797c..e1a98a3 100644
--- a/Lib/test/test_set.py
+++ b/Lib/test/test_set.py
@@ -481,7 +481,7 @@ class SetSubclassWithKeywordArgs(set):
set.__init__(self, iterable)
class TestSetSubclassWithKeywordArgs(TestSet):
-
+
def test_keywords_in_subclass(self):
'SF bug #1486663 -- this used to erroneously raise a TypeError'
SetSubclassWithKeywordArgs(newarg=1)
@@ -1464,7 +1464,7 @@ def test_main(verbose=None):
test_classes = (
TestSet,
TestSetSubclass,
- TestSetSubclassWithKeywordArgs,
+ TestSetSubclassWithKeywordArgs,
TestFrozenSet,
TestFrozenSetSubclass,
TestSetOfSets,
diff --git a/Lib/test/test_strptime.py b/Lib/test/test_strptime.py
index df94f7b..c1af281 100644
--- a/Lib/test/test_strptime.py
+++ b/Lib/test/test_strptime.py
@@ -463,6 +463,10 @@ class CalculationTests(unittest.TestCase):
"of the year")
test_helper((1917, 12, 31), "Dec 31 on Monday with year starting and "
"ending on Monday")
+ test_helper((2007, 01, 07), "First Sunday of 2007")
+ test_helper((2007, 01, 14), "Second Sunday of 2007")
+ test_helper((2006, 12, 31), "Last Sunday of 2006")
+ test_helper((2006, 12, 24), "Second to last Sunday of 2006")
class CacheTests(unittest.TestCase):
diff --git a/Lib/test/test_struct.py b/Lib/test/test_struct.py
index 8b241a6..e0f0971 100644
--- a/Lib/test/test_struct.py
+++ b/Lib/test/test_struct.py
@@ -119,7 +119,7 @@ for prefix in ('', '@', '<', '>', '=', '!'):
cp, bp, hp, ip, lp, fp, dp, tp = struct.unpack(format, s)
if (cp != c or bp != b or hp != h or ip != i or lp != l or
int(100 * fp) != int(100 * f) or int(100 * dp) != int(100 * d) or
- tp != t):
+ tp != t):
# ^^^ calculate only to two decimal places
raise TestFailed, "unpack/pack not transitive (%s, %s)" % (
str(format), str((cp, bp, hp, ip, lp, fp, dp, tp)))
@@ -160,11 +160,11 @@ tests = [
('f', -2.0, '\300\000\000\000', '\000\000\000\300', 0),
('d', -2.0, '\300\000\000\000\000\000\000\000',
'\000\000\000\000\000\000\000\300', 0),
- ('t', 0, '\0', '\0', 0),
- ('t', 3, '\1', '\1', 1),
- ('t', True, '\1', '\1', 0),
- ('t', [], '\0', '\0', 1),
- ('t', (1,), '\1', '\1', 1),
+ ('t', 0, '\0', '\0', 0),
+ ('t', 3, '\1', '\1', 1),
+ ('t', True, '\1', '\1', 0),
+ ('t', [], '\0', '\0', 1),
+ ('t', (1,), '\1', '\1', 1),
]
for fmt, arg, big, lil, asy in tests:
@@ -621,48 +621,48 @@ test_pack_into()
test_pack_into_fn()
def test_bool():
- for prefix in tuple("<>!=")+('',):
- false = (), [], [], '', 0
- true = [1], 'test', 5, -1, 0xffffffff+1, 0xffffffff/2
-
- falseFormat = prefix + 't' * len(false)
- if verbose:
- print 'trying bool pack/unpack on', false, 'using format', falseFormat
- packedFalse = struct.pack(falseFormat, *false)
- unpackedFalse = struct.unpack(falseFormat, packedFalse)
-
- trueFormat = prefix + 't' * len(true)
- if verbose:
- print 'trying bool pack/unpack on', true, 'using format', trueFormat
- packedTrue = struct.pack(trueFormat, *true)
- unpackedTrue = struct.unpack(trueFormat, packedTrue)
-
- if len(true) != len(unpackedTrue):
- raise TestFailed('unpacked true array is not of same size as input')
- if len(false) != len(unpackedFalse):
- raise TestFailed('unpacked false array is not of same size as input')
-
- for t in unpackedFalse:
- if t is not False:
- raise TestFailed('%r did not unpack as False' % t)
- for t in unpackedTrue:
- if t is not True:
- raise TestFailed('%r did not unpack as false' % t)
-
- if prefix and verbose:
- print 'trying size of bool with format %r' % (prefix+'t')
- packed = struct.pack(prefix+'t', 1)
-
- if len(packed) != struct.calcsize(prefix+'t'):
- raise TestFailed('packed length is not equal to calculated size')
-
- if len(packed) != 1 and prefix:
- raise TestFailed('encoded bool is not one byte: %r' % packed)
- elif not prefix and verbose:
- print 'size of bool in native format is %i' % (len(packed))
-
- for c in '\x01\x7f\xff\x0f\xf0':
- if struct.unpack('>t', c)[0] is not True:
- raise TestFailed('%c did not unpack as True' % c)
+ for prefix in tuple("<>!=")+('',):
+ false = (), [], [], '', 0
+ true = [1], 'test', 5, -1, 0xffffffff+1, 0xffffffff/2
+
+ falseFormat = prefix + 't' * len(false)
+ if verbose:
+ print 'trying bool pack/unpack on', false, 'using format', falseFormat
+ packedFalse = struct.pack(falseFormat, *false)
+ unpackedFalse = struct.unpack(falseFormat, packedFalse)
+
+ trueFormat = prefix + 't' * len(true)
+ if verbose:
+ print 'trying bool pack/unpack on', true, 'using format', trueFormat
+ packedTrue = struct.pack(trueFormat, *true)
+ unpackedTrue = struct.unpack(trueFormat, packedTrue)
+
+ if len(true) != len(unpackedTrue):
+ raise TestFailed('unpacked true array is not of same size as input')
+ if len(false) != len(unpackedFalse):
+ raise TestFailed('unpacked false array is not of same size as input')
+
+ for t in unpackedFalse:
+ if t is not False:
+ raise TestFailed('%r did not unpack as False' % t)
+ for t in unpackedTrue:
+ if t is not True:
+ raise TestFailed('%r did not unpack as false' % t)
+
+ if prefix and verbose:
+ print 'trying size of bool with format %r' % (prefix+'t')
+ packed = struct.pack(prefix+'t', 1)
+
+ if len(packed) != struct.calcsize(prefix+'t'):
+ raise TestFailed('packed length is not equal to calculated size')
+
+ if len(packed) != 1 and prefix:
+ raise TestFailed('encoded bool is not one byte: %r' % packed)
+ elif not prefix and verbose:
+ print 'size of bool in native format is %i' % (len(packed))
+
+ for c in '\x01\x7f\xff\x0f\xf0':
+ if struct.unpack('>t', c)[0] is not True:
+ raise TestFailed('%c did not unpack as True' % c)
test_bool()
diff --git a/Lib/test/test_support.py b/Lib/test/test_support.py
index 6115800..0b37306 100644
--- a/Lib/test/test_support.py
+++ b/Lib/test/test_support.py
@@ -270,7 +270,7 @@ def open_urlresource(url):
print >> get_original_stdout(), '\tfetching %s ...' % url
fn, _ = urllib.urlretrieve(url, filename)
return open(fn)
-
+
@contextmanager
def guard_warnings_filter():
"""Guard the warnings filter from being permanently changed."""