diff options
| author | Charles Cabergs <me@cacharle.xyz> | 2021-02-05 12:27:32 +0100 |
|---|---|---|
| committer | Charles Cabergs <me@cacharle.xyz> | 2021-02-05 12:27:32 +0100 |
| commit | 904a033ae738e1c351f8fef71e2ec2418fc4db3d (patch) | |
| tree | 3de4980582c109c4f0d19111a2b88eafec9b9b36 /minishell_test/suites/path.py | |
| parent | a3e983f78dc4cbcf6f75f78fa2b3c57e09cd1b2b (diff) | |
| download | minishell_test-904a033ae738e1c351f8fef71e2ec2418fc4db3d.tar.gz minishell_test-904a033ae738e1c351f8fef71e2ec2418fc4db3d.tar.bz2 minishell_test-904a033ae738e1c351f8fef71e2ec2418fc4db3d.zip | |
Renaming src -> minishell_test for package name, Renaming main.py -> __main__.py for package execution with python -m
Diffstat (limited to 'minishell_test/suites/path.py')
| -rw-r--r-- | minishell_test/suites/path.py | 137 |
1 files changed, 137 insertions, 0 deletions
diff --git a/minishell_test/suites/path.py b/minishell_test/suites/path.py new file mode 100644 index 0000000..93d4232 --- /dev/null +++ b/minishell_test/suites/path.py @@ -0,0 +1,137 @@ +# ############################################################################ # +# # +# ::: :::::::: # +# path.py :+: :+: :+: # +# +:+ +:+ +:+ # +# By: charles <me@cacharle.xyz> +#+ +:+ +#+ # +# +#+#+#+#+#+ +#+ # +# Created: 2020/09/09 15:12:58 by charles #+# #+# # +# Updated: 2021/02/04 16:14:20 by charles ### ########.fr # +# # +# ############################################################################ # + +import distutils.spawn + +from suite import suite + + +@suite() +def suite_path(test): + """ searching a command in the path tests """ + whoami_path = distutils.spawn.find_executable("which") + if whoami_path is None: + print("Couldn't find `whoami` in your PATH: Skipping suite") + return + mode_fmt = ("mkdir path && cp " + + whoami_path + + " ./path/a && chmod {} ./path/a") + test("a", setup=mode_fmt.format("000"), exports={"PATH": "path"}) + test("a", setup=mode_fmt.format("001"), exports={"PATH": "path"}) + test("a", setup=mode_fmt.format("002"), exports={"PATH": "path"}) + test("a", setup=mode_fmt.format("003"), exports={"PATH": "path"}) + test("a", setup=mode_fmt.format("004"), exports={"PATH": "path"}) + test("a", setup=mode_fmt.format("005"), exports={"PATH": "path"}) + test("a", setup=mode_fmt.format("006"), exports={"PATH": "path"}) + test("a", setup=mode_fmt.format("007"), exports={"PATH": "path"}) + test("a", setup=mode_fmt.format("010"), exports={"PATH": "path"}) + test("a", setup=mode_fmt.format("020"), exports={"PATH": "path"}) + test("a", setup=mode_fmt.format("030"), exports={"PATH": "path"}) + test("a", setup=mode_fmt.format("040"), exports={"PATH": "path"}) + test("a", setup=mode_fmt.format("050"), exports={"PATH": "path"}) + test("a", setup=mode_fmt.format("060"), exports={"PATH": "path"}) + test("a", setup=mode_fmt.format("070"), exports={"PATH": "path"}) + test("a", setup=mode_fmt.format("100"), exports={"PATH": "path"}) + test("a", setup=mode_fmt.format("200"), exports={"PATH": "path"}) + test("a", setup=mode_fmt.format("300"), exports={"PATH": "path"}) + test("a", setup=mode_fmt.format("400"), exports={"PATH": "path"}) + test("a", setup=mode_fmt.format("500"), exports={"PATH": "path"}) + test("a", setup=mode_fmt.format("600"), exports={"PATH": "path"}) + test("a", setup=mode_fmt.format("700"), exports={"PATH": "path"}) + test("a", setup=mode_fmt.format("755"), exports={"PATH": "path"}) + test("a", setup=mode_fmt.format("644"), exports={"PATH": "path"}) + test("a", setup=mode_fmt.format("311"), exports={"PATH": "path"}) + test("a", setup=mode_fmt.format("111"), exports={"PATH": "path"}) + test("a", setup=mode_fmt.format("222"), exports={"PATH": "path"}) + test("a", setup=mode_fmt.format("333"), exports={"PATH": "path"}) + test("a", setup=mode_fmt.format("0777"), exports={"PATH": "path"}) + test("a", setup=mode_fmt.format("1000"), exports={"PATH": "path"}) + test("a", setup=mode_fmt.format("2000"), exports={"PATH": "path"}) + test("a", setup=mode_fmt.format("3000"), exports={"PATH": "path"}) + test("a", setup=mode_fmt.format("4000"), exports={"PATH": "path"}) + test("a", setup=mode_fmt.format("5000"), exports={"PATH": "path"}) + test("a", setup=mode_fmt.format("6000"), exports={"PATH": "path"}) + test("a", setup=mode_fmt.format("7000"), exports={"PATH": "path"}) + test("a", setup=mode_fmt.format("1777"), exports={"PATH": "path"}) + test("a", setup=mode_fmt.format("2777"), exports={"PATH": "path"}) + test("a", setup=mode_fmt.format("3777"), exports={"PATH": "path"}) + test("a", setup=mode_fmt.format("4777"), exports={"PATH": "path"}) + test("a", setup=mode_fmt.format("5777"), exports={"PATH": "path"}) + test("a", setup=mode_fmt.format("6777"), exports={"PATH": "path"}) + test("a", setup=mode_fmt.format("7777"), exports={"PATH": "path"}) + test("a", setup=mode_fmt.format("0000"), exports={"PATH": "path"}) + test("A", setup=mode_fmt.format("000"), exports={"PATH": "path"}) + # test("b", setup="mkdir path && cp " + whoami_path + " ./path/a && ln -s ./path/a ./path/b", + # exports={"PATH": "path"}) + test("b", setup="mkdir path && ln -s " + whoami_path + " ./path/b", exports={"PATH": "path"}) + test("a", setup="mkdir path && mkfifo path/a") + test("a", setup="mkdir path && mkfifo path/a && chmod 777 path/a") + # test("a", setup="mkdir path1 path2 && cp " + whoami_path + " path1/a" + # "&& cp " + whoami_path + " path2/a && chmod 000 path1/a", exports={"PATH": "path1:path2"}) + test("a", setup="mkdir path1 path2 && cp " + whoami_path + " path1/a" + "&& cp " + whoami_path + " path2/a && chmod 000 path1/a", exports={"PATH": "path2:path1"}) + test("a/b", setup="mkdir -p path/a; cp " + whoami_path + " path/a/b", exports={"PATH": "path"}) + + +@suite() +def suite_path_variable(test): + """ $PATH environment variable tests """ + test("echo $PATH", exports={"PATH": "doesnotexits"}) + test("echo $PATH", exports={"PATH": "doesnotexits:asdfasdfas"}) + test("echo $PATH", exports={"PATH": "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"}) + test("echo $PATH", exports={"PATH": "________"}) + test("echo $PATH", exports={"PATH": " "}) + test("echo $PATH", exports={"PATH": " : "}) + test("echo $PATH", exports={"PATH": " /bin "}) + test("echo $PATH", exports={"PATH": " /sbin "}) + test("echo $PATH", exports={"PATH": "/bin:/bin:/bin:/bin"}) + test("echo $PATH", exports={"PATH": "/sbin:/sbin:/sbin:/sbin"}) + test("echo $PATH", exports={"PATH": ""}) + test("echo $PATH", exports={"PATH": ":"}) + test("echo $PATH", exports={"PATH": ":::::::::::::::::::"}) + test("echo $PATH", exports={"PATH": "/asdfasdf"}) + test("echo $PATH", exports={"PATH": "/usr/asdf:/usr/lib/asdfasdf"}) + test("whoami", exports={"PATH": "doesnotexits"}) + test("whoami", exports={"PATH": "doesnotexits:asdfasdfas"}) + test("whoami", exports={"PATH": "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"}) + test("whoami", exports={"PATH": "________"}) + test("whoami", exports={"PATH": " "}) + test("whoami", exports={"PATH": " : "}) + test("whoami", exports={"PATH": " /usr/bin "}) + test("whoami", exports={"PATH": "/usr/bin:/usr/bin:/usr/bin:/usr/bin"}) + test("whoami", exports={"PATH": " /sbin "}) + test("whoami", exports={"PATH": "/sbin:/sbin:/sbin:/sbin"}) + test("whoami", exports={"PATH": ""}) # error message explicit enough + test("unset PATH; whoami") # error message explicit enough + test("whoami", exports={"PATH": ":"}) + test("whoami", exports={"PATH": ":::::::::::::::::::"}) + test("whoami", exports={"PATH": "/asdfasdf"}) + test("whoami", exports={"PATH": "/usr/asdf:/usr/lib/asdfasdf"}) + test("whoami", setup="unset PATH") + create_cmd_setup = "echo '#!/bin/sh\necho bonjour' > somecmd; chmod +x somecmd" + test("somecmd", setup=create_cmd_setup, exports={"PATH": ""}) + test("somecmd", setup=create_cmd_setup, exports={"PATH": ":"}) + test("somecmd", setup=create_cmd_setup, exports={"PATH": "::::::::"}) + test("somecmd", setup=create_cmd_setup, exports={"PATH": "/asdfasdf"}) + test("somecmd", setup=create_cmd_setup, exports={"PATH": "/usr/asdf:/usr/lib/asdfasdf"}) + test("somecmd", setup=create_cmd_setup + "; unset PATH") + test("somecmd", setup=create_cmd_setup, exports={"PATH": "/bin:"}) + test("somecmd", setup=create_cmd_setup, exports={"PATH": ":/bin"}) + test("somecmd", setup=create_cmd_setup, exports={"PATH": ":/bin:"}) + test("Whoami", exports={"PATH": "/usr/bin"}) + test("wHoAMi", exports={"PATH": "/usr/bin"}) + test("whoami", exports={"PATH": "/usr/bIn"}) + test("whoami", exports={"PATH": "/Usr/bin"}) + test("Whoami", exports={"PATH": "/usr/bIn"}) + test("wHoami", exports={"PATH": "/Usr/bin"}) + test("Whoami", exports={"PATH": ""}) + test("wHoami", exports={"PATH": ""}) |
