summaryrefslogtreecommitdiffstats
path: root/Lib/test
diff options
context:
space:
mode:
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."""