summaryrefslogtreecommitdiffstats
path: root/Lib/test
diff options
context:
space:
mode:
authorSerhiy Storchaka <storchaka@gmail.com>2013-01-27 17:47:45 (GMT)
committerSerhiy Storchaka <storchaka@gmail.com>2013-01-27 17:47:45 (GMT)
commit9d0add0c7e513a92ee4321aa5be70121c4c1e1e7 (patch)
treea61b0d0c5ee1c4c727bb55754b505cd59ecc0446 /Lib/test
parent6f02ea02c881e06029e8d44a5414682bc4b65fb8 (diff)
downloadcpython-9d0add0c7e513a92ee4321aa5be70121c4c1e1e7.zip
cpython-9d0add0c7e513a92ee4321aa5be70121c4c1e1e7.tar.gz
cpython-9d0add0c7e513a92ee4321aa5be70121c4c1e1e7.tar.bz2
Issue #17041: Fix testing when Python is configured with the
--without-doc-strings.
Diffstat (limited to 'Lib/test')
-rw-r--r--Lib/test/support.py10
-rw-r--r--Lib/test/test_bytes.py1
-rw-r--r--Lib/test/test_functools.py1
-rw-r--r--Lib/test/test_pydoc.py49
4 files changed, 44 insertions, 17 deletions
diff --git a/Lib/test/support.py b/Lib/test/support.py
index 2130fd6..66ddf4b 100644
--- a/Lib/test/support.py
+++ b/Lib/test/support.py
@@ -1477,6 +1477,16 @@ def run_unittest(*classes):
_filter_suite(suite, case_pred)
_run_suite(suite)
+#=======================================================================
+# Check for the presence of docstrings.
+
+HAVE_DOCSTRINGS = (check_impl_detail(cpython=False) or
+ sys.platform == 'win32' or
+ sysconfig.get_config_var('WITH_DOC_STRINGS'))
+
+requires_docstrings = unittest.skipUnless(HAVE_DOCSTRINGS,
+ "test requires docstrings")
+
#=======================================================================
# doctest driver.
diff --git a/Lib/test/test_bytes.py b/Lib/test/test_bytes.py
index 89e2274..ba40915 100644
--- a/Lib/test/test_bytes.py
+++ b/Lib/test/test_bytes.py
@@ -986,6 +986,7 @@ class AssortedBytesTest(unittest.TestCase):
self.assertEqual(bytes(b"abc") < b"ab", False)
self.assertEqual(bytes(b"abc") <= b"ab", False)
+ @test.support.requires_docstrings
def test_doc(self):
self.assertIsNotNone(bytearray.__doc__)
self.assertTrue(bytearray.__doc__.startswith("bytearray("), bytearray.__doc__)
diff --git a/Lib/test/test_functools.py b/Lib/test/test_functools.py
index 270cab0..10868f3 100644
--- a/Lib/test/test_functools.py
+++ b/Lib/test/test_functools.py
@@ -287,6 +287,7 @@ class TestUpdateWrapper(unittest.TestCase):
with self.assertRaises(AttributeError):
functools.update_wrapper(wrapper, f, assign, update)
+ @support.requires_docstrings
@unittest.skipIf(sys.flags.optimize >= 2,
"Docstrings are omitted with -O2 and above")
def test_builtin_update(self):
diff --git a/Lib/test/test_pydoc.py b/Lib/test/test_pydoc.py
index c5a8e98..c7318ff 100644
--- a/Lib/test/test_pydoc.py
+++ b/Lib/test/test_pydoc.py
@@ -30,6 +30,14 @@ except ImportError:
if hasattr(pydoc_mod, "__loader__"):
del pydoc_mod.__loader__
+if test.support.HAVE_DOCSTRINGS:
+ expected_data_docstrings = (
+ 'dictionary for instance variables (if defined)',
+ 'list of weak references to the object (if defined)',
+ ) * 2
+else:
+ expected_data_docstrings = ('', '', '', '')
+
expected_text_pattern = """
NAME
test.pydoc_mod - This is a test module for test_pydoc
@@ -50,20 +58,16 @@ CLASSES
| ----------------------------------------------------------------------
| Data descriptors defined here:
|\x20\x20
- | __dict__
- | dictionary for instance variables (if defined)
+ | __dict__%s
|\x20\x20
- | __weakref__
- | list of weak references to the object (if defined)
+ | __weakref__%s
\x20\x20\x20\x20
class B(builtins.object)
| Data descriptors defined here:
|\x20\x20
- | __dict__
- | dictionary for instance variables (if defined)
+ | __dict__%s
|\x20\x20
- | __weakref__
- | list of weak references to the object (if defined)
+ | __weakref__%s
|\x20\x20
| ----------------------------------------------------------------------
| Data and other attributes defined here:
@@ -95,6 +99,9 @@ FILE
%s
""".strip()
+expected_text_data_docstrings = tuple('\n | ' + s if s else ''
+ for s in expected_data_docstrings)
+
expected_html_pattern = """
<table width="100%%" cellspacing=0 cellpadding=2 border=0 summary="heading">
<tr bgcolor="#7799ee">
@@ -134,10 +141,10 @@ expected_html_pattern = """
<hr>
Data descriptors defined here:<br>
<dl><dt><strong>__dict__</strong></dt>
-<dd><tt>dictionary&nbsp;for&nbsp;instance&nbsp;variables&nbsp;(if&nbsp;defined)</tt></dd>
+<dd><tt>%s</tt></dd>
</dl>
<dl><dt><strong>__weakref__</strong></dt>
-<dd><tt>list&nbsp;of&nbsp;weak&nbsp;references&nbsp;to&nbsp;the&nbsp;object&nbsp;(if&nbsp;defined)</tt></dd>
+<dd><tt>%s</tt></dd>
</dl>
</td></tr></table> <p>
<table width="100%%" cellspacing=0 cellpadding=2 border=0 summary="section">
@@ -148,10 +155,10 @@ Data descriptors defined here:<br>
<tr><td bgcolor="#ffc8d8"><tt>&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%%">Data descriptors defined here:<br>
<dl><dt><strong>__dict__</strong></dt>
-<dd><tt>dictionary&nbsp;for&nbsp;instance&nbsp;variables&nbsp;(if&nbsp;defined)</tt></dd>
+<dd><tt>%s</tt></dd>
</dl>
<dl><dt><strong>__weakref__</strong></dt>
-<dd><tt>list&nbsp;of&nbsp;weak&nbsp;references&nbsp;to&nbsp;the&nbsp;object&nbsp;(if&nbsp;defined)</tt></dd>
+<dd><tt>%s</tt></dd>
</dl>
<hr>
Data and other attributes defined here:<br>
@@ -193,6 +200,8 @@ war</tt></dd></dl>
<td width="100%%">Nobody</td></tr></table>
""".strip() # ' <- emacs turd
+expected_html_data_docstrings = tuple(s.replace(' ', '&nbsp;')
+ for s in expected_data_docstrings)
# output pattern for missing module
missing_pattern = "no Python documentation found for '%s'"
@@ -262,7 +271,9 @@ class PydocDocTest(unittest.TestCase):
mod_url = nturl2path.pathname2url(mod_file)
else:
mod_url = mod_file
- expected_html = expected_html_pattern % (mod_url, mod_file, doc_loc)
+ expected_html = expected_html_pattern % (
+ (mod_url, mod_file, doc_loc) +
+ expected_html_data_docstrings)
if result != expected_html:
print_diffs(expected_html, result)
self.fail("outputs are not equal, see diff above")
@@ -271,8 +282,10 @@ class PydocDocTest(unittest.TestCase):
"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 % \
- (doc_loc, inspect.getabsfile(pydoc_mod))
+ expected_text = expected_text_pattern % (
+ (doc_loc,) +
+ expected_text_data_docstrings +
+ (inspect.getabsfile(pydoc_mod),))
if result != expected_text:
print_diffs(expected_text, result)
self.fail("outputs are not equal, see diff above")
@@ -346,8 +359,10 @@ class PydocDocTest(unittest.TestCase):
captured_output('stderr') as err:
helper.help(module)
result = buf.getvalue().strip()
- expected_text = expected_help_pattern % \
- (doc_loc, inspect.getabsfile(pydoc_mod))
+ expected_text = expected_help_pattern % (
+ (doc_loc,) +
+ expected_text_data_docstrings +
+ (inspect.getabsfile(pydoc_mod),))
self.assertEqual('', output.getvalue())
self.assertEqual('', err.getvalue())
self.assertEqual(expected_text, result)