From 3dc19c924358531824f8f273d47080f3af2426a9 Mon Sep 17 00:00:00 2001 From: Tigger Kindel Date: Sat, 12 Aug 2023 08:08:47 -0600 Subject: [PATCH] Fixed netdriver running in unit tests --- Terminal.Gui/ConsoleDrivers/NetDriver.cs | 24 +++++++++++--------- Terminal.Gui/ConsoleDrivers/WindowsDriver.cs | 8 +++++-- UnitTests/ConsoleDrivers/ColorTests.cs | 2 +- 3 files changed, 20 insertions(+), 14 deletions(-) diff --git a/Terminal.Gui/ConsoleDrivers/NetDriver.cs b/Terminal.Gui/ConsoleDrivers/NetDriver.cs index 1bb03ded4..7e4683402 100644 --- a/Terminal.Gui/ConsoleDrivers/NetDriver.cs +++ b/Terminal.Gui/ConsoleDrivers/NetDriver.cs @@ -572,14 +572,16 @@ internal class NetDriver : ConsoleDriver { } StopReportingMouseMoves (); - Console.ResetColor (); - //Disable alternative screen buffer. - Console.Out.Write (EscSeqUtils.CSI_RestoreCursorAndActivateAltBufferWithBackscroll); + if (!_runningUnitTests) { + Console.ResetColor (); - //Set cursor key to cursor. - Console.Out.Write (EscSeqUtils.CSI_ShowCursor); + //Disable alternative screen buffer. + Console.Out.Write (EscSeqUtils.CSI_RestoreCursorAndActivateAltBufferWithBackscroll); + //Set cursor key to cursor. + Console.Out.Write (EscSeqUtils.CSI_ShowCursor); + } Console.Out.Close (); } @@ -608,13 +610,13 @@ internal class NetDriver : ConsoleDriver { TerminalResized = terminalResized; - //Enable alternative screen buffer. - Console.Out.Write (EscSeqUtils.CSI_SaveCursorAndActivateAltBufferNoBackscroll); - - //Set cursor key to application. - Console.Out.Write (EscSeqUtils.CSI_HideCursor); - try { + //Enable alternative screen buffer. + Console.Out.Write (EscSeqUtils.CSI_SaveCursorAndActivateAltBufferNoBackscroll); + + //Set cursor key to application. + Console.Out.Write (EscSeqUtils.CSI_HideCursor); + Console.TreatControlCAsInput = true; Cols = Console.WindowWidth; Rows = Console.WindowHeight; diff --git a/Terminal.Gui/ConsoleDrivers/WindowsDriver.cs b/Terminal.Gui/ConsoleDrivers/WindowsDriver.cs index 8be63d8a0..b3a106159 100644 --- a/Terminal.Gui/ConsoleDrivers/WindowsDriver.cs +++ b/Terminal.Gui/ConsoleDrivers/WindowsDriver.cs @@ -834,7 +834,7 @@ internal class WindowsDriver : ConsoleDriver { Cols = e.Width; Rows = e.Height; - if (WinConsole != null) { + if (!_runningUnitTests) { var newSize = WinConsole.SetConsoleWindow ( (short)Math.Max (w, 16), (short)Math.Max (e.Height, 0)); @@ -1447,6 +1447,8 @@ internal class WindowsDriver : ConsoleDriver { return base.IsRuneSupported (rune) && rune.IsBmp; } + bool _runningUnitTests = false; + public override void Init (Action terminalResized) { TerminalResized = terminalResized; @@ -1472,7 +1474,9 @@ internal class WindowsDriver : ConsoleDriver { Console.Out.Write (EscSeqUtils.CSI_SaveCursorAndActivateAltBufferNoBackscroll); } } catch (Win32Exception e) { - // Likely running unit tests. Set WinConsole to null so we can test it elsewhere. + // We are being run in an environment that does not support a console + // such as a unit test, or a pipe. + _runningUnitTests = true; Debug.WriteLine ($"Likely running unit tests. Setting WinConsole to null so we can test it elsewhere. Exception: {e}"); WinConsole = null; } diff --git a/UnitTests/ConsoleDrivers/ColorTests.cs b/UnitTests/ConsoleDrivers/ColorTests.cs index a05084e69..ee65adb81 100644 --- a/UnitTests/ConsoleDrivers/ColorTests.cs +++ b/UnitTests/ConsoleDrivers/ColorTests.cs @@ -16,7 +16,7 @@ namespace Terminal.Gui.DriverTests { { var driver = (ConsoleDriver)Activator.CreateInstance (driverType); Application.Init (driver); -// driver.Init (() => { }); + Assert.Equal (ConsoleColor.Gray, Console.ForegroundColor); Assert.Equal (ConsoleColor.Black, Console.BackgroundColor);