@@ -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