From 716265929bf861d340c1e71e2f24359875520d3a Mon Sep 17 00:00:00 2001 From: Charles Cabergs Date: Wed, 3 Mar 2021 09:19:20 +0100 Subject: Added sandbox and colors tests --- tests/test_sandbox.py | 85 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 tests/test_sandbox.py (limited to 'tests/test_sandbox.py') diff --git a/tests/test_sandbox.py b/tests/test_sandbox.py new file mode 100644 index 0000000..2536be7 --- /dev/null +++ b/tests/test_sandbox.py @@ -0,0 +1,85 @@ +# ############################################################################ # +# # +# ::: :::::::: # +# test_sandbox.py :+: :+: :+: # +# +:+ +:+ +:+ # +# By: cacharle +#+ +:+ +#+ # +# +#+#+#+#+#+ +#+ # +# Created: 2021/03/03 08:09:00 by cacharle #+# #+# # +# Updated: 2021/03/03 09:15:42 by cacharle ### ########.fr # +# # +# ############################################################################ # + +import pytest +import shutil +from pathlib import Path + +from tests.helpers import config_context +from minishell_test import sandbox +from minishell_test.config import Config + +Config.init([]) + + +@pytest.fixture +def sandbox_dirs(): + return [Path(s) for s in [ + "foo", + "asdfasdfas;dlkfjas;dkfjas;lkdfj", + "z/y", + "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", + ]] + + +def test_create(tmpdir, sandbox_dirs): + for sandbox_dir in sandbox_dirs: + sandbox_dir = Path(tmpdir / sandbox_dir) + with config_context(sandbox_dir=sandbox_dir): + assert not sandbox_dir.exists() + sandbox.create() + assert sandbox_dir.exists() + + +def test_remove(tmpdir, sandbox_dirs): + for sandbox_dir in sandbox_dirs: + sandbox_dir = Path(tmpdir / sandbox_dir) + with config_context(sandbox_dir=sandbox_dir): + sandbox.create() + assert sandbox_dir.exists() + sandbox.remove() + assert not sandbox_dir.exists() + for sandbox_dir in sandbox_dirs: + sandbox_dir = Path(tmpdir / sandbox_dir) + with config_context(sandbox_dir=sandbox_dir): + sandbox.create() + assert sandbox_dir.exists() + sandbox_dir.chmod(000) + sandbox.remove() + assert not sandbox_dir.exists() + for sandbox_dir in sandbox_dirs: + sandbox_dir = Path(tmpdir / sandbox_dir) + with config_context(sandbox_dir=sandbox_dir): + sandbox.create() + assert sandbox_dir.exists() + shutil.rmtree(sandbox_dir) + sandbox.remove() + assert not sandbox_dir.exists() + + +def test_context(tmpdir, sandbox_dirs): + for sandbox_dir in sandbox_dirs: + sandbox_dir = Path(tmpdir / sandbox_dir) + with config_context(sandbox_dir=sandbox_dir): + assert not sandbox_dir.exists() + with sandbox.context(): + assert sandbox_dir.exists() + assert not sandbox_dir.exists() + for sandbox_dir in sandbox_dirs: + sandbox_dir = Path(tmpdir / sandbox_dir) + with config_context(sandbox_dir=sandbox_dir): + with pytest.raises(RuntimeError): + assert not sandbox_dir.exists() + with sandbox.context(): + assert sandbox_dir.exists() + raise RuntimeError + assert not sandbox_dir.exists() -- cgit