Skip to content

Commit 7b840fd

Browse files
authored
Fix line ending and cache some reflection operations (#4709)
1 parent b1f8c89 commit 7b840fd

File tree

1 file changed

+18
-13
lines changed

1 file changed

+18
-13
lines changed

test/UnitTestReadLine.cs

+18-13
Original file line numberDiff line numberDiff line change
@@ -538,6 +538,8 @@ private void TestMustDing(string expectedResult, object[] items)
538538
private TestConsole _console;
539539
private MockedMethods _mockedMethods;
540540
private bool _oneTimeInitCompleted;
541+
private object _psrlInstance;
542+
private FieldInfo _psrlConsole, _psrlMockableMethods;
541543

542544
private static string MakeCombinedColor(ConsoleColor fg, ConsoleColor bg)
543545
=> VTColorUtils.AsEscapeSequence(fg) + VTColorUtils.AsEscapeSequence(bg, isBackground: true);
@@ -554,14 +556,17 @@ private void TestSetup(TestConsole console, KeyMode keyMode, params KeyHandler[]
554556

555557
_console = console ?? new TestConsole(_);
556558
_mockedMethods = new MockedMethods();
557-
var instance = (PSConsoleReadLine)typeof(PSConsoleReadLine)
558-
.GetField("_singleton", BindingFlags.Static | BindingFlags.NonPublic).GetValue(null);
559-
typeof(PSConsoleReadLine)
560-
.GetField("_mockableMethods", BindingFlags.Instance | BindingFlags.NonPublic)
561-
.SetValue(instance, _mockedMethods);
562-
typeof(PSConsoleReadLine)
563-
.GetField("_console", BindingFlags.Instance | BindingFlags.NonPublic)
564-
.SetValue(instance, _console);
559+
560+
if (_psrlInstance is null)
561+
{
562+
Type psrlType = typeof(PSConsoleReadLine);
563+
_psrlInstance = psrlType.GetField("_singleton", BindingFlags.Static | BindingFlags.NonPublic).GetValue(null);
564+
_psrlConsole = psrlType.GetField("_console", BindingFlags.Instance | BindingFlags.NonPublic);
565+
_psrlMockableMethods = psrlType.GetField("_mockableMethods", BindingFlags.Instance | BindingFlags.NonPublic);
566+
}
567+
568+
_psrlConsole.SetValue(_psrlInstance, _console);
569+
_psrlMockableMethods.SetValue(_psrlInstance, _mockedMethods);
565570

566571
_emptyLine ??= new string(' ', _console.BufferWidth);
567572

@@ -628,11 +633,11 @@ private void TestSetup(TestConsole console, KeyMode keyMode, params KeyHandler[]
628633
var colorOptions = new SetPSReadLineOption {Colors = colors};
629634
PSConsoleReadLine.SetOptions(colorOptions);
630635

631-
if (!_oneTimeInitCompleted)
632-
{
633-
typeof(PSConsoleReadLine).GetMethod("Initialize", BindingFlags.Instance | BindingFlags.NonPublic)
634-
.Invoke(instance, new object[] { /* Runspace */ null, /* EngineIntrinsics */ null, });
635-
_oneTimeInitCompleted = true;
636+
if (!_oneTimeInitCompleted)
637+
{
638+
typeof(PSConsoleReadLine).GetMethod("Initialize", BindingFlags.Instance | BindingFlags.NonPublic)
639+
.Invoke(_psrlInstance, new object[] { /* Runspace */ null, /* EngineIntrinsics */ null, });
640+
_oneTimeInitCompleted = true;
636641
}
637642
}
638643
}

0 commit comments

Comments
 (0)