From 9fe518540848f6c273fa749a06437aa7bb7459ff Mon Sep 17 00:00:00 2001 From: Charles Cabergs Date: Fri, 9 Oct 2020 20:32:46 +0200 Subject: Added syntax error status and discard cd too many argument on Linux --- src/hooks.py | 9 +++- src/suites/builtin.py | 13 ++--- src/suites/flow.py | 132 +++++++++++++++++++++++++------------------------- 3 files changed, 82 insertions(+), 72 deletions(-) diff --git a/src/hooks.py b/src/hooks.py index 58cc7a0..f1492d7 100644 --- a/src/hooks.py +++ b/src/hooks.py @@ -6,7 +6,7 @@ # By: charles +#+ +:+ +#+ # # +#+#+#+#+#+ +#+ # # Created: 2020/09/11 16:10:20 by charles #+# #+# # -# Updated: 2020/10/08 17:32:12 by cacharle ### ########.fr # +# Updated: 2020/10/09 20:27:30 by charles ### ########.fr # # # # ############################################################################ # @@ -106,3 +106,10 @@ def error_eof_to_expected_token(output): "-c: line 1: syntax error: unexpected end of file", "syntax error expected token" ) + + +def linux_discard(output): + if config.PLATFORM == "Linux": + return "DISCARDED BY MINISHELL TEST" + else: + return output diff --git a/src/suites/builtin.py b/src/suites/builtin.py index 64d6ea6..1723b13 100644 --- a/src/suites/builtin.py +++ b/src/suites/builtin.py @@ -6,7 +6,7 @@ # By: juligonz +#+ +:+ +#+ # # +#+#+#+#+#+ +#+ # # Created: 2020/07/15 18:24:43 by charles #+# #+# # -# Updated: 2020/10/09 08:48:28 by cacharle ### ########.fr # +# Updated: 2020/10/09 20:28:36 by charles ### ########.fr # # Updated: 2020/09/11 18:01:27 by juligonz ### ########.fr # # # # **************************************************************************** # @@ -16,6 +16,7 @@ import os import config import hooks from suite import suite +from hooks import linux_discard @suite() @@ -130,12 +131,12 @@ def suite_cd(test): # hard and weird to implement with pwd # test("cd /etc; pwd; echo $PWD") test("echo $PWD; echo $OLDPWD; cd ''; pwd; echo $PWD; echo $OLDPWD") - test("echo $PWD; echo $OLDPWD; cd '' ''; pwd; echo $PWD; echo $OLDPWD") - test("echo $PWD; echo $OLDPWD; cd '' '' ''; pwd; echo $PWD; echo $OLDPWD") + test("echo $PWD; echo $OLDPWD; cd '' ''; pwd; echo $PWD; echo $OLDPWD", hook=linux_discard) + test("echo $PWD; echo $OLDPWD; cd '' '' ''; pwd; echo $PWD; echo $OLDPWD", hook=linux_discard) test("echo $PWD; echo $OLDPWD; cd ' '; pwd; echo $PWD; echo $OLDPWD") - test("echo $PWD; echo $OLDPWD; cd d ''; pwd; echo $PWD; echo $OLDPWD", setup="mkdir d") - test("echo $PWD; echo $OLDPWD; cd d d; pwd; echo $PWD; echo $OLDPWD", setup="mkdir d") - test("echo $PWD; echo $OLDPWD; cd d ' '; pwd; echo $PWD; echo $OLDPWD", setup="mkdir d") + test("echo $PWD; echo $OLDPWD; cd d ''; pwd; echo $PWD; echo $OLDPWD", setup="mkdir d", hook=linux_discard) + test("echo $PWD; echo $OLDPWD; cd d d; pwd; echo $PWD; echo $OLDPWD", setup="mkdir d", hook=linux_discard) + test("echo $PWD; echo $OLDPWD; cd d ' '; pwd; echo $PWD; echo $OLDPWD", setup="mkdir d", hook=linux_discard) test("echo $PWD; echo $OLDPWD; cd $HOME; pwd; echo $PWD; echo $OLDPWD", exports={"HOME": os.getenv("HOME")}) test("echo $PWD; echo $OLDPWD; cd /; pwd; echo $PWD; echo $OLDPWD") test("echo $PWD; echo $OLDPWD; cd /.; pwd; echo $PWD; echo $OLDPWD") diff --git a/src/suites/flow.py b/src/suites/flow.py index eb9eb30..ac4aec0 100644 --- a/src/suites/flow.py +++ b/src/suites/flow.py @@ -6,7 +6,7 @@ # By: charles +#+ +:+ +#+ # # +#+#+#+#+#+ +#+ # # Created: 2020/07/15 18:24:52 by charles #+# #+# # -# Updated: 2020/10/09 08:51:57 by cacharle ### ########.fr # +# Updated: 2020/10/09 20:14:40 by charles ### ########.fr # # # # ############################################################################ # @@ -205,80 +205,82 @@ def suite_parenthesis(test): test("(export A=a; echo $A); echo $A") test("(cat /etc/shells) | (cat -e) | (cat -e) | (cat -e)") test("(cat /etc/shells) | (cat -e) | (cat -e) | (cat -e) | (cat -e) | (cat -e) | (cat -e) | (cat -e) | (cat -e)") - test("(cat /etc/shells | (cat -e) | (cat -e) | (cat -e)", hook=[error_line0, error_eof_to_expected_token]) - test("(cat /etc/shells) | (cat -e) | (cat -e | (cat -e)", hook=[error_line0, error_eof_to_expected_token]) + test("(cat /etc/shells | (cat -e) | (cat -e) | (cat -e)", + hook=[error_line0, error_eof_to_expected_token], hook_status=platform_status(2, 1)) + test("(cat /etc/shells) | (cat -e) | (cat -e | (cat -e)", + hook=[error_line0, error_eof_to_expected_token], hook_status=platform_status(2, 1)) @suite() def suite_syntax_error(test): """ separator syntax error test """ - test("< | a", hook=error_line0) - test("> | a", hook=error_line0) - test(">> | a", hook=error_line0) - test("< ; a", hook=error_line0) - test("> ; a", hook=error_line0) - test(">> ; a", hook=error_line0) - test("; | a", hook=error_line0) - test("; < a", hook=error_line0) - test("; > a", hook=error_line0) - test("; >> a", hook=error_line0) - test("| ; a", hook=error_line0) - test("| < a", hook=error_line0) - test("| > a", hook=error_line0) - test("| >> a", hook=error_line0) + test("< | a", hook=error_line0, hook_status=platform_status(2, 1)) + test("> | a", hook=error_line0, hook_status=platform_status(2, 1)) + test(">> | a", hook=error_line0, hook_status=platform_status(2, 1)) + test("< ; a", hook=error_line0, hook_status=platform_status(2, 1)) + test("> ; a", hook=error_line0, hook_status=platform_status(2, 1)) + test(">> ; a", hook=error_line0, hook_status=platform_status(2, 1)) + test("; | a", hook=error_line0, hook_status=platform_status(2, 1)) + test("; < a", hook=error_line0, hook_status=platform_status(2, 1)) + test("; > a", hook=error_line0, hook_status=platform_status(2, 1)) + test("; >> a", hook=error_line0, hook_status=platform_status(2, 1)) + test("| ; a", hook=error_line0, hook_status=platform_status(2, 1)) + test("| < a", hook=error_line0, hook_status=platform_status(2, 1)) + test("| > a", hook=error_line0, hook_status=platform_status(2, 1)) + test("| >> a", hook=error_line0, hook_status=platform_status(2, 1)) test("> a ; a", hook=error_line0) test("< a ; a", hook=error_line0) test(">> a ; a", hook=error_line0) - test(config.LOREM + " > >" + config.LOREM, hook=error_line0) - test(config.LOREM + " < <" + config.LOREM, hook=error_line0) - test(config.LOREM + " ; |" + config.LOREM, hook=error_line0) - test(config.LOREM + " | ;" + config.LOREM, hook=error_line0) + test(config.LOREM + " > >" + config.LOREM, hook=error_line0, hook_status=platform_status(2, 1)) + test(config.LOREM + " < <" + config.LOREM, hook=error_line0, hook_status=platform_status(2, 1)) + test(config.LOREM + " ; |" + config.LOREM, hook=error_line0, hook_status=platform_status(2, 1)) + test(config.LOREM + " | ;" + config.LOREM, hook=error_line0, hook_status=platform_status(2, 1)) @suite(bonus=True) def suite_syntax_error_bonus(test): """ separator syntax error bonus test """ - test("< && a", hook=error_line0) - test("> && a", hook=error_line0) - test(">> && a", hook=error_line0) - test("< || a", hook=error_line0) - test("> || a", hook=error_line0) - test(">> || a", hook=error_line0) - test("< ( a", hook=error_line0) - test("> ( a", hook=error_line0) - test(">> ( a", hook=error_line0) - test("< ) a", hook=error_line0) - test("> ) a", hook=error_line0) - test(">> ) a", hook=error_line0) - test("&& < a", hook=error_line0) - test("&& > a", hook=error_line0) - test("&& >> a", hook=error_line0) - test("&& || a", hook=error_line0) - test("&& ( a", hook=error_line0) - test("&& ) a", hook=error_line0) - test("|| < a", hook=error_line0) - test("|| > a", hook=error_line0) - test("|| >> a", hook=error_line0) - test("|| && a", hook=error_line0) - test("|| ( a", hook=error_line0) - test("|| ) a", hook=error_line0) - test("( < a", hook=[error_line0, error_eof_to_expected_token]) - test("( > a", hook=[error_line0, error_eof_to_expected_token]) - test("( >> a", hook=[error_line0, error_eof_to_expected_token]) - test(") < a", hook=error_line0) - test(") > a", hook=error_line0) - test(") >> a", hook=error_line0) - test("( && a", hook=error_line0) - test("( || a", hook=error_line0) - test("( ) a", hook=error_line0) - test(") && a", hook=error_line0) - test(") || a", hook=error_line0) - test(") ( a", hook=error_line0) - test("() a", hook=error_line0) - test("( a", hook=[error_line0, error_eof_to_expected_token]) - test(") a", hook=error_line0) - test(config.LOREM + " && &&" + config.LOREM, hook=error_line0) - test(config.LOREM + " || ||" + config.LOREM, hook=error_line0) - test(config.LOREM + " ( (" + config.LOREM, hook=error_line0) - test(config.LOREM + " ) )" + config.LOREM, hook=error_line0) - test("(); () ;() ;() ;() ;() ;() ;() ;() ;() ;a", hook=error_line0) + test("< && a", hook=error_line0, hook_status=platform_status(2, 1)) + test("> && a", hook=error_line0, hook_status=platform_status(2, 1)) + test(">> && a", hook=error_line0, hook_status=platform_status(2, 1)) + test("< || a", hook=error_line0, hook_status=platform_status(2, 1)) + test("> || a", hook=error_line0, hook_status=platform_status(2, 1)) + test(">> || a", hook=error_line0, hook_status=platform_status(2, 1)) + test("< ( a", hook=error_line0, hook_status=platform_status(2, 1)) + test("> ( a", hook=error_line0, hook_status=platform_status(2, 1)) + test(">> ( a", hook=error_line0, hook_status=platform_status(2, 1)) + test("< ) a", hook=error_line0, hook_status=platform_status(2, 1)) + test("> ) a", hook=error_line0, hook_status=platform_status(2, 1)) + test(">> ) a", hook=error_line0, hook_status=platform_status(2, 1)) + test("&& < a", hook=error_line0, hook_status=platform_status(2, 1)) + test("&& > a", hook=error_line0, hook_status=platform_status(2, 1)) + test("&& >> a", hook=error_line0, hook_status=platform_status(2, 1)) + test("&& || a", hook=error_line0, hook_status=platform_status(2, 1)) + test("&& ( a", hook=error_line0, hook_status=platform_status(2, 1)) + test("&& ) a", hook=error_line0, hook_status=platform_status(2, 1)) + test("|| < a", hook=error_line0, hook_status=platform_status(2, 1)) + test("|| > a", hook=error_line0, hook_status=platform_status(2, 1)) + test("|| >> a", hook=error_line0, hook_status=platform_status(2, 1)) + test("|| && a", hook=error_line0, hook_status=platform_status(2, 1)) + test("|| ( a", hook=error_line0, hook_status=platform_status(2, 1)) + test("|| ) a", hook=error_line0, hook_status=platform_status(2, 1)) + test("( < a", hook=[error_line0, error_eof_to_expected_token], hook_status=platform_status(2, 1)) + test("( > a", hook=[error_line0, error_eof_to_expected_token], hook_status=platform_status(2, 1)) + test("( >> a", hook=[error_line0, error_eof_to_expected_token], hook_status=platform_status(2, 1)) + test(") < a", hook=error_line0, hook_status=platform_status(2, 1)) + test(") > a", hook=error_line0, hook_status=platform_status(2, 1)) + test(") >> a", hook=error_line0, hook_status=platform_status(2, 1)) + test("( && a", hook=error_line0, hook_status=platform_status(2, 1)) + test("( || a", hook=error_line0, hook_status=platform_status(2, 1)) + test("( ) a", hook=error_line0, hook_status=platform_status(2, 1)) + test(") && a", hook=error_line0, hook_status=platform_status(2, 1)) + test(") || a", hook=error_line0, hook_status=platform_status(2, 1)) + test(") ( a", hook=error_line0, hook_status=platform_status(2, 1)) + test("() a", hook=error_line0, hook_status=platform_status(2, 1)) + test("( a", hook=[error_line0, error_eof_to_expected_token], hook_status=platform_status(2, 1)) + test(") a", hook=error_line0, hook_status=platform_status(2, 1)) + test(config.LOREM + " && &&" + config.LOREM, hook=error_line0, hook_status=platform_status(2, 1)) + test(config.LOREM + " || ||" + config.LOREM, hook=error_line0, hook_status=platform_status(2, 1)) + test(config.LOREM + " ( (" + config.LOREM, hook=error_line0, hook_status=platform_status(2, 1)) + test(config.LOREM + " ) )" + config.LOREM, hook=error_line0, hook_status=platform_status(2, 1)) + test("(); () ;() ;() ;() ;() ;() ;() ;() ;() ;a", hook=error_line0, hook_status=platform_status(2, 1)) -- cgit