diff options
Diffstat (limited to 'tests/test/test_test.py')
| -rw-r--r-- | tests/test/test_test.py | 97 |
1 files changed, 48 insertions, 49 deletions
diff --git a/tests/test/test_test.py b/tests/test/test_test.py index cad0e19..11255c0 100644 --- a/tests/test/test_test.py +++ b/tests/test/test_test.py @@ -6,7 +6,7 @@ # By: cacharle <me@cacharle.xyz> +#+ +:+ +#+ # # +#+#+#+#+#+ +#+ # # Created: 2021/03/02 18:48:57 by cacharle #+# #+# # -# Updated: 2021/03/03 15:59:01 by cacharle ### ########.fr # +# Updated: 2021/03/06 10:07:07 by cacharle ### ########.fr # # # # ############################################################################ # @@ -21,8 +21,6 @@ from minishell_test.test.result import LeakResult from minishell_test.test.captured import CapturedCommand, CapturedTimeout from minishell_test.test.test import Test, TestSetupException -from tests.helpers import config_context - colors.disable() Config.init([]) @@ -33,16 +31,16 @@ class TestTest: def reset_config(self): Config.init([]) - def test_init_timeout(self): + def test_init_timeout(self, monkeypatch): assert Config.timeout_test == Test("")._timeout assert Config.timeout_test == Test("", timeout=0)._timeout assert 2 == Test("", timeout=2)._timeout assert 100 == Test("", timeout=100)._timeout - with config_context(check_leaks=True): - assert Config.timeout_leaks == Test("", timeout=-10)._timeout - assert Config.timeout_leaks == Test("", timeout=0)._timeout - assert Config.timeout_leaks == Test("", timeout=1)._timeout - assert Config.timeout_leaks == Test("", timeout=100)._timeout + monkeypatch.setattr(Config, 'check_leaks', True) + assert Config.timeout_leaks == Test("", timeout=-10)._timeout + assert Config.timeout_leaks == Test("", timeout=0)._timeout + assert Config.timeout_leaks == Test("", timeout=1)._timeout + assert Config.timeout_leaks == Test("", timeout=100)._timeout def test_coerce_into_list(self): assert [1] == Test._coerce_into_list(1) @@ -51,7 +49,7 @@ class TestTest: assert ["bonjour"] == Test._coerce_into_list(["bonjour"]) assert ["bonjour", "foo", "bar"] == Test._coerce_into_list(["bonjour", "foo", "bar"]) - def test_apply_hook(self): + def test_apply_hook(self, monkeypatch): bonjour_to_foo = lambda x: x.replace("bonjour", "foo") # noqa foo_to_aurevoir = lambda x: x.replace("foo", "aurevoir") # noqa assert "foo" == Test._apply_hooks("bonjour", [bonjour_to_foo]) @@ -64,11 +62,11 @@ class TestTest: assert -1 == Test._apply_hooks(0, [minus_one]) assert -5 == Test._apply_hooks(0, [minus_one, minus_one, minus_one, minus_one, minus_one]) assert 0 == Test._apply_hooks(0, [plus_one, minus_one, plus_one, minus_one, plus_one, minus_one]) - with config_context(check_leaks=True): - assert "foo" == Test._apply_hooks("foo", [foo_to_aurevoir]) - assert "bonjour" == Test._apply_hooks("bonjour", [bonjour_to_foo, foo_to_aurevoir]) - assert 0 == Test._apply_hooks(0, [plus_one, plus_one, plus_one, plus_one, plus_one]) - assert 0 == Test._apply_hooks(0, [minus_one, minus_one, minus_one, minus_one, minus_one]) + monkeypatch.setattr(Config, 'check_leaks', True) + assert "foo" == Test._apply_hooks("foo", [foo_to_aurevoir]) + assert "bonjour" == Test._apply_hooks("bonjour", [bonjour_to_foo, foo_to_aurevoir]) + assert 0 == Test._apply_hooks(0, [plus_one, plus_one, plus_one, plus_one, plus_one]) + assert 0 == Test._apply_hooks(0, [minus_one, minus_one, minus_one, minus_one, minus_one]) def test_extended_cmd(self): assert "" == Test("")._extended_cmd @@ -79,11 +77,11 @@ class TestTest: BIN_DIR = Path(__file__).parent / "bin" - def test_run_echo(self): - with config_context(minishell_exec_path=self.BIN_DIR / "minishell-echo"): - r = Test("bonjour").run() - assert r.actual == CapturedCommand("bonjour\n", 0, []) - assert r.expected.status != 0 + def test_run_echo(self, monkeypatch): + monkeypatch.setattr(Config, 'minishell_exec_path', self.BIN_DIR / "minishell-echo") + r = Test("bonjour").run() + assert r.actual == CapturedCommand("bonjour\n", 0, []) + assert r.expected.status != 0 @pytest.mark.parametrize( "cmd", @@ -110,10 +108,10 @@ class TestTest: {"FOO": "foo"} ], ) - def test_run_minishell_is_bash(self, cmd, setup, exports): - with config_context(minishell_exec_path=Path("/bin/bash")): - r = Test(cmd).run() - assert r.passed + def test_run_minishell_is_bash(self, monkeypatch, cmd, setup, exports): + monkeypatch.setattr(Config, 'minishell_exec_path', Path("/bin/bash")) + r = Test(cmd).run() + assert r.passed @pytest.mark.parametrize( "setup", @@ -132,32 +130,33 @@ class TestTest: assert "yes" == e.value._cmd assert f"Error: `{setup[0]}` setup command failed for `yes`\n\twith '{setup[1]}'" == e.value.__str__() - def test_run_check_leaks(self): - with config_context(check_leaks=True, valgrind_cmd=["/bin/bash"]): - r = Test("echo bonjour").run() - assert isinstance(r, LeakResult) - assert "bonjour\n" == r._captured.output - assert "echo bonjour" == r._cmd + def test_run_check_leaks(self, monkeypatch): + monkeypatch.setattr(Config, 'check_leaks', True) + monkeypatch.setattr(Config, 'valgrind_cmd', ["/bin/bash"]) + r = Test("echo bonjour").run() + assert isinstance(r, LeakResult) + assert "bonjour\n" == r._captured.output + assert "echo bonjour" == r._cmd @pytest.mark.parametrize("timeout", [0.05, 0.1, 0.15, 0.2, 0.3]) - def test_run_timeout(self, timeout): - with config_context(minishell_exec_path=self.BIN_DIR / "minishell-timeout"): - r = Test("echo bonjour", timeout=timeout).run() - assert "bonjour\n" == r.expected.output - assert 0 == r.expected.status - assert isinstance(r.actual, CapturedTimeout) + def test_run_timeout(self, monkeypatch, timeout): + monkeypatch.setattr(Config, 'minishell_exec_path', self.BIN_DIR / "minishell-timeout") + r = Test("echo bonjour", timeout=timeout).run() + assert "bonjour\n" == r.expected.output + assert 0 == r.expected.status + assert isinstance(r.actual, CapturedTimeout) @pytest.mark.parametrize("file", ["/dev/random", "/dev/urandom"]) - def test_run_decode_error(self, file): - with config_context(minishell_exec_path="/bin/bash"): - r = Test(f"/usr/bin/head -c 100 {file}").run() - assert r.expected.output.startswith("UNICODE DECODE ERROR: ") - assert r.actual.output.startswith("UNICODE DECODE ERROR: ") - assert 0 == r.expected.status - assert 0 == r.actual.status - - def test_run_files(self): - with config_context(minishell_exec_path=self.BIN_DIR / "minishell-file"): - r = Test("echo bonjour > bonjour", files=["bonjour", "aurevoir"]).run() - assert CapturedCommand("", 0, ["bonjour\n", None]) == r.expected - assert CapturedCommand("", 0, ["bonjour\n", "aurevoir\n"]) == r.actual + def test_run_decode_error(self, monkeypatch, file): + monkeypatch.setattr(Config, 'minishell_exec_path', Path("/bin/bash")) + r = Test(f"/usr/bin/head -c 100 {file}").run() + assert r.expected.output.startswith("UNICODE DECODE ERROR: ") + assert r.actual.output.startswith("UNICODE DECODE ERROR: ") + assert 0 == r.expected.status + assert 0 == r.actual.status + + def test_run_files(self, monkeypatch): + monkeypatch.setattr(Config, 'minishell_exec_path', self.BIN_DIR / "minishell-file") + r = Test("echo bonjour > bonjour", files=["bonjour", "aurevoir"]).run() + assert CapturedCommand("", 0, ["bonjour\n", None]) == r.expected + assert CapturedCommand("", 0, ["bonjour\n", "aurevoir\n"]) == r.actual |
