aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/hooks.py17
-rw-r--r--src/suites/operation.py50
-rw-r--r--src/test/test.py3
3 files changed, 42 insertions, 28 deletions
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 <me@cacharle.xyz> +#+ +:+ +#+ #
# +#+#+#+#+#+ +#+ #
# 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 <charles.cabergs@gmail.com> +#+ +:+ +#+ #
# +#+#+#+#+#+ +#+ #
# 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 <charles.cabergs@gmail.com> +#+ +:+ +#+ #
# +#+#+#+#+#+ +#+ #
# 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)