On Fri, Apr 12, 2024 at 1:11 PM Luca Vizzarro <luca.vizza...@arm.com> wrote: > > The first line of the InteractiveShell send_command method is generally > the command input field. This sometimes is unwanted, therefore this > commit enables the possibility of omitting the first line from the > returned output. >
Oh, the first commit message was confusing. It said leading prompt which I understood to be the first prompt (the one with the command). I see that this commit actually addresses what I thought the first commit was trying to do. > Signed-off-by: Luca Vizzarro <luca.vizza...@arm.com> > Reviewed-by: Paul Szczepanek <paul.szczepa...@arm.com> > Reviewed-by: Jack Bond-Preston <jack.bond-pres...@arm.com> > --- > dts/framework/remote_session/interactive_shell.py | 8 +++++++- > 1 file changed, 7 insertions(+), 1 deletion(-) > > diff --git a/dts/framework/remote_session/interactive_shell.py > b/dts/framework/remote_session/interactive_shell.py > index 8a9bf96ea9..e290a083e9 100644 > --- a/dts/framework/remote_session/interactive_shell.py > +++ b/dts/framework/remote_session/interactive_shell.py > @@ -105,7 +105,9 @@ def _start_application(self, get_privileged_command: > Callable[[str], str] | None > start_command = get_privileged_command(start_command) > self.send_command(start_command) > > - def send_command(self, command: str, prompt: str | None = None) -> str: > + def send_command( > + self, command: str, prompt: str | None = None, skip_first_line: bool > = False Do we generally want or don't want to include the first line? When do we absolutely not want to include it? > + ) -> str: > """Send `command` and get all output before the expected ending > string. > > Lines that expect input are not included in the stdout buffer, so > they cannot > @@ -121,6 +123,7 @@ def send_command(self, command: str, prompt: str | None = > None) -> str: > command: The command to send. > prompt: After sending the command, `send_command` will be > expecting this string. > If :data:`None`, will use the class's default prompt. > + skip_first_line: Skip the first line when capturing the output. > > Returns: > All output in the buffer before expected string. > @@ -132,6 +135,9 @@ def send_command(self, command: str, prompt: str | None = > None) -> str: > self._stdin.flush() > out: str = "" > for line in self._stdout: > + if skip_first_line: > + skip_first_line = False > + continue Is there ever a reason to distinguish between the first line and the line with the command on it? > if prompt in line and not line.rstrip().endswith( > command.rstrip() > ): # ignore line that sent command > -- > 2.34.1 >