passt/test/lib
David Gibson c638129a9e tests: Improve control character filtering in pane_parse
pane_parse() attempts to grab the output from the last command issued
into a tmux pane.  It strips out control characters using tr, which in
particular includes the final \r\n.  However, this won't fully strip
out terminal escape sequences.  In particular this breaks if the shell
in the pane is bash, with enable-bracketed-paste enabled in readline.
That issues terminal sequences to enable and disable bracketed paste
mode around every shell prompt.

We can work around this because these escapes are followed by a \r
(CR).  More generally, it seems reasonable to assume that any terminal
shenanigans followed by a CR, but not an LF is supposed to be hidden.
So, use sed to strip everything before the second last CR.  We still
need the tr to remove the final \r\n from the string (sed processes a
line at a time, and doesn't consider the CRLF part of the buffer it's
processing).

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
[sbrivio: modify regexp to keep foo\r\r\n unchanged, by matching on at
 least one CR and a non-CR afterwards: that's the usual output pattern
 for bash on Debian 8 and Debian 9]
Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
2022-05-19 15:24:15 +02:00
..
layout test: Add demo for Podman with pasta 2022-02-22 18:34:44 +01:00
perf_report test/lib: Consistent cols, rows, poster attributes for asciinema player 2022-04-07 11:44:35 +02:00
setup tests: Update mbuto git URLs 2022-05-19 15:24:15 +02:00
term tests: Improve control character filtering in pane_parse 2022-05-19 15:24:15 +02:00
test tests: Add some debugging output for the test scripts themselves 2022-05-19 15:24:15 +02:00
util test: Drop debugging left-overs in lib/util 2021-10-14 13:15:12 +02:00
video test/lib: Consistent cols, rows, poster attributes for asciinema player 2022-04-07 11:44:35 +02:00