gh-108303: Move all `pydoc` related test files to new `test.test_pydoc` package (#114506)

This commit is contained in:
Nikita Sobolev 2024-02-13 13:40:40 +03:00 committed by GitHub
parent ca3604a3e3
commit ccc76c3e88
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
7 changed files with 34 additions and 27 deletions

View File

@ -552,7 +552,7 @@ class Doc:
'_thread', 'zipimport') or '_thread', 'zipimport') or
(file.startswith(basedir) and (file.startswith(basedir) and
not file.startswith(os.path.join(basedir, 'site-packages')))) and not file.startswith(os.path.join(basedir, 'site-packages')))) and
object.__name__ not in ('xml.etree', 'test.pydoc_mod')): object.__name__ not in ('xml.etree', 'test.test_pydoc.pydoc_mod')):
if docloc.startswith(("http://", "https://")): if docloc.startswith(("http://", "https://")):
docloc = "{}/{}.html".format(docloc.rstrip("/"), object.__name__.lower()) docloc = "{}/{}.html".format(docloc.rstrip("/"), object.__name__.lower())
else: else:

View File

@ -23,6 +23,7 @@ SPLITTESTDIRS: set[TestName] = {
"test_future_stmt", "test_future_stmt",
"test_gdb", "test_gdb",
"test_inspect", "test_inspect",
"test_pydoc",
"test_multiprocessing_fork", "test_multiprocessing_fork",
"test_multiprocessing_forkserver", "test_multiprocessing_forkserver",
"test_multiprocessing_spawn", "test_multiprocessing_spawn",

View File

@ -0,0 +1,6 @@
import os
from test import support
def load_tests(*args):
return support.load_package_tests(os.path.dirname(__file__), *args)

View File

@ -34,8 +34,8 @@ from test.support import (reap_children, captured_output, captured_stdout,
captured_stderr, is_emscripten, is_wasi, captured_stderr, is_emscripten, is_wasi,
requires_docstrings, MISSING_C_DOCSTRINGS) requires_docstrings, MISSING_C_DOCSTRINGS)
from test.support.os_helper import (TESTFN, rmtree, unlink) from test.support.os_helper import (TESTFN, rmtree, unlink)
from test import pydoc_mod from test.test_pydoc import pydoc_mod
from test import pydocfodder from test.test_pydoc import pydocfodder
class nonascii: class nonascii:
@ -52,7 +52,7 @@ else:
expected_text_pattern = """ expected_text_pattern = """
NAME NAME
test.pydoc_mod - This is a test module for test_pydoc test.test_pydoc.pydoc_mod - This is a test module for test_pydoc
%s %s
CLASSES CLASSES
builtins.object builtins.object
@ -125,7 +125,7 @@ FUNCTIONS
DATA DATA
__xyz__ = 'X, Y and Z' __xyz__ = 'X, Y and Z'
c_alias = test.pydoc_mod.C[int] c_alias = test.test_pydoc.pydoc_mod.C[int]
list_alias1 = typing.List[int] list_alias1 = typing.List[int]
list_alias2 = list[int] list_alias2 = list[int]
type_union1 = typing.Union[int, str] type_union1 = typing.Union[int, str]
@ -148,7 +148,7 @@ expected_text_data_docstrings = tuple('\n | ' + s if s else ''
for s in expected_data_docstrings) for s in expected_data_docstrings)
html2text_of_expected = """ html2text_of_expected = """
test.pydoc_mod (version 1.2.3.4) test.test_pydoc.pydoc_mod (version 1.2.3.4)
This is a test module for test_pydoc This is a test module for test_pydoc
Modules Modules
@ -213,7 +213,7 @@ Functions
Data Data
__xyz__ = 'X, Y and Z' __xyz__ = 'X, Y and Z'
c_alias = test.pydoc_mod.C[int] c_alias = test.test_pydoc.pydoc_mod.C[int]
list_alias1 = typing.List[int] list_alias1 = typing.List[int]
list_alias2 = list[int] list_alias2 = list[int]
type_union1 = typing.Union[int, str] type_union1 = typing.Union[int, str]
@ -342,7 +342,7 @@ def get_pydoc_link(module):
"Returns a documentation web link of a module" "Returns a documentation web link of a module"
abspath = os.path.abspath abspath = os.path.abspath
dirname = os.path.dirname dirname = os.path.dirname
basedir = dirname(dirname(abspath(__file__))) basedir = dirname(dirname(dirname(abspath(__file__))))
doc = pydoc.TextDoc() doc = pydoc.TextDoc()
loc = doc.getdocloc(module, basedir=basedir) loc = doc.getdocloc(module, basedir=basedir)
return loc return loc
@ -489,7 +489,7 @@ class PydocDocTest(unittest.TestCase):
@requires_docstrings @requires_docstrings
def test_not_ascii(self): def test_not_ascii(self):
result = run_pydoc('test.test_pydoc.nonascii', PYTHONIOENCODING='ascii') result = run_pydoc('test.test_pydoc.test_pydoc.nonascii', PYTHONIOENCODING='ascii')
encoded = nonascii.__doc__.encode('ascii', 'backslashreplace') encoded = nonascii.__doc__.encode('ascii', 'backslashreplace')
self.assertIn(encoded, result) self.assertIn(encoded, result)
@ -669,9 +669,9 @@ class PydocDocTest(unittest.TestCase):
buf = StringIO() buf = StringIO()
helper = pydoc.Helper(output=buf) helper = pydoc.Helper(output=buf)
unused, doc_loc = get_pydoc_text(pydoc_mod) unused, doc_loc = get_pydoc_text(pydoc_mod)
module = "test.pydoc_mod" module = "test.test_pydoc.pydoc_mod"
help_header = """ help_header = """
Help on module test.pydoc_mod in test: Help on module test.test_pydoc.pydoc_mod in test.test_pydoc:
""".lstrip() """.lstrip()
help_header = textwrap.dedent(help_header) help_header = textwrap.dedent(help_header)
@ -1142,7 +1142,6 @@ class TestDescriptions(unittest.TestCase):
def test_module(self): def test_module(self):
# Check that pydocfodder module can be described # Check that pydocfodder module can be described
from test import pydocfodder
doc = pydoc.render_doc(pydocfodder) doc = pydoc.render_doc(pydocfodder)
self.assertIn("pydocfodder", doc) self.assertIn("pydocfodder", doc)
@ -1425,10 +1424,10 @@ class TestDescriptions(unittest.TestCase):
self.assertEqual(self._get_summary_line(C.meth), self.assertEqual(self._get_summary_line(C.meth),
"meth" + unbound) "meth" + unbound)
self.assertEqual(self._get_summary_line(C().meth), self.assertEqual(self._get_summary_line(C().meth),
"meth" + bound + " method of test.test_pydoc.C instance") "meth" + bound + " method of test.test_pydoc.test_pydoc.C instance")
C.cmeth.__func__.__text_signature__ = text_signature C.cmeth.__func__.__text_signature__ = text_signature
self.assertEqual(self._get_summary_line(C.cmeth), self.assertEqual(self._get_summary_line(C.cmeth),
"cmeth" + bound + " class method of test.test_pydoc.C") "cmeth" + bound + " class method of test.test_pydoc.test_pydoc.C")
C.smeth.__text_signature__ = text_signature C.smeth.__text_signature__ = text_signature
self.assertEqual(self._get_summary_line(C.smeth), self.assertEqual(self._get_summary_line(C.smeth),
"smeth" + unbound) "smeth" + unbound)
@ -1465,7 +1464,7 @@ sm(x, y)
'cm(...)\n' 'cm(...)\n'
' A class method\n') ' A class method\n')
self.assertEqual(self._get_summary_lines(X.cm), """\ self.assertEqual(self._get_summary_lines(X.cm), """\
cm(x) class method of test.test_pydoc.X cm(x) class method of test.test_pydoc.test_pydoc.X
A class method A class method
""") """)
self.assertIn(""" self.assertIn("""
@ -1647,19 +1646,19 @@ class PydocFodderTest(unittest.TestCase):
lines = self.getsection(result, f' | Methods {where}:', ' | ' + '-'*70) lines = self.getsection(result, f' | Methods {where}:', ' | ' + '-'*70)
self.assertIn(' | A_method_alias = A_method(self)', lines) self.assertIn(' | A_method_alias = A_method(self)', lines)
self.assertIn(' | B_method_alias = B_method(self)', lines) self.assertIn(' | B_method_alias = B_method(self)', lines)
self.assertIn(' | A_staticmethod(x, y) from test.pydocfodder.A', lines) self.assertIn(' | A_staticmethod(x, y) from test.test_pydoc.pydocfodder.A', lines)
self.assertIn(' | A_staticmethod_alias = A_staticmethod(x, y)', lines) self.assertIn(' | A_staticmethod_alias = A_staticmethod(x, y)', lines)
self.assertIn(' | global_func(x, y) from test.pydocfodder', lines) self.assertIn(' | global_func(x, y) from test.test_pydoc.pydocfodder', lines)
self.assertIn(' | global_func_alias = global_func(x, y)', lines) self.assertIn(' | global_func_alias = global_func(x, y)', lines)
self.assertIn(' | global_func2_alias = global_func2(x, y) from test.pydocfodder', lines) self.assertIn(' | global_func2_alias = global_func2(x, y) from test.test_pydoc.pydocfodder', lines)
self.assertIn(' | __repr__(self, /) from builtins.object', lines) self.assertIn(' | __repr__(self, /) from builtins.object', lines)
self.assertIn(' | object_repr = __repr__(self, /)', lines) self.assertIn(' | object_repr = __repr__(self, /)', lines)
lines = self.getsection(result, f' | Static methods {where}:', ' | ' + '-'*70) lines = self.getsection(result, f' | Static methods {where}:', ' | ' + '-'*70)
self.assertIn(' | A_classmethod_ref = A_classmethod(x) class method of test.pydocfodder.A', lines) self.assertIn(' | A_classmethod_ref = A_classmethod(x) class method of test.test_pydoc.pydocfodder.A', lines)
note = '' if cls is pydocfodder.B else ' class method of test.pydocfodder.B' note = '' if cls is pydocfodder.B else ' class method of test.test_pydoc.pydocfodder.B'
self.assertIn(' | B_classmethod_ref = B_classmethod(x)' + note, lines) self.assertIn(' | B_classmethod_ref = B_classmethod(x)' + note, lines)
self.assertIn(' | A_method_ref = A_method() method of test.pydocfodder.A instance', lines) self.assertIn(' | A_method_ref = A_method() method of test.test_pydoc.pydocfodder.A instance', lines)
self.assertIn(' | get(key, default=None, /) method of builtins.dict instance', lines) self.assertIn(' | get(key, default=None, /) method of builtins.dict instance', lines)
self.assertIn(' | dict_get = get(key, default=None, /) method of builtins.dict instance', lines) self.assertIn(' | dict_get = get(key, default=None, /) method of builtins.dict instance', lines)
@ -1675,19 +1674,19 @@ class PydocFodderTest(unittest.TestCase):
lines = self.getsection(result, f'Methods {where}:', '-'*70) lines = self.getsection(result, f'Methods {where}:', '-'*70)
self.assertIn('A_method_alias = A_method(self)', lines) self.assertIn('A_method_alias = A_method(self)', lines)
self.assertIn('B_method_alias = B_method(self)', lines) self.assertIn('B_method_alias = B_method(self)', lines)
self.assertIn('A_staticmethod(x, y) from test.pydocfodder.A', lines) self.assertIn('A_staticmethod(x, y) from test.test_pydoc.pydocfodder.A', lines)
self.assertIn('A_staticmethod_alias = A_staticmethod(x, y)', lines) self.assertIn('A_staticmethod_alias = A_staticmethod(x, y)', lines)
self.assertIn('global_func(x, y) from test.pydocfodder', lines) self.assertIn('global_func(x, y) from test.test_pydoc.pydocfodder', lines)
self.assertIn('global_func_alias = global_func(x, y)', lines) self.assertIn('global_func_alias = global_func(x, y)', lines)
self.assertIn('global_func2_alias = global_func2(x, y) from test.pydocfodder', lines) self.assertIn('global_func2_alias = global_func2(x, y) from test.test_pydoc.pydocfodder', lines)
self.assertIn('__repr__(self, /) from builtins.object', lines) self.assertIn('__repr__(self, /) from builtins.object', lines)
self.assertIn('object_repr = __repr__(self, /)', lines) self.assertIn('object_repr = __repr__(self, /)', lines)
lines = self.getsection(result, f'Static methods {where}:', '-'*70) lines = self.getsection(result, f'Static methods {where}:', '-'*70)
self.assertIn('A_classmethod_ref = A_classmethod(x) class method of test.pydocfodder.A', lines) self.assertIn('A_classmethod_ref = A_classmethod(x) class method of test.test_pydoc.pydocfodder.A', lines)
note = '' if cls is pydocfodder.B else ' class method of test.pydocfodder.B' note = '' if cls is pydocfodder.B else ' class method of test.test_pydoc.pydocfodder.B'
self.assertIn('B_classmethod_ref = B_classmethod(x)' + note, lines) self.assertIn('B_classmethod_ref = B_classmethod(x)' + note, lines)
self.assertIn('A_method_ref = A_method() method of test.pydocfodder.A instance', lines) self.assertIn('A_method_ref = A_method() method of test.test_pydoc.pydocfodder.A instance', lines)
lines = self.getsection(result, f'Class methods {where}:', '-'*70) lines = self.getsection(result, f'Class methods {where}:', '-'*70)
self.assertIn('B_classmethod(x)', lines) self.assertIn('B_classmethod(x)', lines)

View File

@ -2307,6 +2307,7 @@ TESTSUBDIRS= idlelib/idle_test \
test/test_module \ test/test_module \
test/test_pathlib \ test/test_pathlib \
test/test_peg_generator \ test/test_peg_generator \
test/test_pydoc \
test/test_sqlite3 \ test/test_sqlite3 \
test/test_tkinter \ test/test_tkinter \
test/test_tomllib \ test/test_tomllib \