From 3f2db95d5563c9c2b92a0531ddee28f79f438706 Mon Sep 17 00:00:00 2001 From: Charles Date: Tue, 23 Jun 2020 09:08:16 +0200 Subject: Added a few builtin/parenthesis tests --- suites/cmd.py | 93 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 93 insertions(+) create mode 100644 suites/cmd.py (limited to 'suites/cmd.py') diff --git a/suites/cmd.py b/suites/cmd.py new file mode 100644 index 0000000..018bd1a --- /dev/null +++ b/suites/cmd.py @@ -0,0 +1,93 @@ +import config +from suite import suite + +@suite +def suite_redirection(test): + test("echo bonjour > test", setup="", files=["test"]) + test("echo > test bonjour", setup="", files=["test"]) + test("> test echo bonjour", setup="", files=["test"]) + test("echo bonjour >> test", setup="", files=["test"]) + test("echo >> test bonjour", setup="", files=["test"]) + test(">> test echo bonjour", setup="", files=["test"]) + test("cat < test", setup="echo bonjour > test") + test("echo bonjour > test", setup="", files=["test"]) + + test("echo > test'sticked' bonjour", setup="", files=["teststicked"]) + test("> test'sticked' echo bonjour", setup="", files=["teststicked"]) + test("echo bonjour >> test'sticked'", setup="", files=["teststicked"]) + test("echo >> test'sticked' bonjour", setup="", files=["teststicked"]) + test(">> test'sticked' echo bonjour", setup="", files=["teststicked"]) + test("cat < test'sticked'", setup="echo bonjour > test'sticked'") + test("< test'sticked' cat", setup="echo bonjour > test'sticked'") + + test("echo > test\"sticked\" bonjour", setup="", files=["teststicked"]) + test("> test\"sticked\" echo bonjour", setup="", files=["teststicked"]) + test("echo bonjour >> test\"sticked\"", setup="", files=["teststicked"]) + test("echo >> test\"sticked\" bonjour", setup="", files=["teststicked"]) + test(">> test\"sticked\" echo bonjour", setup="", files=["teststicked"]) + test("cat < test\"sticked\"", setup="echo bonjour > test\"sticked\"") + test("< test\"sticked\" cat", setup="echo bonjour > test\"sticked\"") + + test("echo > test'yo'\"sticked\" bonjour", setup="", files=["testyosticked"]) + test("> test'yo'\"sticked\" echo bonjour", setup="", files=["testyosticked"]) + test("echo bonjour >> test'yo'\"sticked\"", setup="", files=["testyosticked"]) + test("echo >> test'yo'\"sticked\" bonjour", setup="", files=["testyosticked"]) + test(">> test'yo'\"sticked\" echo bonjour", setup="", files=["testyosticked"]) + test("cat < test'yo'\"sticked\"", setup="echo bonjour > test'yo'\"sticked\"") + test("< test'yo'\"sticked\" cat", setup="echo bonjour > test'yo'\"sticked\"") + + test("echo bonjour > test > je > suis", setup="", files=["test", "je", "suis"]) + test("echo > test > je bonjour > suis", setup="", files=["test", "je", "suis"]) + test("> test echo bonjour > je > suis", setup="", files=["test", "je", "suis"]) + test("echo bonjour >> test > je >> suis", setup="", files=["test", "je", "suis"]) + test("echo >> test bonjour > je > suis", setup="", files=["test", "je", "suis"]) + test(">> test echo > je bonjour > suis", setup="", files=["test", "je", "suis"]) + test("cat < test < je", setup="echo bonjour > test; echo salut > je") + + test("echo bonjour>test>je>suis", setup="", files=["test", "je", "suis"]) + test(">test echo bonjour>je>suis", setup="", files=["test", "je", "suis"]) + test("echo bonjour>>test>je>>suis", setup="", files=["test", "je", "suis"]) + test("cat a'b'c'd'e'f'g'h'i'j'k'l'm'n'o'p'q'r's't'u'v'w'x'y'z'", + files=["abcdefghijklmnopqrstuvwxyz"]) + test('echo bonjour > a"b"c"d"e"f"g"h"i"j"k"l"m"n"o"p"q"r"s"t"u"v"w"x"y"z"', + files=["abcdefghijklmnopqrstuvwxyz"]) + test('echo bonjour > a\'b\'c"d"e\'f\'g"h"i\'j\'k"l"m\'n\'o"p\'q\'r"s\'t\'u"v"w"x"y\'z\'', + files=["abcdefghijklmnopqrstuvwxyz"]) + + test("> file", files=["file"]) + test("< file", setup="echo bonjour > file") + +@suite +def suite_edgecases(test): + test('echo "\\"" >>a"b""c" ', files=["abc"]) + test("echo " + ''.join([chr(i) for i in range(1, 127) if chr(i) not in '\n`"\'()|&><'])) + test("echo foo>bar", files=["bar"]) + test("echo foo >bar", files=["bar"]) + test("echo foo> bar", files=["bar"]) + test("echo foo > bar", files=["bar"]) + +@suite +def suite_cmd_error(test): + test(">") + test(">>") + test("<") + test("echo >") + test("echo >>") + test("echo <") + + test("> test", files=["test"]) + test(">> test", files=["test"]) + test("< test", setup="touch test") + + test("echo foo >>> bar") + test("echo foo >>>> bar") + test("echo foo >>>>> bar") + + test("cat <<< bar", setup="echo bonjour > bar") + test("cat <<<< bar", setup="echo bonjour > bar") + test("cat <<<<< bar", setup="echo bonjour > bar") + + test("notfound") + test("notfound a b c") -- cgit