mirror of
https://github.com/Savapitech/42sh.git
synced 2026-01-19 01:27:51 +01:00
176 lines
3.5 KiB
Python
176 lines
3.5 KiB
Python
from validator import Test
|
|
|
|
|
|
TESTS = [
|
|
Test(
|
|
key="SIMPLE",
|
|
name="simple commands",
|
|
cmds=[
|
|
"ls\n",
|
|
"uname\n",
|
|
"who\n",
|
|
]
|
|
),
|
|
Test(
|
|
key="ARGS",
|
|
name="multiple arguments",
|
|
cmds=[
|
|
"echo kek\n",
|
|
"ls --all\n",
|
|
"cat -e Makefile\n",
|
|
"find . -type f\n",
|
|
"ls -a . . .\n",
|
|
"wc --chars --words --lines Makefile\n",
|
|
],
|
|
depends_on=("SIMPLE",)
|
|
),
|
|
Test(
|
|
key="BAD CMD",
|
|
name="invalid commands",
|
|
cmds=[
|
|
"plopdjksjesi\n",
|
|
"ls -PQRT\n",
|
|
],
|
|
depends_on=("ARGS",)
|
|
),
|
|
Test(
|
|
key="PATH",
|
|
name="path handing",
|
|
cmds=[
|
|
"/bin/sh -version\n",
|
|
"/../bin/sh -version\n",
|
|
# "~/../../bin/sh --version\n",
|
|
"fixtures/exec.sh\n",
|
|
],
|
|
depends_on=("ARGS",)
|
|
),
|
|
Test(
|
|
key="ENV",
|
|
name="setenv / unsetenv",
|
|
cmds=[
|
|
"setenv Hello plop\n",
|
|
"setenv 1 nope\n",
|
|
"setenv @\n",
|
|
],
|
|
depends_on=("ARGS",)
|
|
),
|
|
Test(
|
|
key="PWD",
|
|
name="pwd",
|
|
cmds=["pwd\n"],
|
|
depends_on=("SIMPLE",)
|
|
),
|
|
Test(
|
|
key="SEMICOLON",
|
|
name="semicolon",
|
|
cmds=[
|
|
";\n",
|
|
"echo a; echo b\n",
|
|
"echo a;; echo b\n",
|
|
"echo a; echo b;\n",
|
|
],
|
|
depends_on=("ARGS",)
|
|
),
|
|
Test(
|
|
key="CD",
|
|
name="cd builtin",
|
|
cmds=[
|
|
"cd /; pwd\n",
|
|
"cd; pwd\n",
|
|
"cd ~; pwd\n",
|
|
"cd .; pwd\n",
|
|
"cd ..; pwd\n",
|
|
"cd /..; pwd\n",
|
|
"cd a\n",
|
|
"cd . .\n",
|
|
"cd src/; pwd\n",
|
|
],
|
|
depends_on=("ARGS", "PWD", "SEMICOLON")
|
|
),
|
|
Test(
|
|
key="FMT",
|
|
name="line formatting (space and tabs)",
|
|
cmds=[
|
|
" echo plop\n",
|
|
"\techo plop\n",
|
|
" \techo plop\n",
|
|
"echo\tplop\n",
|
|
"echo plop\n",
|
|
"echo\t\tplop\n",
|
|
"echo plop\t \n",
|
|
],
|
|
depends_on=("ARGS",)
|
|
),
|
|
|
|
Test(
|
|
key="REDIR",
|
|
name="I/O redirections",
|
|
cmds=[
|
|
"echo plop > out.txt\n",
|
|
"cat < out.txt\n",
|
|
"echo again >> out.txt\n",
|
|
"cat < out.txt\n",
|
|
"cat nofile.txt\n",
|
|
"echo test > /no/perm/file\n",
|
|
],
|
|
depends_on=("ARGS",)
|
|
),
|
|
|
|
Test(
|
|
key="PIPE",
|
|
name="pipes",
|
|
cmds=[
|
|
"echo plop | cat\n",
|
|
"echo kek | grep kek\n",
|
|
"ls | grep Makefile\n",
|
|
"who | wc -l\n",
|
|
"ls | | cat\n", # Syntax error
|
|
],
|
|
depends_on=("ARGS",)
|
|
),
|
|
|
|
Test(
|
|
key="ENV_EXPANSION",
|
|
name="environment variable expansion",
|
|
cmds=[
|
|
"echo $HOME\n",
|
|
"echo $PATH\n",
|
|
"setenv TESTVAR bonjour;echo $TESTVAR;unsetenv TESTVAR;echo $TESTVAR\n",
|
|
],
|
|
depends_on=("ENV","SEMICOLON",)
|
|
),
|
|
|
|
Test(
|
|
key="EXIT",
|
|
name="exit command",
|
|
cmds=[
|
|
"exit\n",
|
|
],
|
|
depends_on=("ARGS",)
|
|
),
|
|
|
|
Test(
|
|
key="MULTICMD",
|
|
name="multiple commands per line",
|
|
cmds=[
|
|
"echo one ; echo two ; echo three\n",
|
|
"ls ; pwd ; whoami\n",
|
|
"cd src/ ; pwd ; cd - ; pwd\n",
|
|
],
|
|
depends_on=("SEMICOLON",)
|
|
),
|
|
|
|
Test(
|
|
key="PARSING_ERR",
|
|
name="bad parsing cases",
|
|
cmds=[
|
|
"ls |\n",
|
|
"ls >\n",
|
|
"; ls\n",
|
|
";; ls\n",
|
|
"ls ;; ls\n",
|
|
],
|
|
depends_on=("PIPE", "REDIR", "SEMICOLON",)
|
|
),
|
|
]
|