1# SPDX-License-Identifier: GPL-2.0 2# Copyright (c) 2015-2016, NVIDIA CORPORATION. All rights reserved. 3 4# Test basic shell functionality, such as commands separate by semi-colons. 5 6import pytest 7 8pytestmark = pytest.mark.buildconfigspec('cmd_echo') 9 10def test_shell_execute(u_boot_console): 11 """Test any shell command.""" 12 13 response = u_boot_console.run_command('echo hello') 14 assert response.strip() == 'hello' 15 16def test_shell_semicolon_two(u_boot_console): 17 """Test two shell commands separate by a semi-colon.""" 18 19 cmd = 'echo hello; echo world' 20 response = u_boot_console.run_command(cmd) 21 # This validation method ignores the exact whitespace between the strings 22 assert response.index('hello') < response.index('world') 23 24def test_shell_semicolon_three(u_boot_console): 25 """Test three shell commands separate by a semi-colon, with variable 26 expansion dependencies between them.""" 27 28 cmd = 'setenv list 1; setenv list ${list}2; setenv list ${list}3; ' + \ 29 'echo ${list}' 30 response = u_boot_console.run_command(cmd) 31 assert response.strip() == '123' 32 u_boot_console.run_command('setenv list') 33 34def test_shell_run(u_boot_console): 35 """Test the "run" shell command.""" 36 37 u_boot_console.run_command('setenv foo \'setenv monty 1; setenv python 2\'') 38 u_boot_console.run_command('run foo') 39 response = u_boot_console.run_command('echo ${monty}') 40 assert response.strip() == '1' 41 response = u_boot_console.run_command('echo ${python}') 42 assert response.strip() == '2' 43 u_boot_console.run_command('setenv foo') 44 u_boot_console.run_command('setenv monty') 45 u_boot_console.run_command('setenv python') 46