From 8e750b83a89ad62a6a209357dcbadc91a2ceaedb Mon Sep 17 00:00:00 2001 From: Lysandros Nikolaou Date: Mon, 6 May 2024 11:50:42 +0200 Subject: gh-111201: Fix event queue tests for pyrepl (#118635) --- Lib/test/test_pyrepl.py | 35 +++++++++++++++++++++-------------- 1 file changed, 21 insertions(+), 14 deletions(-) diff --git a/Lib/test/test_pyrepl.py b/Lib/test/test_pyrepl.py index c53bdef..3cba37c 100644 --- a/Lib/test/test_pyrepl.py +++ b/Lib/test/test_pyrepl.py @@ -2,6 +2,7 @@ import itertools import os import rlcompleter import sys +import tempfile import unittest from code import InteractiveConsole from functools import partial @@ -603,26 +604,32 @@ class TestPyReplCompleter(TestCase): @patch("_pyrepl.curses.tigetstr", lambda x: b"") class TestUnivEventQueue(TestCase): + def setUp(self): + self.file = tempfile.TemporaryFile() + + def tearDown(self) -> None: + self.file.close() + def test_get(self): - eq = EventQueue(sys.stdout.fileno(), "utf-8") + eq = EventQueue(self.file.fileno(), "utf-8") event = Event("key", "a", b"a") eq.insert(event) self.assertEqual(eq.get(), event) def test_empty(self): - eq = EventQueue(sys.stdout.fileno(), "utf-8") + eq = EventQueue(self.file.fileno(), "utf-8") self.assertTrue(eq.empty()) eq.insert(Event("key", "a", b"a")) self.assertFalse(eq.empty()) def test_flush_buf(self): - eq = EventQueue(sys.stdout.fileno(), "utf-8") + eq = EventQueue(self.file.fileno(), "utf-8") eq.buf.extend(b"test") self.assertEqual(eq.flush_buf(), b"test") self.assertEqual(eq.buf, bytearray()) def test_insert(self): - eq = EventQueue(sys.stdout.fileno(), "utf-8") + eq = EventQueue(self.file.fileno(), "utf-8") event = Event("key", "a", b"a") eq.insert(event) self.assertEqual(eq.events[0], event) @@ -630,30 +637,30 @@ class TestUnivEventQueue(TestCase): @patch("_pyrepl.unix_eventqueue.keymap") def test_push_with_key_in_keymap(self, mock_keymap): mock_keymap.compile_keymap.return_value = {"a": "b"} - eq = EventQueue(sys.stdout.fileno(), "utf-8") + eq = EventQueue(self.file.fileno(), "utf-8") eq.keymap = {b"a": "b"} eq.push("a") - self.assertTrue(mock_keymap.compile_keymap.called) + mock_keymap.compile_keymap.assert_called() self.assertEqual(eq.events[0].evt, "key") self.assertEqual(eq.events[0].data, "b") @patch("_pyrepl.unix_eventqueue.keymap") def test_push_without_key_in_keymap(self, mock_keymap): mock_keymap.compile_keymap.return_value = {"a": "b"} - eq = EventQueue(sys.stdout.fileno(), "utf-8") + eq = EventQueue(self.file.fileno(), "utf-8") eq.keymap = {b"c": "d"} eq.push("a") - self.assertTrue(mock_keymap.compile_keymap.called) + mock_keymap.compile_keymap.assert_called() self.assertEqual(eq.events[0].evt, "key") self.assertEqual(eq.events[0].data, "a") @patch("_pyrepl.unix_eventqueue.keymap") def test_push_with_keymap_in_keymap(self, mock_keymap): mock_keymap.compile_keymap.return_value = {"a": "b"} - eq = EventQueue(sys.stdout.fileno(), "utf-8") + eq = EventQueue(self.file.fileno(), "utf-8") eq.keymap = {b"a": {b"b": "c"}} eq.push("a") - self.assertTrue(mock_keymap.compile_keymap.called) + mock_keymap.compile_keymap.assert_called() self.assertTrue(eq.empty()) eq.push("b") self.assertEqual(eq.events[0].evt, "key") @@ -665,10 +672,10 @@ class TestUnivEventQueue(TestCase): @patch("_pyrepl.unix_eventqueue.keymap") def test_push_with_keymap_in_keymap_and_escape(self, mock_keymap): mock_keymap.compile_keymap.return_value = {"a": "b"} - eq = EventQueue(sys.stdout.fileno(), "utf-8") + eq = EventQueue(self.file.fileno(), "utf-8") eq.keymap = {b"a": {b"b": "c"}} eq.push("a") - self.assertTrue(mock_keymap.compile_keymap.called) + mock_keymap.compile_keymap.assert_called() self.assertTrue(eq.empty()) eq.flush_buf() eq.push("\033") @@ -679,7 +686,7 @@ class TestUnivEventQueue(TestCase): self.assertEqual(eq.events[1].data, "b") def test_push_special_key(self): - eq = EventQueue(sys.stdout.fileno(), "utf-8") + eq = EventQueue(self.file.fileno(), "utf-8") eq.keymap = {} eq.push("\x1b") eq.push("[") @@ -688,7 +695,7 @@ class TestUnivEventQueue(TestCase): self.assertEqual(eq.events[0].data, "\x1b") def test_push_unrecognized_escape_sequence(self): - eq = EventQueue(sys.stdout.fileno(), "utf-8") + eq = EventQueue(self.file.fileno(), "utf-8") eq.keymap = {} eq.push("\x1b") eq.push("[") -- cgit v0.12