Commit 159824ea authored by Benjamin Peterson's avatar Benjamin Peterson

make sure the builtin help function doesn't fail when sys.stdin is not a valid file (closes #11709)

Original patch by Amaury Forgeot d'Arc with a test by bdettmer.
parent 96e0430d
...@@ -1417,6 +1417,8 @@ def pager(text): ...@@ -1417,6 +1417,8 @@ def pager(text):
def getpager(): def getpager():
"""Decide what method to use for paging through text.""" """Decide what method to use for paging through text."""
if not hasattr(sys.stdin, "isatty"):
return plainpager
if not hasattr(sys.stdout, "isatty"): if not hasattr(sys.stdout, "isatty"):
return plainpager return plainpager
if not sys.stdin.isatty() or not sys.stdout.isatty(): if not sys.stdin.isatty() or not sys.stdout.isatty():
......
...@@ -446,6 +446,14 @@ class PydocDocTest(unittest.TestCase): ...@@ -446,6 +446,14 @@ class PydocDocTest(unittest.TestCase):
result, doc_loc = get_pydoc_text(xml.etree) result, doc_loc = get_pydoc_text(xml.etree)
self.assertEqual(doc_loc, "", "MODULE DOCS incorrectly includes a link") self.assertEqual(doc_loc, "", "MODULE DOCS incorrectly includes a link")
def test_getpager_with_stdin_none(self):
previous_stdin = sys.stdin
try:
sys.stdin = None
pydoc.getpager() # Shouldn't fail.
finally:
sys.stdin = previous_stdin
def test_non_str_name(self): def test_non_str_name(self):
# issue14638 # issue14638
# Treat illegal (non-str) name like no name # Treat illegal (non-str) name like no name
......
...@@ -22,6 +22,9 @@ Core and Builtins ...@@ -22,6 +22,9 @@ Core and Builtins
Library Library
------- -------
- Issue #11709: Fix the pydoc.help function to not fail when sys.stdin is not a
valid file.
- Issue #13223: Fix pydoc.writedoc so that the HTML documentation for methods - Issue #13223: Fix pydoc.writedoc so that the HTML documentation for methods
that use 'self' in the example code is generated correctly. that use 'self' in the example code is generated correctly.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment