From 86e23b34700bc1e9c82a3d8a2bc8625ef12acb08 Mon Sep 17 00:00:00 2001 From: Ian O'Neill Date: Sat, 12 Nov 2022 15:21:35 +0000 Subject: [PATCH] Ensure reading the buffer content actually returns the content --- src/cascadia/TerminalControl/ControlCore.cpp | 2 +- .../UnitTests_Control/ControlCoreTests.cpp | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/src/cascadia/TerminalControl/ControlCore.cpp b/src/cascadia/TerminalControl/ControlCore.cpp index 5391ff93e57..780d486c966 100644 --- a/src/cascadia/TerminalControl/ControlCore.cpp +++ b/src/cascadia/TerminalControl/ControlCore.cpp @@ -1744,7 +1744,7 @@ namespace winrt::Microsoft::Terminal::Control::implementation const auto strEnd = rowText.find_last_not_of(UNICODE_SPACE); if (strEnd != decltype(rowText)::npos) { - str.append(rowText.substr(strEnd + 1)); + str.append(rowText.substr(0, strEnd + 1)); } if (!row.WasWrapForced()) diff --git a/src/cascadia/UnitTests_Control/ControlCoreTests.cpp b/src/cascadia/UnitTests_Control/ControlCoreTests.cpp index 658d4ca623c..f2d3aba2f88 100644 --- a/src/cascadia/UnitTests_Control/ControlCoreTests.cpp +++ b/src/cascadia/UnitTests_Control/ControlCoreTests.cpp @@ -36,6 +36,7 @@ namespace ControlUnitTests TEST_METHOD(TestClearScrollback); TEST_METHOD(TestClearScreen); TEST_METHOD(TestClearAll); + TEST_METHOD(TestReadEntireBuffer); TEST_CLASS_SETUP(ModuleSetup) { @@ -340,4 +341,22 @@ namespace ControlUnitTests // The ConptyRoundtripTests test the actual clearing of the contents. } + void ControlCoreTests::TestReadEntireBuffer() + { + auto [settings, conn] = _createSettingsAndConnection(); + Log::Comment(L"Create ControlCore object"); + auto core = createCore(*settings, *conn); + VERIFY_IS_NOT_NULL(core); + _standardInit(core); + + Log::Comment(L"Print some text"); + conn->WriteInput(L"This is some text \r\n"); + conn->WriteInput(L"with varying amounts \r\n"); + conn->WriteInput(L"of whitespace \r\n"); + + Log::Comment(L"Check the buffer contents"); + VERIFY_ARE_EQUAL(L"This is some text\r\nwith varying amounts\r\nof whitespace\r\n", + core->ReadEntireBuffer()); + } + }