From 6026876cdfd8ffb1bde3c98e97bb7ba05ff4e4ae Mon Sep 17 00:00:00 2001 From: Charles Cabergs Date: Sat, 12 Sep 2020 17:08:25 +0200 Subject: Moved parenthesis and operation in flow, Added sandbox context, Replaced subprocess wait by communicate to avoid dead lock --- src/suites/flow.py | 150 ++++++++++++++++++++++++++++++++++++++++++++++ src/suites/operation.py | 104 -------------------------------- src/suites/parenthesis.py | 54 ----------------- 3 files changed, 150 insertions(+), 158 deletions(-) create mode 100644 src/suites/flow.py delete mode 100644 src/suites/operation.py delete mode 100644 src/suites/parenthesis.py (limited to 'src/suites') diff --git a/src/suites/flow.py b/src/suites/flow.py new file mode 100644 index 0000000..cf8ca61 --- /dev/null +++ b/src/suites/flow.py @@ -0,0 +1,150 @@ +# ############################################################################ # +# # +# ::: :::::::: # +# flow.py :+: :+: :+: # +# +:+ +:+ +:+ # +# By: charles +#+ +:+ +#+ # +# +#+#+#+#+#+ +#+ # +# Created: 2020/07/15 18:24:52 by charles #+# #+# # +# Updated: 2020/09/12 15:30:37 by charles ### ########.fr # +# # +# ############################################################################ # + +from suite import suite +import hooks + + +@suite() +def suite_end(test): + test("echo bonjour; echo je") + test("echo bonjour ;echo je") + test("echo bonjour ; echo je") + test("echo bonjour;") + test("echo; ") + test("echo ; ") + test("echo ;") + test("; echo", hook=hooks.error_line0) + test(" ;echo", hook=hooks.error_line0) + test(" ; echo", hook=hooks.error_line0) + test("echo a; echo b; echo c; echo d; echo e; echo f; echo g; echo h; echo i;" + "echo j; echo k; echo l; echo m; echo c; echo c; echo c; echo c; echo c;" + "echo c; echo c; echo c; echo v; echo w; echo x; echo y; echo z") + test("echo a ; echo b; echo c ;echo d ; echo e ;echo f; echo g ;echo h; echo i;" + "echo j ; echo k; echo l; echo m; echo c ; echo c; echo c ; echo c; echo c;" + "echo c; echo c ; echo c; echo v ; echo w; echo x; echo y ; echo z") + test("ls doesnotexists ; echo bonjour") + test("ls doesnotexists; echo bonjour") + test("echo bonjour; ls doesnotexists") + + +@suite() +def suite_pipe(test): + test("cat /etc/shells | head -c 10") + test("cat -e /etc/shells | head -c 10") + test("cat -e /etc/shells | cat -e | head -c 10") + test("cat -e /etc/shells | cat -e | cat -e | head -c 10") + test("echo bonjour | cat") + test("echo bonjour | cat -e") + test("echo bonjour | cat -e | cat -e | cat -e | cat -e | cat -e | cat -e | cat -e") + test("ls | cat -e", setup="touch a b c d; mkdir m1 m2 m3") + test("ls -l | cat -e", setup="touch a b c d; mkdir m1 m2 m3") + test("ls -l | cat -e | cat | cat | cat", setup="touch a b c d; mkdir m1 m2 m3") + test("ls -l | cat -e | cat -e | cat -e | cat -e", setup="touch a b c d; mkdir m1 m2 m3") + test("ls -l | cat -e < a", setup="touch a b c d; mkdir m1 m2 m3; echo bonjour > a") + test("echo|", hook=hooks.discard) + test("echo |", hook=hooks.discard) + test("echo | ", hook=hooks.discard) + test("|cat", hook=hooks.error_line0) + test("| cat", hook=hooks.error_line0) + test(" | cat", hook=hooks.error_line0) + test("echo a | export A=a; echo $A") + test("export A=a | cat; echo $A") + # test("echo a | A=a; echo $A") + # test("A=a | cat; echo $A") + + +@suite(bonus=True) +def suite_and(test): + test("echo bonjour&& echo je") + test("echo bonjour &&echo je") + test("echo bonjour && echo je") + test("echo bonjour&&", hook=hooks.discard) + test("echo&& ", hook=hooks.discard) + test("echo && ", hook=hooks.discard) + test("echo &&", hook=hooks.discard) + test("&&echo", hook=hooks.error_line0) + test("&& echo", hook=hooks.error_line0) + test(" && echo", hook=hooks.error_line0) + test("echo a&& echo b&& echo c&& echo d&& echo e&& echo f&& echo g&& echo h&& echo i&&" + "echo j&& echo k&& echo l&& echo m&& echo c&& echo c&& echo c&& echo c&& echo c&&" + "echo c&& echo c&& echo c&& echo v&& echo w&& echo x&& echo y&& echo z") + test("echo a && echo b&& echo c &&echo d && echo e &&echo f&& echo g &&echo h&& echo i&&" + "echo j && echo k&& echo l&& echo m&& echo c && echo c&& echo c && echo c&& echo c&&" + "echo c&& echo c && echo c&& echo v && echo w&& echo x&& echo y && echo z") + test("ls doesnotexists && echo bonjour") + test("ls doesnotexists&& echo bonjour") + test("echo bonjour&& ls doesnotexists") + + +@suite(bonus=True) +def suite_or(test): + test("echo bonjour|| echo je") + test("echo bonjour ||echo je") + test("echo bonjour || echo je") + test("echo bonjour||", hook=hooks.discard) + test("echo|| ", hook=hooks.discard) + test("echo || ", hook=hooks.discard) + test("echo ||", hook=hooks.discard) + test("||echo", hook=hooks.error_line0) + test("|| echo", hook=hooks.error_line0) + test(" || echo", hook=hooks.error_line0) + test("echo a|| echo b|| echo c|| echo d|| echo e|| echo f|| echo g|| echo h|| echo i||" + "echo j|| echo k|| echo l|| echo m|| echo c|| echo c|| echo c|| echo c|| echo c||" + "echo c|| echo c|| echo c|| echo v|| echo w|| echo x|| echo y|| echo z") + test("echo a || echo b|| echo c ||echo d || echo e ||echo f|| echo g ||echo h|| echo i||" + "echo j || echo k|| echo l|| echo m|| echo c || echo c|| echo c || echo c|| echo c||" + "echo c|| echo c || echo c|| echo v || echo w|| echo x|| echo y || echo z") + test("ls doesnotexists || echo bonjour") + test("ls doesnotexists|| echo bonjour") + test("echo bonjour|| ls doesnotexists") + + +@suite(bonus=True) +def suite_parenthesis(test): + test("(echo bonjour)") + test("(echo bonjour )") + test("( echo bonjour )") + test("(echo a && echo b) && echo c") + test("(echo a || echo b) || echo c") + test("(ls doesnotexist || echo b) || echo c") + test("(echo a || ls doesnotexist) || echo c") + test("echo aa && (echo b && echo c)") + test("ls doesnotexist || (echo b && echo c)") + test("(echo bonjour > f1)", files=["f1"]) + test("(echo bonjour > f1 > f2 > f3)", files=["f1", "f2", "f3"]) + test("(echo bonjour > f1 > f2 > f3 > f4 > f5 > f6 > f7 > f8 > f9)", + files=["f1", "f2", "f3", "f4", "f5", "f6", "f7", "f8", "f9"]) + test("(echo bonjour) > f1", files=["f1"]) + test("(echo bonjour) > f1 > f2 > f3", files=["f1", "f2", "f3"]) + test("(echo bonjour) > f1 > f2 > f3 > f4 > f5 > f6 > f7 > f8 > f9", + files=["f1", "f2", "f3", "f4", "f5", "f6", "f7", "f8", "f9"]) + test("(cat -e < f1)", setup="echo bonjour > f1") + test("(cat -e < f1 < f2 < f3)", setup="touch f1 f2 f3 f4; echo bonjour > f3") + test("(cat -e < f1 < f2 < f3 < f4 < f5 < f6 < f7 < f8 < f9)", + setup="touch f1 f2 f3 f4 f5 f6 f7 f8 f9; echo bonjour > f9") + test("(cat -e) < f1", setup="echo bonjour > f1") + test("(cat -e) < f1 < f2 < f3", setup="touch f1 f2 f3 f4; echo bonjour > f3") + test("(cat -e) < f1 < f2 < f3 < f4 < f5 < f6 < f7 < f8 < f9", + setup="touch f1 f2 f3 f4 f5 f6 f7 f8 f9; echo bonjour > f9") + test("(echo bonjour > f1 > f2 > f3 > f4) > f5 > f6 > f7 > f8 > f9", + files=["f1", "f2", "f3", "f4", "f5", "f6", "f7", "f8", "f9"]) + test("(cat -e < f1 < f2 < f3 < f4) < f5 < f6 < f7 < f8 < f9", + setup="touch f1 f2 f3 f4 f5 f6 f7 f8 f9; echo bonjour > f4") + test("(echo bonjour > f1) > f2", files=["f1", "f2"]) + test("(cat -e > f1) < f2", setup="ls -l / > f2", files=["f1"]) + test("(exit); echo bonjour") + test("(echo bonjour; exit; echo aurevoir)") + test("(ls && ls)") + test("(ls doesntexist || ls)") + test("(ls doesntexist && ls)") + test("(ls && ls) && echo $?") diff --git a/src/suites/operation.py b/src/suites/operation.py deleted file mode 100644 index 18ebd72..0000000 --- a/src/suites/operation.py +++ /dev/null @@ -1,104 +0,0 @@ -# ############################################################################ # -# # -# ::: :::::::: # -# operation.py :+: :+: :+: # -# +:+ +:+ +:+ # -# By: charles +#+ +:+ +#+ # -# +#+#+#+#+#+ +#+ # -# Created: 2020/07/15 18:24:52 by charles #+# #+# # -# Updated: 2020/09/11 20:12:54 by charles ### ########.fr # -# # -# ############################################################################ # - -from suite import suite -import hooks - - -@suite() -def suite_end(test): - test("echo bonjour; echo je") - test("echo bonjour ;echo je") - test("echo bonjour ; echo je") - test("echo bonjour;") - test("echo; ") - test("echo ; ") - test("echo ;") - test("; echo", hook=hooks.error_line0) - test(" ;echo", hook=hooks.error_line0) - test(" ; echo", hook=hooks.error_line0) - test("echo a; echo b; echo c; echo d; echo e; echo f; echo g; echo h; echo i;" - "echo j; echo k; echo l; echo m; echo c; echo c; echo c; echo c; echo c;" - "echo c; echo c; echo c; echo v; echo w; echo x; echo y; echo z") - test("echo a ; echo b; echo c ;echo d ; echo e ;echo f; echo g ;echo h; echo i;" - "echo j ; echo k; echo l; echo m; echo c ; echo c; echo c ; echo c; echo c;" - "echo c; echo c ; echo c; echo v ; echo w; echo x; echo y ; echo z") - test("ls doesnotexists ; echo bonjour") - test("ls doesnotexists; echo bonjour") - test("echo bonjour; ls doesnotexists") - - -@suite() -def suite_pipe(test): - test("echo bonjour | cat") - test("echo bonjour | cat -e") - test("ls | cat -e", setup="touch a b c d; mkdir m1 m2 m3") - test("ls -l | cat -e", setup="touch a b c d; mkdir m1 m2 m3") - test("ls -l | cat -e | cat | cat | cat", setup="touch a b c d; mkdir m1 m2 m3") - test("ls -l | cat -e | cat -e | cat -e | cat -e", setup="touch a b c d; mkdir m1 m2 m3") - test("ls -l | cat -e < a", setup="touch a b c d; mkdir m1 m2 m3; echo bonjour > a") - test("echo|", hook=hooks.discard) - test("echo |", hook=hooks.discard) - test("echo | ", hook=hooks.discard) - test("|cat", hook=hooks.error_line0) - test("| cat", hook=hooks.error_line0) - test(" | cat", hook=hooks.error_line0) - test("echo a | export A=a; echo $A") - test("export A=a | cat; echo $A") - # test("echo a | A=a; echo $A") - # test("A=a | cat; echo $A") - - -@suite(bonus=True) -def suite_and(test): - test("echo bonjour&& echo je") - test("echo bonjour &&echo je") - test("echo bonjour && echo je") - test("echo bonjour&&", hook=hooks.discard) - test("echo&& ", hook=hooks.discard) - test("echo && ", hook=hooks.discard) - test("echo &&", hook=hooks.discard) - test("&&echo", hook=hooks.error_line0) - test("&& echo", hook=hooks.error_line0) - test(" && echo", hook=hooks.error_line0) - test("echo a&& echo b&& echo c&& echo d&& echo e&& echo f&& echo g&& echo h&& echo i&&" - "echo j&& echo k&& echo l&& echo m&& echo c&& echo c&& echo c&& echo c&& echo c&&" - "echo c&& echo c&& echo c&& echo v&& echo w&& echo x&& echo y&& echo z") - test("echo a && echo b&& echo c &&echo d && echo e &&echo f&& echo g &&echo h&& echo i&&" - "echo j && echo k&& echo l&& echo m&& echo c && echo c&& echo c && echo c&& echo c&&" - "echo c&& echo c && echo c&& echo v && echo w&& echo x&& echo y && echo z") - test("ls doesnotexists && echo bonjour") - test("ls doesnotexists&& echo bonjour") - test("echo bonjour&& ls doesnotexists") - - -@suite(bonus=True) -def suite_or(test): - test("echo bonjour|| echo je") - test("echo bonjour ||echo je") - test("echo bonjour || echo je") - test("echo bonjour||", hook=hooks.discard) - test("echo|| ", hook=hooks.discard) - test("echo || ", hook=hooks.discard) - test("echo ||", hook=hooks.discard) - test("||echo", hook=hooks.error_line0) - test("|| echo", hook=hooks.error_line0) - test(" || echo", hook=hooks.error_line0) - test("echo a|| echo b|| echo c|| echo d|| echo e|| echo f|| echo g|| echo h|| echo i||" - "echo j|| echo k|| echo l|| echo m|| echo c|| echo c|| echo c|| echo c|| echo c||" - "echo c|| echo c|| echo c|| echo v|| echo w|| echo x|| echo y|| echo z") - test("echo a || echo b|| echo c ||echo d || echo e ||echo f|| echo g ||echo h|| echo i||" - "echo j || echo k|| echo l|| echo m|| echo c || echo c|| echo c || echo c|| echo c||" - "echo c|| echo c || echo c|| echo v || echo w|| echo x|| echo y || echo z") - test("ls doesnotexists || echo bonjour") - test("ls doesnotexists|| echo bonjour") - test("echo bonjour|| ls doesnotexists") diff --git a/src/suites/parenthesis.py b/src/suites/parenthesis.py deleted file mode 100644 index 6a1e7f1..0000000 --- a/src/suites/parenthesis.py +++ /dev/null @@ -1,54 +0,0 @@ -# ############################################################################ # -# # -# ::: :::::::: # -# parenthesis.py :+: :+: :+: # -# +:+ +:+ +:+ # -# By: charles +#+ +:+ +#+ # -# +#+#+#+#+#+ +#+ # -# Created: 2020/07/15 18:24:57 by charles #+# #+# # -# Updated: 2020/09/11 20:12:27 by charles ### ########.fr # -# # -# ############################################################################ # - -from suite import suite - - -@suite(bonus=True) -def suite_parenthesis(test): - test("(echo bonjour)") - test("(echo bonjour )") - test("( echo bonjour )") - test("(echo a && echo b) && echo c") - test("(echo a || echo b) || echo c") - test("(ls doesnotexist || echo b) || echo c") - test("(echo a || ls doesnotexist) || echo c") - test("echo aa && (echo b && echo c)") - test("ls doesnotexist || (echo b && echo c)") - test("(echo bonjour > f1)", files=["f1"]) - test("(echo bonjour > f1 > f2 > f3)", files=["f1", "f2", "f3"]) - test("(echo bonjour > f1 > f2 > f3 > f4 > f5 > f6 > f7 > f8 > f9)", - files=["f1", "f2", "f3", "f4", "f5", "f6", "f7", "f8", "f9"]) - test("(echo bonjour) > f1", files=["f1"]) - test("(echo bonjour) > f1 > f2 > f3", files=["f1", "f2", "f3"]) - test("(echo bonjour) > f1 > f2 > f3 > f4 > f5 > f6 > f7 > f8 > f9", - files=["f1", "f2", "f3", "f4", "f5", "f6", "f7", "f8", "f9"]) - test("(cat -e < f1)", setup="echo bonjour > f1") - test("(cat -e < f1 < f2 < f3)", setup="touch f1 f2 f3 f4; echo bonjour > f3") - test("(cat -e < f1 < f2 < f3 < f4 < f5 < f6 < f7 < f8 < f9)", - setup="touch f1 f2 f3 f4 f5 f6 f7 f8 f9; echo bonjour > f9") - test("(cat -e) < f1", setup="echo bonjour > f1") - test("(cat -e) < f1 < f2 < f3", setup="touch f1 f2 f3 f4; echo bonjour > f3") - test("(cat -e) < f1 < f2 < f3 < f4 < f5 < f6 < f7 < f8 < f9", - setup="touch f1 f2 f3 f4 f5 f6 f7 f8 f9; echo bonjour > f9") - test("(echo bonjour > f1 > f2 > f3 > f4) > f5 > f6 > f7 > f8 > f9", - files=["f1", "f2", "f3", "f4", "f5", "f6", "f7", "f8", "f9"]) - test("(cat -e < f1 < f2 < f3 < f4) < f5 < f6 < f7 < f8 < f9", - setup="touch f1 f2 f3 f4 f5 f6 f7 f8 f9; echo bonjour > f4") - test("(echo bonjour > f1) > f2", files=["f1", "f2"]) - test("(cat -e > f1) < f2", setup="ls -l / > f2", files=["f1"]) - test("(exit); echo bonjour") - test("(echo bonjour; exit; echo aurevoir)") - test("(ls && ls)") - test("(ls doesntexist || ls)") - test("(ls doesntexist && ls)") - test("(ls && ls) && echo $?") -- cgit