aboutsummaryrefslogtreecommitdiff
path: root/suites/preprocess.py
diff options
context:
space:
mode:
authorCharles <sircharlesaze@gmail.com>2020-06-23 09:08:16 +0200
committerCharles <sircharlesaze@gmail.com>2020-06-23 10:31:05 +0200
commit3f2db95d5563c9c2b92a0531ddee28f79f438706 (patch)
treeee353ad4a0fcca9d59758f2e98efa3d9907096fc /suites/preprocess.py
parentb463bfa34471c1d3e65dfd4e22a99f4c84d7c5c6 (diff)
downloadminishell_test-3f2db95d5563c9c2b92a0531ddee28f79f438706.tar.gz
minishell_test-3f2db95d5563c9c2b92a0531ddee28f79f438706.tar.bz2
minishell_test-3f2db95d5563c9c2b92a0531ddee28f79f438706.zip
Added a few builtin/parenthesis tests
Diffstat (limited to 'suites/preprocess.py')
-rw-r--r--suites/preprocess.py143
1 files changed, 143 insertions, 0 deletions
diff --git a/suites/preprocess.py b/suites/preprocess.py
new file mode 100644
index 0000000..62588b7
--- /dev/null
+++ b/suites/preprocess.py
@@ -0,0 +1,143 @@
+import config
+from suite import suite
+
+@suite
+def suite_quote(test):
+ test("'echo' 'bonjour'")
+ test("'echo' 'je' 'suis' 'charles'")
+
+ test('"echo" "bonjour"')
+ test('"echo" "je" "suis" "charles"')
+
+ test('echo je\'suis\'"charles"')
+ test('echo "je"suis\'charles\'')
+ test('echo \'je\'"suis"charles')
+
+ test('echo "\\""')
+ test('echo "\\$"')
+ test('echo "\\\\"')
+
+@suite
+def suite_interpolation(test):
+ test("echo $TEST", exports={"TEST": "bonjour"})
+ test("echo $TES", exports={"TEST": "bonjour"})
+ test("echo $TEST_", exports={"TEST": "bonjour"})
+
+ test('echo "|$TEST|"', exports={"TEST": "bonjour"})
+ test('echo "|$TES|"', exports={"TEST": "bonjour"})
+ test('echo "|$TEST_|"', exports={"TEST": "bonjour"})
+
+ test("echo '|$TEST|'", exports={"TEST": "bonjour"})
+ test("echo '|$TES|'", exports={"TEST": "bonjour"})
+ test("echo '|$TEST_|'", exports={"TEST": "bonjour"})
+
+ test("echo $A$B$C", exports={"A": "foo", "B": "bar", "C": "baz"})
+ test('echo "$A$B$C"', exports={"A": "foo", "B": "bar", "C": "baz"})
+ test("echo '$A$B$C'", exports={"A": "foo", "B": "bar", "C": "baz"})
+
+ test("echo $A,$B,$C", exports={"A": "foo", "B": "bar", "C": "baz"})
+ test('echo "$A,$B,$C"', exports={"A": "foo", "B": "bar", "C": "baz"})
+ test("echo '$A,$B,$C'", exports={"A": "foo", "B": "bar", "C": "baz"})
+
+ test('echo $A"$B"$C"A"$B"$C"', exports={"A": "foo", "B": "bar", "C": "baz"})
+ test("echo $A'$B'$C'A'$B'$C'", exports={"A": "foo", "B": "bar", "C": "baz"})
+
+ test("echo $A", exports={"A": "'" + config.LOREM + "'"})
+ test('echo "$A"', exports={"A": "'" + config.LOREM + "'"})
+ test("echo '$A'", exports={"A": "'" + config.LOREM + "'"})
+
+ test("$ECHO $ECHO", exports={"ECHO": "echo"})
+ test("$A$B bonjour", exports={"A": "ec", "B": "ho"})
+
+ test("echo $")
+
+@suite
+def suite_glob(test):
+ test("echo *")
+ test("echo *", setup="touch a b c")
+ test("echo *.c", setup="touch a b c foo.c bar.c")
+ test("echo src/*.c", setup="mkdir src; touch src/a src/b src/c src/foo.c src/bar.c")
+ test("echo */*.c", setup="mkdir src; touch src/a src/b src/c src/foo.c src/bar.c")
+ test("echo */*.c",
+ setup="mkdir src; touch src/a src/b src/c src/foo.c src/bar.c;\
+ mkdir inc; touch inc/a inc/b inc/c inc/foo.c inc/bar.c")
+ test("echo */*.h",
+ setup="mkdir src; touch src/a src/b src/c src/foo.c src/bar.c;\
+ mkdir inc; touch inc/a inc/b inc/c inc/foo.h inc/bar.h")
+ test("echo l1/*/l3/*/*",
+ setup="mkdir -p l1/l2_1/l3; mkdir -p l1/l2_2; cd l1/l2_1/l3;\
+ mkdir src; touch src/a src/b src/c src/foo.c src/bar.c;\
+ mkdir inc; touch inc/a inc/b inc/c inc/foo.h inc/bar.h;\
+ cd ../../..; cd l1/l2_2; touch bonjour je suis")
+
+ test("echo */*/*/*/*.c",
+ setup="mkdir -p l1/l2/l3; cd l1/l2/l3;\
+ mkdir src; touch src/a src/b src/c src/foo.c src/bar.c;\
+ mkdir inc; touch inc/a inc/b inc/c inc/foo.h inc/bar.h")
+ test("echo */*/*/*/*.h",
+ setup="mkdir -p l1/l2/l3; cd l1/l2/l3;\
+ mkdir src; touch src/a src/b src/c src/foo.c src/bar.c;\
+ mkdir inc; touch inc/a inc/b inc/c inc/foo.h inc/bar.h")
+
+ test("echo */*/*/*.c",
+ setup="mkdir -p l1/l2/l3; cd l1/l2/l3;\
+ mkdir src; touch src/a src/b src/c src/foo.c src/bar.c;\
+ mkdir inc; touch inc/a inc/b inc/c inc/foo.h inc/bar.h")
+ test("echo */*/*/*.h",
+ setup="mkdir -p l1/l2/l3; cd l1/l2/l3;\
+ mkdir src; touch src/a src/b src/c src/foo.c src/bar.c;\
+ mkdir inc; touch inc/a inc/b inc/c inc/foo.h inc/bar.h")
+
+ test("echo */*/*/*/*/*.c",
+ setup="mkdir -p l1/l2/l3; cd l1/l2/l3;\
+ mkdir src; touch src/a src/b src/c src/foo.c src/bar.c;\
+ mkdir inc; touch inc/a inc/b inc/c inc/foo.h inc/bar.h")
+ test("echo */*/*/*/*/*.h",
+ setup="mkdir -p l1/l2/l3; cd l1/l2/l3;\
+ mkdir src; touch src/a src/b src/c src/foo.c src/bar.c;\
+ mkdir inc; touch inc/a inc/b inc/c inc/foo.h inc/bar.h")
+
+ test("echo /*")
+ test("echo /etc/*")
+ test("echo /usr/include/*.h")
+ test("echo /*/*")
+
+ test("echo *nothing")
+ test("echo nothing*")
+ test("echo *nothing*")
+
+ test("echo **")
+ test("echo **", setup="touch a b c")
+ test("echo **", setup="mkdir d; touch d/a d/b d/c")
+ test("echo */*", setup="mkdir d; touch d/a d/b d/c")
+ test("echo */a", setup="mkdir d; touch d/a d/b d/c")
+ test("echo d/*", setup="mkdir d; touch d/a d/b d/c")
+
+@suite
+def suite_escape(test):
+ test(r"echo \a")
+ test(r"\e\c\h\o bonjour")
+ test(r"echo charles\ ")
+ test(r"echo \ \ jesuis\ \ charles")
+ test(r"echo \ \ \ \ \ \ \ \ ")
+ test(r"echo \ \ \ \ \ \ \ \ \ \ \ \ \ \ ")
+ test(r"echo \$PATH")
+ test(r"echo \$\P\A\T\H")
+ test(r"echo\ bonjour")
+
+@suite
+def suite_preprocess(test):
+ test(r"echo \*", setup="touch a b c")
+ test(r"echo \*\*", setup="touch a b c")
+ test(r"echo \ *", setup="touch a b c")
+ test(r"echo *\.c", setup="touch a.c b.c c.c")
+ test(r"echo *.\c", setup="touch a.c b.c c.c")
+ test(r"echo *.c\ ", setup="touch a.c b.c c.c")
+ test("echo $A$B",
+ setup="mkdir src; touch src/a src/b src/c src/foo.c src/bar.c;\
+ mkdir inc; touch inc/a inc/b inc/c inc/foo.c inc/bar.c",
+ exports={"A": "*", "B": "/*.c"})
+ test("echo $A$B",
+ setup="mkdir src; touch src/a src/b src/c src/foo.c src/bar.c;\
+ mkdir inc; touch inc/a inc/b inc/c inc/foo.c inc/bar.c",
+ exports={"A": "*/.", "B": "*.c"})