bpo-45453: Fix test_embed.StdPrinterTests (GH-28916) (GH-28917)

test_embed.StdPrinterTests now always use the file descriptor 1 for
stdout, rather than using sys.__stdout__.fileno().
PyFile_NewStdPrinter() does crash if the argument is not 1 or 2.

Fix also a few pyflakes warnings: remove unused import and variables.
(cherry picked from commit 678433f25e)

Co-authored-by: Victor Stinner <vstinner@python.org>
This commit is contained in:
Miss Islington (bot) 2021-10-13 03:24:47 -07:00 committed by GitHub
parent 47673c47db
commit 7e74d99c53
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -588,7 +588,6 @@ class InitConfigTests(EmbeddingTestsMixin, unittest.TestCase):
def get_expected_config(self, expected_preconfig, expected,
expected_pathconfig, env, api,
modify_path_cb=None):
cls = self.__class__
configs = self._get_expected_config()
pre_config = configs['pre_config']
@ -1235,7 +1234,6 @@ class InitConfigTests(EmbeddingTestsMixin, unittest.TestCase):
self.fail(f"Unable to find home in {paths!r}")
prefix = exec_prefix = home
ver = sys.version_info
expected_paths = self.module_search_paths(prefix=home, exec_prefix=home)
config = {
@ -1505,8 +1503,7 @@ class StdPrinterTests(EmbeddingTestsMixin, unittest.TestCase):
# "Set up a preliminary stderr printer until we have enough
# infrastructure for the io module in place."
def get_stdout_fd(self):
return sys.__stdout__.fileno()
STDOUT_FD = 1
def create_printer(self, fd):
ctypes = import_helper.import_module('ctypes')
@ -1518,7 +1515,7 @@ class StdPrinterTests(EmbeddingTestsMixin, unittest.TestCase):
def test_write(self):
message = "unicode:\xe9-\u20ac-\udc80!\n"
stdout_fd = self.get_stdout_fd()
stdout_fd = self.STDOUT_FD
stdout_fd_copy = os.dup(stdout_fd)
self.addCleanup(os.close, stdout_fd_copy)
@ -1539,7 +1536,7 @@ class StdPrinterTests(EmbeddingTestsMixin, unittest.TestCase):
self.assertEqual(data, message.encode('utf8', 'backslashreplace'))
def test_methods(self):
fd = self.get_stdout_fd()
fd = self.STDOUT_FD
printer = self.create_printer(fd)
self.assertEqual(printer.fileno(), fd)
self.assertEqual(printer.isatty(), os.isatty(fd))
@ -1547,7 +1544,7 @@ class StdPrinterTests(EmbeddingTestsMixin, unittest.TestCase):
printer.close() # noop
def test_disallow_instantiation(self):
fd = self.get_stdout_fd()
fd = self.STDOUT_FD
printer = self.create_printer(fd)
support.check_disallow_instantiation(self, type(printer))