Cc'ing Paolo/Samuel/Marc-André
On 10/20/19 12:09 PM, David Gibson wrote:
> On Thu, Oct 17, 2019 at 06:52:33PM +0200, Philippe Mathieu-Daudé wrote:
>> Some firmwares don't parse the <Newline> control character and
>> expect a <carriage return>.
>>
>> Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
>> ---
>> tests/acceptance/boot_linux_console.py | 2 +-
>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/tests/acceptance/boot_linux_console.py b/tests/acceptance/boot_linux_console.py
>> index 9ff2213874..bf9861296a 100644
>> --- a/tests/acceptance/boot_linux_console.py
>> +++ b/tests/acceptance/boot_linux_console.py
>> @@ -30,7 +30,7 @@ class BootLinuxConsole(Test):
>> KERNEL_COMMON_COMMAND_LINE = 'printk.time=0 '
>>
>> def exec_command_and_wait_for_pattern(self, command, success_message):
>> - command += '\n'
>> + command += '\r\n'
>
> I'm actually wondering if '\r' alone is really what we should be using
> here. Isn't that usually the character that actually pressing the
> Enter key generates (on an old school tty)? IIRC it's the thing on
> the other side of the console that echoes back a \r and \n in order to
> reposition the cursor on the next line.
Our current tests mostly target Linux/*BSD.
When I started testing U-boot/VxWorks images, I noticed the tests were
stuck, why testing manually it was working, then this patch solved my issue.
I haven't checked the source but think the readline() implementation of
these do strchr('\r') instead of strchr('\n') to match a newline?
So input sending Cartridge Return makes more sense here...
I tested with:
-- >8 --
def exec_command_and_wait_for_pattern(self, command, success_message):
- command += '\n'
+ command += '\r'
self.vm.console_socket.sendall(command.encode())
self.wait_for_console_pattern(success_message)
---
And everything works fine, so we don't need to send the New Line char :)
Thanks for helping me figure this out!
I'll wait if there are other comments then respin.
Regards,
Phil.
>> self.vm.console_socket.sendall(command.encode())
>> wait_for_console_pattern(self, success_message)
>>
>