tests/shell: refactor test file and add several new test cases
Divide test cases in to groups and add test cases for:
- multiple spaces between arguments
- tabs between arguments
- leading/trailing spaces
- more simple variations for escaping
- multiple tests for correct quoting
A second occurence of the test case "('help', EXPECTED_HELP),"
was removed.
This commit is contained in:
parent
cc759ebcca
commit
cbf5cc5327
@ -43,24 +43,61 @@ CONTROL_D = DLE+'\x04'
|
|||||||
PROMPT = '> '
|
PROMPT = '> '
|
||||||
|
|
||||||
CMDS = (
|
CMDS = (
|
||||||
|
# test start
|
||||||
('start_test', '[TEST_START]'),
|
('start_test', '[TEST_START]'),
|
||||||
(CONTROL_C, PROMPT),
|
(CONTROL_C, PROMPT),
|
||||||
('\n', PROMPT),
|
('\n', PROMPT),
|
||||||
|
|
||||||
|
# test simple word separation
|
||||||
|
('echo a string', '"echo""a""string"'),
|
||||||
|
('echo multiple spaces between argv', '"echo""multiple""spaces""between""argv"'),
|
||||||
|
('echo \t tabs\t\t processed \t\tlike\t \t\tspaces', '"echo""tabs""processed""like""spaces"'),
|
||||||
|
|
||||||
|
# test long line
|
||||||
('123456789012345678901234567890123456789012345678901234567890',
|
('123456789012345678901234567890123456789012345678901234567890',
|
||||||
'shell: command not found: '
|
'shell: command not found: '
|
||||||
'123456789012345678901234567890123456789012345678901234567890'),
|
'123456789012345678901234567890123456789012345678901234567890'),
|
||||||
('unknown_command', 'shell: command not found: unknown_command'),
|
('unknown_command', 'shell: command not found: unknown_command'),
|
||||||
|
|
||||||
|
# test leading/trailing BLANK
|
||||||
|
(' echo leading spaces', '"echo""leading""spaces"'),
|
||||||
|
('\t\t\t\t\techo leading tabs', '"echo""leading""tabs"'),
|
||||||
|
('echo trailing spaces ', '"echo""trailing""spaces"'),
|
||||||
|
('echo trailing tabs\t\t\t\t\t', '"echo""trailing""tabs"'),
|
||||||
|
|
||||||
|
# test backspace
|
||||||
('hello-willy\b\b\b\borld', 'shell: command not found: hello-world'),
|
('hello-willy\b\b\b\borld', 'shell: command not found: hello-world'),
|
||||||
('\b\b\b\becho', '\"echo\"'),
|
('\b\b\b\becho', '"echo"'),
|
||||||
('help', EXPECTED_HELP),
|
|
||||||
('echo a string', '\"echo\"\"a\"\"string\"'),
|
# test escaping
|
||||||
|
('echo \\\'', '"echo""\'"'),
|
||||||
|
('echo \\"', '"echo""""'),
|
||||||
|
('echo escaped\\ space', '"echo""escaped space"'),
|
||||||
|
('echo escape within \'\\s\\i\\n\\g\\l\\e\\q\\u\\o\\t\\e\'', '"echo""escape""within""singlequote"'),
|
||||||
|
('echo escape within "\\d\\o\\u\\b\\l\\e\\q\\u\\o\\t\\e"', '"echo""escape""within""doublequote"'),
|
||||||
("""echo "t\e st" "\\"" '\\'' a\ b""", '"echo""te st"""""\'""a b"'),
|
("""echo "t\e st" "\\"" '\\'' a\ b""", '"echo""te st"""""\'""a b"'),
|
||||||
|
|
||||||
|
# test correct quoting
|
||||||
|
('echo "hello"world', '"echo""helloworld"'),
|
||||||
|
('echo hel"lowo"rld', '"echo""helloworld"'),
|
||||||
|
('echo hello"world"', '"echo""helloworld"'),
|
||||||
|
('echo quoted space " "', '"echo""quoted""space"" "'),
|
||||||
|
('echo abc"def\'ghijk"lmn', '"echo""abcdef\'ghijklmn"'),
|
||||||
|
('echo abc\'def"ghijk\'lmn', '"echo""abcdef"ghijklmn"'),
|
||||||
|
('echo "\'" \'"\'', '"echo""\'""""'),
|
||||||
|
|
||||||
|
# test incorrect quoting
|
||||||
('echo a\\', 'shell: incorrect quoting'),
|
('echo a\\', 'shell: incorrect quoting'),
|
||||||
('echo "', 'shell: incorrect quoting'),
|
('echo "', 'shell: incorrect quoting'),
|
||||||
("echo '", 'shell: incorrect quoting'),
|
('echo \'', 'shell: incorrect quoting'),
|
||||||
('echo "\'" \'"\'', '"echo""\'""""'),
|
('echo abcdef"ghijklmn', 'shell: incorrect quoting'),
|
||||||
|
('echo abcdef\'ghijklmn', 'shell: incorrect quoting'),
|
||||||
|
|
||||||
|
# test default commands
|
||||||
('ps', EXPECTED_PS),
|
('ps', EXPECTED_PS),
|
||||||
('help', EXPECTED_HELP),
|
('help', EXPECTED_HELP),
|
||||||
|
|
||||||
|
# test end
|
||||||
('reboot', 'test_shell.'),
|
('reboot', 'test_shell.'),
|
||||||
('end_test', '[TEST_END]'),
|
('end_test', '[TEST_END]'),
|
||||||
)
|
)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user