diff options
Diffstat (limited to 'Lib/test')
-rw-r--r-- | Lib/test/test_collections.py | 8 | ||||
-rw-r--r-- | Lib/test/test_contextlib.py | 12 | ||||
-rw-r--r-- | Lib/test/test_descr.py | 4 | ||||
-rw-r--r-- | Lib/test/test_doctest2.py | 4 | ||||
-rw-r--r-- | Lib/test/test_docxmlrpc.py | 29 | ||||
-rw-r--r-- | Lib/test/test_functools.py | 28 | ||||
-rw-r--r-- | Lib/test/test_inspect.py | 2 | ||||
-rw-r--r-- | Lib/test/test_pkg.py | 17 | ||||
-rw-r--r-- | Lib/test/test_property.py | 41 | ||||
-rw-r--r-- | Lib/test/test_pydoc.py | 4 | ||||
-rw-r--r-- | Lib/test/test_unittest.py | 8 | ||||
-rw-r--r-- | Lib/test/test_xmlrpc.py | 19 |
12 files changed, 149 insertions, 27 deletions
diff --git a/Lib/test/test_collections.py b/Lib/test/test_collections.py index 2dc7157..467ddef 100644 --- a/Lib/test/test_collections.py +++ b/Lib/test/test_collections.py @@ -10,6 +10,7 @@ from random import randrange, shuffle import operator import keyword import re +import sys from collections import Hashable, Iterable, Iterator from collections import Sized, Container, Callable from collections import Set, MutableSet @@ -24,7 +25,6 @@ class TestNamedTuple(unittest.TestCase): def test_factory(self): Point = namedtuple('Point', 'x y') self.assertEqual(Point.__name__, 'Point') - self.assertEqual(Point.__doc__, 'Point(x, y)') self.assertEqual(Point.__slots__, ()) self.assertEqual(Point.__module__, __name__) self.assertEqual(Point.__getitem__, tuple.__getitem__) @@ -51,6 +51,12 @@ class TestNamedTuple(unittest.TestCase): self.assertRaises(TypeError, Point._make, [11]) # catch too few args self.assertRaises(TypeError, Point._make, [11, 22, 33]) # catch too many args + @unittest.skipIf(sys.flags.optimize >= 2, + "Docstrings are omitted with -O2 and above") + def test_factory_doc_attr(self): + Point = namedtuple('Point', 'x y') + self.assertEqual(Point.__doc__, 'Point(x, y)') + def test_name_fixer(self): for spec, renamed in [ [('efg', 'g%hi'), ('efg', '_1')], # field with non-alpha char diff --git a/Lib/test/test_contextlib.py b/Lib/test/test_contextlib.py index f000f76..ae18085 100644 --- a/Lib/test/test_contextlib.py +++ b/Lib/test/test_contextlib.py @@ -4,6 +4,7 @@ import sys import os import decimal +import sys import tempfile import unittest import threading @@ -85,7 +86,7 @@ class ContextManagerTestCase(unittest.TestCase): raise ZeroDivisionError(999) self.assertEqual(state, [1, 42, 999]) - def test_contextmanager_attribs(self): + def _create_contextmanager_attribs(self): def attribs(**kw): def decorate(func): for k,v in kw.items(): @@ -96,8 +97,17 @@ class ContextManagerTestCase(unittest.TestCase): @attribs(foo='bar') def baz(spam): """Whee!""" + return baz + + def test_contextmanager_attribs(self): + baz = self._create_contextmanager_attribs() self.assertEqual(baz.__name__,'baz') self.assertEqual(baz.foo, 'bar') + + @unittest.skipIf(sys.flags.optimize >= 2, + "Docstrings are omitted with -O2 and above") + def test_contextmanager_doc_attrib(self): + baz = self._create_contextmanager_attribs() self.assertEqual(baz.__doc__, "Whee!") class ClosingTestCase(unittest.TestCase): diff --git a/Lib/test/test_descr.py b/Lib/test/test_descr.py index 93c4a19..95a68c0 100644 --- a/Lib/test/test_descr.py +++ b/Lib/test/test_descr.py @@ -1817,6 +1817,9 @@ order (MRO) for bases """ else: self.fail("expected ZeroDivisionError from bad property") + @unittest.skipIf(sys.flags.optimize >= 2, + "Docstrings are omitted with -O2 and above") + def test_properties_doc_attrib(self): class E(object): def getter(self): "getter method" @@ -1829,6 +1832,7 @@ order (MRO) for bases """ prop2 = property(fset=setter) self.assertEqual(prop2.__doc__, None) + def test_testcapi_no_segfault(self): # this segfaulted in 2.5b2 try: import _testcapi diff --git a/Lib/test/test_doctest2.py b/Lib/test/test_doctest2.py index 86334d7..8500ed5 100644 --- a/Lib/test/test_doctest2.py +++ b/Lib/test/test_doctest2.py @@ -12,7 +12,11 @@ the example. It should be ignored: """ +import sys +import unittest from test import support +if sys.flags.optimize >= 2: + raise unittest.SkipTest("Cannot test docstrings with -O2") class C(object): """Class C. diff --git a/Lib/test/test_docxmlrpc.py b/Lib/test/test_docxmlrpc.py index d0b604c..5306c31 100644 --- a/Lib/test/test_docxmlrpc.py +++ b/Lib/test/test_docxmlrpc.py @@ -1,5 +1,6 @@ from xmlrpc.server import DocXMLRPCServer import http.client +import sys from test import support import threading import time @@ -7,6 +8,20 @@ import unittest PORT = None +def make_request_and_skipIf(condition, reason): + # If we skip the test, we have to make a request because the + # the server created in setUp blocks expecting one to come in. + if not condition: + return lambda func: func + def decorator(func): + def make_request_and_skip(self): + self.client.request("GET", "/") + self.client.getresponse() + raise unittest.SkipTest(reason) + return make_request_and_skip + return decorator + + def server(evt, numrequests): serv = DocXMLRPCServer(("localhost", 0), logRequests=False) @@ -110,10 +125,12 @@ class DocXMLRPCHTTPGETServer(unittest.TestCase): b'<lambda></strong></a>(x, y)</dt></dl>'), response.read()) + @make_request_and_skipIf(sys.flags.optimize >= 2, + "Docstrings are omitted with -O2 and above") def test_autolinking(self): - """Test that the server correctly automatically wraps references to PEPS - and RFCs with links, and that it linkifies text starting with http or - ftp protocol prefixes. + """Test that the server correctly automatically wraps references to + PEPS and RFCs with links, and that it linkifies text starting with + http or ftp protocol prefixes. The documentation for the "add" method contains the test material. """ @@ -132,11 +149,13 @@ class DocXMLRPCHTTPGETServer(unittest.TestCase): b'auto-linked, too:<br>\n<a href="http://google.com">' b'http://google.com</a>.</tt></dd></dl>'), response) + @make_request_and_skipIf(sys.flags.optimize >= 2, + "Docstrings are omitted with -O2 and above") def test_system_methods(self): """Test the precense of three consecutive system.* methods. - This also tests their use of parameter type recognition and the systems - related to that process. + This also tests their use of parameter type recognition and the + systems related to that process. """ self.client.request("GET", "/") response = self.client.getresponse().read() diff --git a/Lib/test/test_functools.py b/Lib/test/test_functools.py index eff31e0..df335e8 100644 --- a/Lib/test/test_functools.py +++ b/Lib/test/test_functools.py @@ -1,4 +1,5 @@ import functools +import sys import unittest from test import support from weakref import proxy @@ -180,7 +181,7 @@ class TestUpdateWrapper(unittest.TestCase): for key in wrapped_attr: self.assertTrue(wrapped_attr[key] is wrapper_attr[key]) - def test_default_update(self): + def _default_update(self): def f(): """This is a test""" pass @@ -188,11 +189,20 @@ class TestUpdateWrapper(unittest.TestCase): def wrapper(): pass functools.update_wrapper(wrapper, f) + return wrapper, f + + def test_default_update(self): + wrapper, f = self._default_update() self.check_wrapper(wrapper, f) self.assertEqual(wrapper.__name__, 'f') - self.assertEqual(wrapper.__doc__, 'This is a test') self.assertEqual(wrapper.attr, 'This is also a test') + @unittest.skipIf(sys.flags.optimize >= 2, + "Docstrings are omitted with -O2 and above") + def test_default_update_doc(self): + wrapper, f = self._default_update() + self.assertEqual(wrapper.__doc__, 'This is a test') + def test_no_update(self): def f(): """This is a test""" @@ -233,7 +243,7 @@ class TestUpdateWrapper(unittest.TestCase): class TestWraps(TestUpdateWrapper): - def test_default_update(self): + def _default_update(self): def f(): """This is a test""" pass @@ -242,10 +252,19 @@ class TestWraps(TestUpdateWrapper): def wrapper(): pass self.check_wrapper(wrapper, f) + return wrapper + + def test_default_update(self): + wrapper = self._default_update() self.assertEqual(wrapper.__name__, 'f') - self.assertEqual(wrapper.__doc__, 'This is a test') self.assertEqual(wrapper.attr, 'This is also a test') + @unittest.skipIf(not sys.flags.optimize <= 1, + "Docstrings are omitted with -O2 and above") + def test_default_update_doc(self): + wrapper = self._default_update() + self.assertEqual(wrapper.__doc__, 'This is a test') + def test_no_update(self): def f(): """This is a test""" @@ -350,7 +369,6 @@ class TestReduce(unittest.TestCase): def test_main(verbose=None): - import sys test_classes = ( TestPartial, TestPartialSubclass, diff --git a/Lib/test/test_inspect.py b/Lib/test/test_inspect.py index 67d76be..ede793a 100644 --- a/Lib/test/test_inspect.py +++ b/Lib/test/test_inspect.py @@ -236,6 +236,8 @@ class TestRetrievingSourceCode(GetSourceBase): self.assertEqual(functions, [('eggs', mod.eggs), ('spam', mod.spam)]) + @unittest.skipIf(sys.flags.optimize >= 2, + "Docstrings are omitted with -O2 and above") def test_getdoc(self): self.assertEqual(inspect.getdoc(mod), 'A module docstring.') self.assertEqual(inspect.getdoc(mod.StupidGit), diff --git a/Lib/test/test_pkg.py b/Lib/test/test_pkg.py index 2e293f4..2c19589 100644 --- a/Lib/test/test_pkg.py +++ b/Lib/test/test_pkg.py @@ -53,7 +53,8 @@ class TestPkg(unittest.TestCase): def tearDown(self): sys.path[:] = self.syspath support.modules_cleanup(*self.modules_before) - cleanout(self.root) + if self.root: # Only clean if the test was actually run + cleanout(self.root) # delete all modules concerning the tested hiearchy if self.pkgname: @@ -103,9 +104,6 @@ class TestPkg(unittest.TestCase): ] self.mkhier(hier) - import t2 - self.assertEqual(t2.__doc__, "doc for t2") - import t2.sub import t2.sub.subsub self.assertEqual(t2.__name__, "t2") @@ -276,6 +274,17 @@ class TestPkg(unittest.TestCase): self.assertFalse(sub) self.assertFalse(subsub) + @unittest.skipIf(sys.flags.optimize >= 2, + "Docstrings are omitted with -O2 and above") + def test_8(self): + hier = [ + ("t8", None), + ("t8 __init__"+os.extsep+"py", "'doc for t8'"), + ] + self.mkhier(hier) + + import t8 + self.assertEqual(t8.__doc__, "doc for t8") def test_main(): support.run_unittest(__name__) diff --git a/Lib/test/test_property.py b/Lib/test/test_property.py index d9469d9..5d44fb0 100644 --- a/Lib/test/test_property.py +++ b/Lib/test/test_property.py @@ -1,6 +1,7 @@ # Test case for property # more tests are in test_descr +import sys import unittest from test.support import run_unittest @@ -91,7 +92,6 @@ class PropertyTests(unittest.TestCase): base.spam = 20 self.assertEqual(base.spam, 20) self.assertEqual(base._spam, 20) - self.assertEqual(base.__class__.spam.__doc__, "BaseClass.getter") def test_property_decorator_subclass(self): # see #1620 @@ -99,14 +99,27 @@ class PropertyTests(unittest.TestCase): self.assertRaises(PropertyGet, getattr, sub, "spam") self.assertRaises(PropertySet, setattr, sub, "spam", None) self.assertRaises(PropertyDel, delattr, sub, "spam") + + @unittest.skipIf(sys.flags.optimize >= 2, + "Docstrings are omitted with -O2 and above") + def test_property_decorator_subclass_doc(self): + sub = SubClass() self.assertEqual(sub.__class__.spam.__doc__, "SubClass.getter") + @unittest.skipIf(sys.flags.optimize >= 2, + "Docstrings are omitted with -O2 and above") + def test_property_decorator_baseclass_doc(self): + base = BaseClass() + self.assertEqual(base.__class__.spam.__doc__, "BaseClass.getter") + def test_property_decorator_doc(self): base = PropertyDocBase() sub = PropertyDocSub() self.assertEqual(base.__class__.spam.__doc__, "spam spam spam") self.assertEqual(sub.__class__.spam.__doc__, "spam spam spam") + @unittest.skipIf(sys.flags.optimize >= 1, + "Docstrings are omitted with -O2 and above") def test_property_getter_doc_override(self): newgettersub = PropertySubNewGetter() self.assertEqual(newgettersub.spam, 5) @@ -126,16 +139,6 @@ class PropertySubSlots(property): class PropertySubclassTests(unittest.TestCase): - def test_docstring_copy(self): - class Foo(object): - @PropertySub - def spam(self): - """spam wrapped in property subclass""" - return 1 - self.assertEqual( - Foo.spam.__doc__, - "spam wrapped in property subclass") - def test_slots_docstring_copy_exception(self): try: class Foo(object): @@ -148,6 +151,20 @@ class PropertySubclassTests(unittest.TestCase): else: raise Exception("AttributeError not raised") + @unittest.skipIf(sys.flags.optimize >= 2, + "Docstrings are omitted with -O2 and above") + def test_docstring_copy(self): + class Foo(object): + @PropertySub + def spam(self): + """spam wrapped in property subclass""" + return 1 + self.assertEqual( + Foo.spam.__doc__, + "spam wrapped in property subclass") + + @unittest.skipIf(sys.flags.optimize <= 2, + "Docstrings are omitted with -O2 and above") def test_property_setter_copies_getter_docstring(self): class Foo(object): def __init__(self): self._spam = 1 @@ -179,6 +196,8 @@ class PropertySubclassTests(unittest.TestCase): FooSub.spam.__doc__, "spam wrapped in property subclass") + @unittest.skipIf(sys.flags.optimize <= 2, + "Docstrings are omitted with -O2 and above") def test_property_new_getter_new_docstring(self): class Foo(object): diff --git a/Lib/test/test_pydoc.py b/Lib/test/test_pydoc.py index 5d99e43..bfa99e7 100644 --- a/Lib/test/test_pydoc.py +++ b/Lib/test/test_pydoc.py @@ -236,6 +236,8 @@ def print_diffs(text1, text2): class PyDocDocTest(unittest.TestCase): + @unittest.skipIf(sys.flags.optimize >= 2, + "Docstrings are omitted with -O2 and above") def test_html_doc(self): result, doc_loc = get_pydoc_html(pydoc_mod) mod_file = inspect.getabsfile(pydoc_mod) @@ -249,6 +251,8 @@ class PyDocDocTest(unittest.TestCase): print_diffs(expected_html, result) self.fail("outputs are not equal, see diff above") + @unittest.skipIf(sys.flags.optimize >= 2, + "Docstrings are omitted with -O2 and above") def test_text_doc(self): result, doc_loc = get_pydoc_text(pydoc_mod) expected_text = expected_text_pattern % \ diff --git a/Lib/test/test_unittest.py b/Lib/test/test_unittest.py index 8627312..75b9d0c 100644 --- a/Lib/test/test_unittest.py +++ b/Lib/test/test_unittest.py @@ -2051,6 +2051,8 @@ class Test_TestResult(TestCase): 'testGetDescriptionWithoutDocstring (' + __name__ + '.Test_TestResult)') + @unittest.skipIf(sys.flags.optimize >= 2, + "Docstrings are omitted with -O2 and above") def testGetDescriptionWithOneLineDocstring(self): """Tests getDescription() for a method with a docstring.""" result = unittest.TextTestResult(None, True, 1) @@ -2060,6 +2062,8 @@ class Test_TestResult(TestCase): '(' + __name__ + '.Test_TestResult)\n' 'Tests getDescription() for a method with a docstring.')) + @unittest.skipIf(sys.flags.optimize >= 2, + "Docstrings are omitted with -O2 and above") def testGetDescriptionWithMultiLineDocstring(self): """Tests getDescription() for a method with a longer docstring. The second line of the docstring. @@ -2489,12 +2493,16 @@ class Test_TestCase(TestCase, TestEquality, TestHashing): def testShortDescriptionWithoutDocstring(self): self.assertIsNone(self.shortDescription()) + @unittest.skipIf(sys.flags.optimize >= 2, + "Docstrings are omitted with -O2 and above") def testShortDescriptionWithOneLineDocstring(self): """Tests shortDescription() for a method with a docstring.""" self.assertEqual( self.shortDescription(), 'Tests shortDescription() for a method with a docstring.') + @unittest.skipIf(sys.flags.optimize >= 2, + "Docstrings are omitted with -O2 and above") def testShortDescriptionWithMultiLineDocstring(self): """Tests shortDescription() for a method with a longer docstring. diff --git a/Lib/test/test_xmlrpc.py b/Lib/test/test_xmlrpc.py index 2ae4396..3bc88eb 100644 --- a/Lib/test/test_xmlrpc.py +++ b/Lib/test/test_xmlrpc.py @@ -383,6 +383,22 @@ def is_unavailable_exception(e): if exc_mess and 'temporarily unavailable' in exc_mess.lower(): return True +def make_request_and_skipIf(condition, reason): + # If we skip the test, we have to make a request because the + # the server created in setUp blocks expecting one to come in. + if not condition: + return lambda func: func + def decorator(func): + def make_request_and_skip(self): + try: + xmlrpclib.ServerProxy(URL).my_function() + except (xmlrpclib.ProtocolError, socket.error) as e: + if not is_unavailable_exception(e): + raise + raise unittest.SkipTest(reason) + return make_request_and_skip + return decorator + class BaseServerTestCase(unittest.TestCase): requestHandler = None request_count = 1 @@ -403,6 +419,7 @@ class BaseServerTestCase(unittest.TestCase): def tearDown(self): # wait on the server thread to terminate self.evt.wait(4.0) + # XXX this code does not work, and in fact stop_serving doesn't exist. if not self.evt.is_set(): self.evt.set() stop_serving() @@ -474,6 +491,8 @@ class SimpleServerTestCase(BaseServerTestCase): # protocol error; provide additional information in test output self.fail("%s\n%s" % (e, getattr(e, "headers", ""))) + @make_request_and_skipIf(sys.flags.optimize >= 2, + "Docstrings are omitted with -O2 and above") def test_introspection3(self): try: # test native doc |