On Tue, Apr 16, 2024 at 2:15 PM Luca Vizzarro <luca.vizza...@arm.com> wrote: > > On 16/04/2024 09:48, Juraj Linkeš wrote: > > 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. > > Yes, my bad! > > >> - 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? > > In the case of `show port info/stats {x}` if the provided port is > invalid, then the first message starts with `Invalid port`. By providing > an output that skips the command prompt, this is easily checked with > output.startswith("Invalid port") as you may have noticed in the next > commit. Otherwise it'd be a bit more complicated. Personally, I am not > sure whether we care about the first line. With my limited knowledge I > don't see a reason to include it (just as much as the trailing prompt). > > >> + ) -> 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? > > As above, not really sure. Would this always be a command prompt? The > doubt arises only because I don't understand why we'd need the command > prompt fed back. >
The only thing I could think of is debugging. Maybe it could offer some extra insight in some corner cases. > > > >> if prompt in line and not line.rstrip().endswith( > >> command.rstrip() > >> ): # ignore line that sent command > >> -- > >> 2.34.1 > >> >