[PATCH 2/5] dts: skip first line of send_command output
Juraj Linkeš
juraj.linkes at pantheon.tech
Tue Apr 16 10:48:29 CEST 2024
On Fri, Apr 12, 2024 at 1:11 PM Luca Vizzarro <luca.vizzarro at 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.vizzarro at arm.com>
> Reviewed-by: Paul Szczepanek <paul.szczepanek at arm.com>
> Reviewed-by: Jack Bond-Preston <jack.bond-preston at 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
>
More information about the dev
mailing list