@@ -55,22 +55,35 @@ def read(self):
5555 def clear (self ):
5656 self .buffer = ''
5757
58+ def __getattr__ (self , item ):
59+ if item in self .__dict__ :
60+ return self .__dict__ [item ]
61+ else :
62+ return getattr (self .inner_stream , item )
63+
5864
5965def _exec_cmd (cmd2_app , func ):
6066 """Helper to encapsulate executing a command and capturing the results"""
6167 copy_stdout = CopyStream (sys .stdout )
6268 copy_stderr = CopyStream (sys .stderr )
6369
70+ copy_cmd_stdout = CopyStream (cmd2_app .stdout )
71+
6472 cmd2_app ._last_result = None
6573
66- with redirect_stdout (copy_stdout ):
67- with redirect_stderr (copy_stderr ):
68- func ()
74+ try :
75+ cmd2_app .stdout = copy_cmd_stdout
76+ with redirect_stdout (copy_stdout ):
77+ with redirect_stderr (copy_stderr ):
78+ func ()
79+ finally :
80+ cmd2_app .stdout = copy_cmd_stdout .inner_stream
6981
7082 # if stderr is empty, set it to None
7183 stderr = copy_stderr if copy_stderr .buffer else None
7284
73- result = CommandResult (stdout = copy_stdout .buffer , stderr = stderr , data = cmd2_app ._last_result )
85+ outbuf = copy_cmd_stdout .buffer if copy_cmd_stdout .buffer else copy_stdout .buffer
86+ result = CommandResult (stdout = outbuf , stderr = stderr , data = cmd2_app ._last_result )
7487 return result
7588
7689
0 commit comments