diff --git a/test/UnitTestReadLine.cs b/test/UnitTestReadLine.cs index a6c1572ce..d09e2abc9 100644 --- a/test/UnitTestReadLine.cs +++ b/test/UnitTestReadLine.cs @@ -538,6 +538,8 @@ private void TestMustDing(string expectedResult, object[] items) private TestConsole _console; private MockedMethods _mockedMethods; private bool _oneTimeInitCompleted; + private object _psrlInstance; + private FieldInfo _psrlConsole, _psrlMockableMethods; private static string MakeCombinedColor(ConsoleColor fg, ConsoleColor bg) => VTColorUtils.AsEscapeSequence(fg) + VTColorUtils.AsEscapeSequence(bg, isBackground: true); @@ -554,14 +556,17 @@ private void TestSetup(TestConsole console, KeyMode keyMode, params KeyHandler[] _console = console ?? new TestConsole(_); _mockedMethods = new MockedMethods(); - var instance = (PSConsoleReadLine)typeof(PSConsoleReadLine) - .GetField("_singleton", BindingFlags.Static | BindingFlags.NonPublic).GetValue(null); - typeof(PSConsoleReadLine) - .GetField("_mockableMethods", BindingFlags.Instance | BindingFlags.NonPublic) - .SetValue(instance, _mockedMethods); - typeof(PSConsoleReadLine) - .GetField("_console", BindingFlags.Instance | BindingFlags.NonPublic) - .SetValue(instance, _console); + + if (_psrlInstance is null) + { + Type psrlType = typeof(PSConsoleReadLine); + _psrlInstance = psrlType.GetField("_singleton", BindingFlags.Static | BindingFlags.NonPublic).GetValue(null); + _psrlConsole = psrlType.GetField("_console", BindingFlags.Instance | BindingFlags.NonPublic); + _psrlMockableMethods = psrlType.GetField("_mockableMethods", BindingFlags.Instance | BindingFlags.NonPublic); + } + + _psrlConsole.SetValue(_psrlInstance, _console); + _psrlMockableMethods.SetValue(_psrlInstance, _mockedMethods); _emptyLine ??= new string(' ', _console.BufferWidth); @@ -628,11 +633,11 @@ private void TestSetup(TestConsole console, KeyMode keyMode, params KeyHandler[] var colorOptions = new SetPSReadLineOption {Colors = colors}; PSConsoleReadLine.SetOptions(colorOptions); - if (!_oneTimeInitCompleted) - { - typeof(PSConsoleReadLine).GetMethod("Initialize", BindingFlags.Instance | BindingFlags.NonPublic) - .Invoke(instance, new object[] { /* Runspace */ null, /* EngineIntrinsics */ null, }); - _oneTimeInitCompleted = true; + if (!_oneTimeInitCompleted) + { + typeof(PSConsoleReadLine).GetMethod("Initialize", BindingFlags.Instance | BindingFlags.NonPublic) + .Invoke(_psrlInstance, new object[] { /* Runspace */ null, /* EngineIntrinsics */ null, }); + _oneTimeInitCompleted = true; } } }