[Python-checkins] cpython (2.7): - Issue #17041: Fix testing when Python is configured with the

serhiy.storchaka python-checkins at python.org
Sun Jan 27 19:07:46 CET 2013


http://hg.python.org/cpython/rev/6c0d9d1ce63e
changeset: 81780:6c0d9d1ce63e
branch: 2.7
user: Serhiy Storchaka <storchaka at gmail.com>
date: Sun Jan 27 19:45:49 2013 +0200
summary:
 - Issue #17041: Fix testing when Python is configured with the
 --without-doc-strings option.
files:
 Lib/ctypes/test/test_win32.py | 5 +-
 Lib/distutils/tests/test_build_ext.py | 5 +-
 Lib/test/test_functools.py | 1 +
 Lib/test/test_pydoc.py | 32 ++++++++++----
 Lib/test/test_support.py | 14 ++++-
 Misc/NEWS | 3 +
 6 files changed, 44 insertions(+), 16 deletions(-)
diff --git a/Lib/ctypes/test/test_win32.py b/Lib/ctypes/test/test_win32.py
--- a/Lib/ctypes/test/test_win32.py
+++ b/Lib/ctypes/test/test_win32.py
@@ -3,6 +3,7 @@
 from ctypes import *
 from ctypes.test import is_resource_enabled
 import unittest, sys
+from test import test_support as support
 
 import _ctypes_test
 
@@ -60,7 +61,9 @@
 
 def test_COMError(self):
 from _ctypes import COMError
- self.assertEqual(COMError.__doc__, "Raised when a COM method call failed.")
+ if support.HAVE_DOCSTRINGS:
+ self.assertEqual(COMError.__doc__,
+ "Raised when a COM method call failed.")
 
 ex = COMError(-1, "text", ("details",))
 self.assertEqual(ex.hresult, -1)
diff --git a/Lib/distutils/tests/test_build_ext.py b/Lib/distutils/tests/test_build_ext.py
--- a/Lib/distutils/tests/test_build_ext.py
+++ b/Lib/distutils/tests/test_build_ext.py
@@ -77,8 +77,9 @@
 self.assertEqual(xx.foo(2, 5), 7)
 self.assertEqual(xx.foo(13,15), 28)
 self.assertEqual(xx.new().demo(), None)
- doc = 'This is a template module just for instruction.'
- self.assertEqual(xx.__doc__, doc)
+ if test_support.HAVE_DOCSTRINGS:
+ doc = 'This is a template module just for instruction.'
+ self.assertEqual(xx.__doc__, doc)
 self.assertTrue(isinstance(xx.Null(), xx.Null))
 self.assertTrue(isinstance(xx.Str(), xx.Str))
 
diff --git a/Lib/test/test_functools.py b/Lib/test/test_functools.py
--- a/Lib/test/test_functools.py
+++ b/Lib/test/test_functools.py
@@ -232,6 +232,7 @@
 self.assertEqual(wrapper.attr, 'This is a different test')
 self.assertEqual(wrapper.dict_attr, f.dict_attr)
 
+ @test_support.requires_docstrings
 def test_builtin_update(self):
 # Test for bug #1576241
 def wrapper():
diff --git a/Lib/test/test_pydoc.py b/Lib/test/test_pydoc.py
--- a/Lib/test/test_pydoc.py
+++ b/Lib/test/test_pydoc.py
@@ -16,6 +16,14 @@
 
 from test import pydoc_mod
 
+if test.test_support.HAVE_DOCSTRINGS:
+ expected_data_docstrings = (
+ 'dictionary for instance variables (if defined)',
+ 'list of weak references to the object (if defined)',
+ )
+else:
+ expected_data_docstrings = ('', '')
+
 expected_text_pattern = \
 """
 NAME
@@ -40,11 +48,9 @@
 class B(__builtin__.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:
@@ -75,6 +81,9 @@
 Nobody
 """.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">
@@ -121,10 +130,10 @@
 <tr><td bgcolor="#ffc8d8"><tt>  </tt></td><td> </td>
 <td width="100%%">Data descriptors defined here:<br>
 <dl><dt><strong>__dict__</strong></dt>
-<dd><tt>dictionary for instance variables (if defined)</tt></dd>
+<dd><tt>%s</tt></dd>
 </dl>
 <dl><dt><strong>__weakref__</strong></dt>
-<dd><tt>list of weak references to the object (if defined)</tt></dd>
+<dd><tt>%s</tt></dd>
 </dl>
 <hr>
 Data and other attributes defined here:<br>
@@ -168,6 +177,8 @@
 <td width="100%%">Nobody</td></tr></table>
 """.strip()
 
+expected_html_data_docstrings = tuple(s.replace(' ', ' ')
+ for s in expected_data_docstrings)
 
 # output pattern for missing module
 missing_pattern = "no Python documentation found for '%s'"
@@ -229,7 +240,9 @@
 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")
@@ -238,8 +251,9 @@
 "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 % \
- (inspect.getabsfile(pydoc_mod), doc_loc)
+ expected_text = expected_text_pattern % (
+ (inspect.getabsfile(pydoc_mod), doc_loc) +
+ expected_text_data_docstrings)
 if result != expected_text:
 print_diffs(expected_text, result)
 self.fail("outputs are not equal, see diff above")
diff --git a/Lib/test/test_support.py b/Lib/test/test_support.py
--- a/Lib/test/test_support.py
+++ b/Lib/test/test_support.py
@@ -1112,10 +1112,6 @@
 else:
 return unittest.skip("resource {0!r} is not enabled".format(resource))
 
-requires_docstrings = unittest.skipUnless(
- sysconfig.get_config_var('WITH_DOC_STRINGS'),
- "test requires docstrings")
-
 def cpython_only(test):
 """
 Decorator for tests only applicable on CPython.
@@ -1193,6 +1189,16 @@
 suite.addTest(unittest.makeSuite(cls))
 _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/Misc/NEWS b/Misc/NEWS
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -674,6 +674,9 @@
 Tests
 -----
 
+- Issue #17041: Fix testing when Python is configured with the
+ --without-doc-strings option.
+
 - Issue #15539: Added regression tests for Tools/scripts/pindent.py.
 
 - Issue #15324: Fix regrtest parsing of --fromfile and --randomize options.
-- 
Repository URL: http://hg.python.org/cpython


More information about the Python-checkins mailing list

AltStyle によって変換されたページ (->オリジナル) /