Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
1a11ea3
Conversion of Segments to legacy Windows API calls
darrenburns Mar 1, 2022
fe57132
Add None windll definition for mypy
darrenburns Mar 1, 2022
ffc5813
Attempting to appease mypy on non-Windows platforms
darrenburns Mar 1, 2022
fb227b8
Use type of Any for windll
darrenburns Mar 1, 2022
e384106
On legacy Windows, we sometimes still need ANSI output...
darrenburns Mar 1, 2022
78fc8d9
Only calling Windows legacy console API if Console.file is stdout
darrenburns Mar 1, 2022
1d38b45
Handling utf-8 error in check_buffer consistently across Windows & Unix
darrenburns Mar 1, 2022
6779e51
Don't default to outputting ANSI just because Console.record=True
darrenburns Mar 1, 2022
bb9ab3c
Merge branch 'master' of https://github.com/Textualize/rich into ansi…
darrenburns Mar 1, 2022
501dcbd
Add tests for LegacyWindowsTerm
darrenburns Mar 1, 2022
97d05f5
Fixing test module on non-Windows platforms
darrenburns Mar 1, 2022
7d08e0a
Fixing test module on non-Windows platforms
darrenburns Mar 1, 2022
151276b
Run legacy Windows tests on Windows only
darrenburns Mar 2, 2022
862416a
Fix typing issues
darrenburns Mar 2, 2022
7525377
Use Python 3.6 & 3.7 compatible means of acceessing mock call args/kw…
darrenburns Mar 2, 2022
80912a5
Update CHANGELOG.md
darrenburns Mar 2, 2022
28786c7
Merge branch 'ansi-to-win32' of https://github.com/Textualize/rich in…
darrenburns Mar 2, 2022
ceef724
Use Windows Console API to write text
darrenburns Mar 3, 2022
1122501
Use WriteConsoleW instead of file.write(...) in LegacyWindowsTerm
darrenburns Mar 3, 2022
d87498b
Use bitwise operators in LegacyWindowsTerm, fix formatting
darrenburns Mar 3, 2022
5a051f9
Make GetConsoleMode Windows Console wrapper more Pythonic
darrenburns Mar 3, 2022
8f738c7
Support reverse, bold (bright), and dim
darrenburns Mar 3, 2022
ca3e966
Handle legacy windows error
darrenburns Mar 3, 2022
81c4dc4
Add docstrings to Windows console wrapper functions
darrenburns Mar 3, 2022
9b76da2
Merge pull request #2019 from Textualize/ansi-to-win32_pull-request-f…
darrenburns Mar 7, 2022
8fe170a
Merge branch 'master' into ansi-to-win32
willmcgugan Mar 9, 2022
91e0146
check win32
willmcgugan Mar 9, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Use WriteConsoleW instead of file.write(...) in LegacyWindowsTerm
  • Loading branch information
darrenburns committed Mar 3, 2022
commit 1122501d6205742fe2883b140d69ff687b70d43c
2 changes: 0 additions & 2 deletions rich/_win32_console.py
Original file line number Diff line number Diff line change
Expand Up @@ -296,8 +296,6 @@ def write_text(self, text: str) -> None:
text (str): The text to write to the console
"""
WriteConsole(self._handle, text)
# self.write(text)
# self.flush()

def write_styled(self, text: str, style: Style) -> None:
"""Write styled text to the terminal
Expand Down
24 changes: 14 additions & 10 deletions tests/test_win32_console.py
Original file line number Diff line number Diff line change
Expand Up @@ -55,35 +55,39 @@ def test_screen_size(_):
row=SCREEN_HEIGHT, col=SCREEN_WIDTH
)

@patch.object(_win32_console, "WriteConsole", return_value=True)
@patch.object(
_win32_console, "GetConsoleScreenBufferInfo", return_value=StubScreenBufferInfo
)
def test_write_text(_):
f = StringIO()
def test_write_text(_, WriteConsole, win32_handle):
text = "Hello, world!"
term = LegacyWindowsTerm(file=f)
term = LegacyWindowsTerm()

term.write_text(text)

assert f.getvalue() == text
WriteConsole.assert_called_once_with(win32_handle, text)

@patch.object(_win32_console, "WriteConsole", return_value=True)
@patch.object(_win32_console, "SetConsoleTextAttribute")
@patch.object(
_win32_console, "GetConsoleScreenBufferInfo", return_value=StubScreenBufferInfo
)
def test_write_styled(_, SetConsoleTextAttribute, win32_handle):
f = StringIO()
def test_write_styled(_, SetConsoleTextAttribute, WriteConsole, win32_handle):
style = Style.parse("black on red")
text = "Hello, world!"
term = LegacyWindowsTerm(file=f)
term = LegacyWindowsTerm()

term.write_styled(text, style)

call_args = SetConsoleTextAttribute.call_args_list
# Check that we've called the Console API to write the text
call_args = WriteConsole.call_args_list
assert len(call_args) == 1
args, _ = call_args[0]
assert args == (win32_handle, text)

assert f.getvalue() == text
# Ensure we set the text attributes and then reset them after writing styled text

call_args = SetConsoleTextAttribute.call_args_list
assert len(call_args) == 2
first_args, first_kwargs = call_args[0]
second_args, second_kwargs = call_args[1]

Expand Down