Skip to content

Commit e240426

Browse files
Anushree-MathurAnushree Mathur
authored andcommitted
Removing escape sequence from output in cmd_output function!
In console outputs we are getting escape sequences because of which most of the testcases are failing to use the output of few commands. This PR removes the escape sequence first then use the output.This PR fixes multiple testcases. Signed-off-by: Anushree Mathur <anushree.mathur@linux.vnet.ibm.com>
1 parent 72d2e67 commit e240426

1 file changed

Lines changed: 17 additions & 5 deletions

File tree

aexpect/client.py

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1188,7 +1188,7 @@ def read_up_to_prompt(self, timeout=60.0, internal_timeout=None,
11881188
print_func)[1]
11891189

11901190
def cmd_output(self, cmd, timeout=60, internal_timeout=None,
1191-
print_func=None, safe=False):
1191+
print_func=None, safe=False, strip_console_codes=False):
11921192
"""
11931193
Send a command and return its output.
11941194
@@ -1203,15 +1203,18 @@ def cmd_output(self, cmd, timeout=60, internal_timeout=None,
12031203
error messages that make read_up_to_prompt to timeout. Let's
12041204
try to be a little more robust and send a carriage return, to
12051205
see if we can get to the prompt when safe=True.
1206-
1206+
:param strip_console_codes: Whether to remove the escape sequence from the output.
1207+
In serial sessions, there are escape sequences present. If it is not
1208+
expected while reading the output remove it by passing
1209+
serial_console_codes = True.
12071210
:return: The output of cmd
12081211
:raise ShellTimeoutError: Raised if timeout expires
12091212
:raise ShellProcessTerminatedError: Raised if the shell process
12101213
terminates while waiting for output
12111214
:raise ShellError: Raised if an unknown error occurs
12121215
"""
12131216
if safe:
1214-
return self.cmd_output_safe(cmd, timeout)
1217+
return self.cmd_output_safe(cmd, timeout, strip_console_codes)
12151218
session_tag = f"[{self.output_prefix}] " if self.output_prefix else ""
12161219
LOG.debug("%sSending command: %s", session_tag, cmd)
12171220
self.read_nonblocking(0, timeout)
@@ -1229,10 +1232,13 @@ def cmd_output(self, cmd, timeout=60, internal_timeout=None,
12291232
raise ShellError(cmd, output) from error
12301233

12311234
# Remove the echoed command and the final shell prompt
1235+
if strip_console_codes:
1236+
# Removing the escape sequence
1237+
out = astring.strip_console_codes(out)
12321238
return self.remove_last_nonempty_line(self.remove_command_echo(out,
12331239
cmd))
12341240

1235-
def cmd_output_safe(self, cmd, timeout=60):
1241+
def cmd_output_safe(self, cmd, timeout=60, strip_console_codes=False):
12361242
"""
12371243
Send a command and return its output (serial sessions).
12381244
@@ -1244,7 +1250,10 @@ def cmd_output_safe(self, cmd, timeout=60):
12441250
:param cmd: Command to send (must not contain newline characters)
12451251
:param timeout: The duration (in seconds) to wait for the prompt to
12461252
return
1247-
1253+
:param strip_console_codes: Whether to remove the escape sequence from the output.
1254+
In serial sessions, there are escape sequences present. If it is not
1255+
expected while reading the output remove it by passing
1256+
serial_console_codes = True.
12481257
:return: The output of cmd
12491258
:raise ShellTimeoutError: Raised if timeout expires
12501259
:raise ShellProcessTerminatedError: Raised if the shell process
@@ -1278,6 +1287,9 @@ def cmd_output_safe(self, cmd, timeout=60):
12781287
raise ShellTimeoutError(cmd, out)
12791288

12801289
# Remove the echoed command and the final shell prompt
1290+
if strip_console_codes:
1291+
# Removing the escape sequence
1292+
out = astring.strip_console_codes(out)
12811293
return self.remove_last_nonempty_line(self.remove_command_echo(out,
12821294
cmd))
12831295

0 commit comments

Comments
 (0)