Skip to content

Commit 513a148

Browse files
committed
Fix tests on windows
1 parent 63d854e commit 513a148

File tree

2 files changed

+12
-4
lines changed

2 files changed

+12
-4
lines changed

Lib/_pyrepl/windows_console.py

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
from __future__ import annotations
2121

2222
import io
23+
from multiprocessing import Value
2324
import os
2425
import sys
2526

@@ -127,7 +128,11 @@ def __init__(
127128
self.height = 25
128129
self.__offset = 0
129130
self.event_queue: deque[Event] = deque()
130-
self.out = io._WindowsConsoleIO(self.output_fd, "w") # type: ignore[attr-defined]
131+
try:
132+
self.out = io._WindowsConsoleIO(self.output_fd, "w") # type: ignore[attr-defined]
133+
except ValueError:
134+
# Console I/O is redirected, fallback...
135+
self.out = None
131136

132137
def refresh(self, screen: list[str], c_xy: tuple[int, int]) -> None:
133138
"""
@@ -278,8 +283,11 @@ def _disable_blinking(self):
278283
self.__write("\x1b[?12l")
279284

280285
def __write(self, text: str) -> None:
281-
self.out.write(text.encode(self.encoding, "replace"))
282-
self.out.flush()
286+
if self.out is not None:
287+
self.out.write(text.encode(self.encoding, "replace"))
288+
self.out.flush()
289+
else:
290+
os.write(self.output_fd, text.encode(self.encoding, "replace"))
283291

284292
@property
285293
def screen_xy(self) -> tuple[int, int]:

Lib/test/test_pyrepl/test_windows_console.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ def console(self, events, **kwargs) -> Console:
3232
console._hide_cursor = MagicMock()
3333
console._show_cursor = MagicMock()
3434
console._getscrollbacksize = MagicMock(42)
35-
console.out.write = MagicMock()
35+
console.out = MagicMock()
3636

3737
height = kwargs.get("height", 25)
3838
width = kwargs.get("width", 80)

0 commit comments

Comments
 (0)