From 1739695001889d53d29976943fda593d64afcefb Mon Sep 17 00:00:00 2001 From: Charles Cabergs Date: Fri, 11 Sep 2020 17:02:40 +0200 Subject: Added error_line0 hook --- src/hooks.py | 17 ++++++++++++++++- src/suites/operation.py | 50 ++++++++++++++++++++++++------------------------- src/test/test.py | 3 +-- 3 files changed, 42 insertions(+), 28 deletions(-) (limited to 'src') diff --git a/src/hooks.py b/src/hooks.py index cd165a3..b723b99 100644 --- a/src/hooks.py +++ b/src/hooks.py @@ -6,9 +6,24 @@ # By: charles +#+ +:+ +#+ # # +#+#+#+#+#+ +#+ # # Created: 2020/09/11 16:10:20 by charles #+# #+# # -# Updated: 2020/09/11 16:10:51 by charles ### ########.fr # +# Updated: 2020/09/11 17:06:03 by charles ### ########.fr # # # # ############################################################################ # +import config + + def sort_lines(output): return '\n'.join(sorted(output.split('\n'))) + +def error_line0(output): + lines = output.split('\n') + if len(lines) != 3: + return output + prefix = "{}: -c: line 0: ".format(config.REFERENCE_PATH) + if lines[0].find(prefix) != 0: + return output + return lines[0].replace(prefix, "minishell: ") + "\n" + +def discard(output): + return "DISCARDED BY TEST" diff --git a/src/suites/operation.py b/src/suites/operation.py index a39ddda..dc8642a 100644 --- a/src/suites/operation.py +++ b/src/suites/operation.py @@ -6,11 +6,12 @@ # By: charles +#+ +:+ +#+ # # +#+#+#+#+#+ +#+ # # Created: 2020/07/15 18:24:52 by charles #+# #+# # -# Updated: 2020/09/11 16:35:25 by charles ### ########.fr # +# Updated: 2020/09/11 17:05:35 by charles ### ########.fr # # # # ############################################################################ # from suite import suite +import hooks @suite() def suite_end(test): @@ -21,9 +22,9 @@ def suite_end(test): test("echo; ") test("echo ; ") test("echo ;") - 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") @@ -45,13 +46,12 @@ def suite_pipe(test): 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") - # TODO special test for potential segfault - # test("echo|") - # test("echo |") - # test("echo | ") - test("|cat") - test("| cat") - test(" | cat") + 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") @@ -63,13 +63,13 @@ def suite_and(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") - test("&& echo") - test(" && echo") + 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") @@ -86,13 +86,13 @@ def suite_or(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") - test("|| echo") - test(" || echo") + 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") diff --git a/src/test/test.py b/src/test/test.py index bd7ed0d..04ee354 100644 --- a/src/test/test.py +++ b/src/test/test.py @@ -6,7 +6,7 @@ # By: charles +#+ +:+ +#+ # # +#+#+#+#+#+ +#+ # # Created: 2020/06/16 21:48:50 by charles #+# #+# # -# Updated: 2020/09/11 16:08:07 by charles ### ########.fr # +# Updated: 2020/09/11 17:00:25 by charles ### ########.fr # # # # ############################################################################ # @@ -113,5 +113,4 @@ class Test: sandbox.remove() if self.hook is not None: output = self.hook(output) - output = '\n'.join(sorted(output.split('\n'))) return Captured(output, process.returncode, files_content) -- cgit