mirror of
https://github.com/gui-cs/Terminal.Gui.git
synced 2025-12-26 15:57:56 +01:00
Fix intermittent macOS unit test failures by forcing FakeDriver when ConsoleDriver.RunningUnitTests is true (#4291)
* Initial plan * Add safeguard to force FakeDriver when ConsoleDriver.RunningUnitTests is true Co-authored-by: tig <585482+tig@users.noreply.github.com> * Add test to verify FakeDriver is used when RunningUnitTests is true Co-authored-by: tig <585482+tig@users.noreply.github.com> * Add debug logging to make unit test safeguard visible in CI logs Co-authored-by: tig <585482+tig@users.noreply.github.com> * Modify unit-tests.yml to run tests 10 times on macOS to verify fix stability Co-authored-by: tig <585482+tig@users.noreply.github.com> * Revert "Modify unit-tests.yml to run tests 10 times on macOS to verify fix stability" Co-authored-by: tig <585482+tig@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: tig <585482+tig@users.noreply.github.com>
This commit is contained in:
@@ -103,6 +103,23 @@ public class ApplicationImpl : IApplication
|
|||||||
|
|
||||||
private void CreateDriver (string? driverName)
|
private void CreateDriver (string? driverName)
|
||||||
{
|
{
|
||||||
|
// When running unit tests, always use FakeDriver unless explicitly specified
|
||||||
|
if (ConsoleDriver.RunningUnitTests &&
|
||||||
|
string.IsNullOrEmpty (driverName) &&
|
||||||
|
_componentFactory is null)
|
||||||
|
{
|
||||||
|
Logging.Logger.LogDebug ("Unit test safeguard: forcing FakeDriver (RunningUnitTests=true, driverName=null, componentFactory=null)");
|
||||||
|
_coordinator = CreateSubcomponents (() => new FakeComponentFactory ());
|
||||||
|
_coordinator.StartAsync ().Wait ();
|
||||||
|
|
||||||
|
if (Application.Driver == null)
|
||||||
|
{
|
||||||
|
throw new ("Application.Driver was null even after booting MainLoopCoordinator");
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
PlatformID p = Environment.OSVersion.Platform;
|
PlatformID p = Environment.OSVersion.Platform;
|
||||||
|
|
||||||
// Check component factory type first - this takes precedence over driverName
|
// Check component factory type first - this takes precedence over driverName
|
||||||
|
|||||||
@@ -230,4 +230,30 @@ public class ConsoleDriverTests
|
|||||||
//
|
//
|
||||||
// [Fact]
|
// [Fact]
|
||||||
// public void FakeDriver_IsValidInput_Correct_Surrogate_Sequence ()
|
// public void FakeDriver_IsValidInput_Correct_Surrogate_Sequence ()
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Tests that when ConsoleDriver.RunningUnitTests is true, Application.Init() without
|
||||||
|
/// parameters uses FakeDriver instead of platform-specific drivers.
|
||||||
|
/// This prevents intermittent failures on macOS where kernel32.dll might be referenced.
|
||||||
|
/// </summary>
|
||||||
|
[Fact]
|
||||||
|
public void Application_Init_Without_Params_Uses_FakeDriver_When_RunningUnitTests ()
|
||||||
|
{
|
||||||
|
// Arrange
|
||||||
|
ConsoleDriver.RunningUnitTests = true;
|
||||||
|
Application.ResetState (true);
|
||||||
|
|
||||||
|
// Act
|
||||||
|
Application.Init ();
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
Assert.NotNull (Application.Driver);
|
||||||
|
// In the modern v2 architecture, the driver will be a ConsoleDriverFacade wrapping FakeDriver
|
||||||
|
// The key is that it's not attempting to use Windows/Unix platform-specific drivers
|
||||||
|
Assert.True (Application.Initialized);
|
||||||
|
|
||||||
|
// Cleanup
|
||||||
|
Application.Shutdown ();
|
||||||
|
Application.ResetState (true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user