aboutsummaryrefslogtreecommitdiff
path: root/tests/test
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test')
-rw-r--r--tests/test/test_result.py130
-rw-r--r--tests/test/test_test.py97
2 files changed, 113 insertions, 114 deletions
diff --git a/tests/test/test_result.py b/tests/test/test_result.py
index f64511a..2e3afdb 100644
--- a/tests/test/test_result.py
+++ b/tests/test/test_result.py
@@ -6,7 +6,7 @@
# By: cacharle <me@cacharle.xyz> +#+ +:+ +#+ #
# +#+#+#+#+#+ +#+ #
# Created: 2021/03/01 16:26:34 by cacharle #+# #+# #
-# Updated: 2021/03/03 07:53:09 by cacharle ### ########.fr #
+# Updated: 2021/03/06 10:01:04 by cacharle ### ########.fr #
# #
# ############################################################################ #
@@ -18,8 +18,6 @@ from minishell_test import colors
from minishell_test.test.result import BaseResult, Result, LeakResult, LeakResultException
from minishell_test.test.captured import CapturedCommand, CapturedTimeout
-from tests.helpers import config_context
-
colors.disable()
Config.init([])
@@ -152,42 +150,43 @@ class TestResult:
assert result_fail_file_not_exist_expected.failed
@pytest.mark.parametrize("term_cols", range(40, 300, 40))
- def test_summarize(self, result_pass, result_fail, result_fail_status, result_fail_file, result_fail_file_not_exist,
+ def test_summarize(self, monkeypatch, result_pass, result_fail, result_fail_status, result_fail_file, result_fail_file_not_exist,
result_fail_timeout, result_fail_file_not_exist_expected, result_pass_long_cmd, term_cols):
- with config_context(show_range=False, term_cols=term_cols):
- assert f"{'echo bonjour':{term_cols - 7}} [PASS]" == result_pass.summarize(-1)
- assert f"{'echo bonjour':{term_cols - 7}} [FAIL]" == result_fail.summarize(-1)
- assert f"{'echo bonjour':{term_cols - 7}} [FAIL]" == result_fail_status.summarize(-1)
- assert f"{'echo bonjour > foo':{term_cols - 7}} [FAIL]" == result_fail_file.summarize(-1)
- assert f"{'echo bonjour > foo':{term_cols - 7}} [FAIL]" == result_fail_file_not_exist.summarize(-1)
- assert f"{'echo bonjour':{term_cols - 7}} [FAIL]" == result_fail_timeout.summarize(-1)
- assert f"{'echo bonjour':{term_cols - 7}} [FAIL]" == result_fail_file_not_exist_expected.summarize(-1)
- assert f"{('e' * 300)[:term_cols - 10]}... [PASS]" == result_pass_long_cmd.summarize(-1)
- with config_context(show_range=True, term_cols=term_cols):
- assert f" 1: {'echo bonjour':{term_cols - 11}} [PASS]" == result_pass.summarize(1)
- assert f" 1: {'echo bonjour':{term_cols - 11}} [FAIL]" == result_fail.summarize(1)
- assert f" 1: {'echo bonjour':{term_cols - 11}} [FAIL]" == result_fail_status.summarize(1)
- assert f" 1: {'echo bonjour > foo':{term_cols - 11}} [FAIL]" == result_fail_file.summarize(1)
- assert f" 1: {'echo bonjour > foo':{term_cols - 11}} [FAIL]" == result_fail_file_not_exist.summarize(1)
- assert f" 1: {'echo bonjour':{term_cols - 11}} [FAIL]" == result_fail_timeout.summarize(1)
- assert f" 1: {'echo bonjour':{term_cols - 11}} [FAIL]" == result_fail_file_not_exist_expected.summarize(1)
- assert f" 1: {('e' * 300)[:term_cols - 14]}... [PASS]" == result_pass_long_cmd.summarize(1)
- assert f"99: {'echo bonjour':{term_cols - 11}} [PASS]" == result_pass.summarize(99)
- assert f"99: {'echo bonjour':{term_cols - 11}} [FAIL]" == result_fail.summarize(99)
- assert f"99: {'echo bonjour':{term_cols - 11}} [FAIL]" == result_fail_status.summarize(99)
- assert f"99: {'echo bonjour > foo':{term_cols - 11}} [FAIL]" == result_fail_file.summarize(99)
- assert f"99: {'echo bonjour > foo':{term_cols - 11}} [FAIL]" == result_fail_file_not_exist.summarize(99)
- assert f"99: {'echo bonjour':{term_cols - 11}} [FAIL]" == result_fail_timeout.summarize(99)
- assert f"99: {'echo bonjour':{term_cols - 11}} [FAIL]" == result_fail_file_not_exist_expected.summarize(99)
- assert f"99: {('e' * 300)[:term_cols - 14]}... [PASS]" == result_pass_long_cmd.summarize(99)
- assert f"100: {'echo bonjour':{term_cols - 12}} [PASS]" == result_pass.summarize(100)
- assert f"100: {'echo bonjour':{term_cols - 12}} [FAIL]" == result_fail.summarize(100)
- assert f"100: {'echo bonjour':{term_cols - 12}} [FAIL]" == result_fail_status.summarize(100)
- assert f"100: {'echo bonjour > foo':{term_cols - 12}} [FAIL]" == result_fail_file.summarize(100)
- assert f"100: {'echo bonjour > foo':{term_cols - 12}} [FAIL]" == result_fail_file_not_exist.summarize(100)
- assert f"100: {'echo bonjour':{term_cols - 12}} [FAIL]" == result_fail_timeout.summarize(100)
- assert f"100: {'echo bonjour':{term_cols - 12}} [FAIL]" == result_fail_file_not_exist_expected.summarize(100)
- assert f"100: {('e' * 300)[:term_cols - 15]}... [PASS]" == result_pass_long_cmd.summarize(100)
+ monkeypatch.setattr(Config, 'term_cols', term_cols)
+ monkeypatch.setattr(Config, 'show_range', False)
+ assert f"{'echo bonjour':{term_cols - 7}} [PASS]" == result_pass.summarize(-1)
+ assert f"{'echo bonjour':{term_cols - 7}} [FAIL]" == result_fail.summarize(-1)
+ assert f"{'echo bonjour':{term_cols - 7}} [FAIL]" == result_fail_status.summarize(-1)
+ assert f"{'echo bonjour > foo':{term_cols - 7}} [FAIL]" == result_fail_file.summarize(-1)
+ assert f"{'echo bonjour > foo':{term_cols - 7}} [FAIL]" == result_fail_file_not_exist.summarize(-1)
+ assert f"{'echo bonjour':{term_cols - 7}} [FAIL]" == result_fail_timeout.summarize(-1)
+ assert f"{'echo bonjour':{term_cols - 7}} [FAIL]" == result_fail_file_not_exist_expected.summarize(-1)
+ assert f"{('e' * 300)[:term_cols - 10]}... [PASS]" == result_pass_long_cmd.summarize(-1)
+ monkeypatch.setattr(Config, 'show_range', True)
+ assert f" 1: {'echo bonjour':{term_cols - 11}} [PASS]" == result_pass.summarize(1)
+ assert f" 1: {'echo bonjour':{term_cols - 11}} [FAIL]" == result_fail.summarize(1)
+ assert f" 1: {'echo bonjour':{term_cols - 11}} [FAIL]" == result_fail_status.summarize(1)
+ assert f" 1: {'echo bonjour > foo':{term_cols - 11}} [FAIL]" == result_fail_file.summarize(1)
+ assert f" 1: {'echo bonjour > foo':{term_cols - 11}} [FAIL]" == result_fail_file_not_exist.summarize(1)
+ assert f" 1: {'echo bonjour':{term_cols - 11}} [FAIL]" == result_fail_timeout.summarize(1)
+ assert f" 1: {'echo bonjour':{term_cols - 11}} [FAIL]" == result_fail_file_not_exist_expected.summarize(1)
+ assert f" 1: {('e' * 300)[:term_cols - 14]}... [PASS]" == result_pass_long_cmd.summarize(1)
+ assert f"99: {'echo bonjour':{term_cols - 11}} [PASS]" == result_pass.summarize(99)
+ assert f"99: {'echo bonjour':{term_cols - 11}} [FAIL]" == result_fail.summarize(99)
+ assert f"99: {'echo bonjour':{term_cols - 11}} [FAIL]" == result_fail_status.summarize(99)
+ assert f"99: {'echo bonjour > foo':{term_cols - 11}} [FAIL]" == result_fail_file.summarize(99)
+ assert f"99: {'echo bonjour > foo':{term_cols - 11}} [FAIL]" == result_fail_file_not_exist.summarize(99)
+ assert f"99: {'echo bonjour':{term_cols - 11}} [FAIL]" == result_fail_timeout.summarize(99)
+ assert f"99: {'echo bonjour':{term_cols - 11}} [FAIL]" == result_fail_file_not_exist_expected.summarize(99)
+ assert f"99: {('e' * 300)[:term_cols - 14]}... [PASS]" == result_pass_long_cmd.summarize(99)
+ assert f"100: {'echo bonjour':{term_cols - 12}} [PASS]" == result_pass.summarize(100)
+ assert f"100: {'echo bonjour':{term_cols - 12}} [FAIL]" == result_fail.summarize(100)
+ assert f"100: {'echo bonjour':{term_cols - 12}} [FAIL]" == result_fail_status.summarize(100)
+ assert f"100: {'echo bonjour > foo':{term_cols - 12}} [FAIL]" == result_fail_file.summarize(100)
+ assert f"100: {'echo bonjour > foo':{term_cols - 12}} [FAIL]" == result_fail_file_not_exist.summarize(100)
+ assert f"100: {'echo bonjour':{term_cols - 12}} [FAIL]" == result_fail_timeout.summarize(100)
+ assert f"100: {'echo bonjour':{term_cols - 12}} [FAIL]" == result_fail_file_not_exist_expected.summarize(100)
+ assert f"100: {('e' * 300)[:term_cols - 15]}... [PASS]" == result_pass_long_cmd.summarize(100)
def test_repr(self, result_fail, result_fail_status, result_fail_file, result_fail_file_not_exist, result_fail_file_multiple,
result_fail_timeout, result_fail_file_not_exist_expected):
@@ -415,34 +414,35 @@ bonjour
assert result_leak_fail_timeout.failed
@pytest.mark.parametrize("term_cols", range(40, 300, 40))
- def test_summarize(self, result_leak_pass, result_leak_fail_indirect, result_leak_fail_definitive,
+ def test_summarize(self, monkeypatch, result_leak_pass, result_leak_fail_indirect, result_leak_fail_definitive,
result_leak_fail_both, result_leak_pass_no_count, result_leak_fail_timeout, term_cols):
- with config_context(show_range=False, term_cols=term_cols):
- assert f"{'echo bonjour':{term_cols - 7}} [PASS]" == result_leak_pass.summarize(-1)
- assert f"{'echo bonjour':{term_cols - 7}} [PASS]" == result_leak_pass_no_count.summarize(-1)
- assert f"{'echo bonjour':{term_cols - 7}} [FAIL]" == result_leak_fail_definitive.summarize(-1)
- assert f"{'echo bonjour':{term_cols - 7}} [FAIL]" == result_leak_fail_indirect.summarize(-1)
- assert f"{'echo bonjour':{term_cols - 7}} [FAIL]" == result_leak_fail_both.summarize(-1)
- assert f"{'echo bonjour':{term_cols - 7}} [FAIL]" == result_leak_fail_timeout.summarize(-1)
- with config_context(show_range=True, term_cols=term_cols):
- assert f" 1: {'echo bonjour':{term_cols - 11}} [PASS]" == result_leak_pass.summarize(1)
- assert f" 1: {'echo bonjour':{term_cols - 11}} [PASS]" == result_leak_pass_no_count.summarize(1)
- assert f" 1: {'echo bonjour':{term_cols - 11}} [FAIL]" == result_leak_fail_definitive.summarize(1)
- assert f" 1: {'echo bonjour':{term_cols - 11}} [FAIL]" == result_leak_fail_indirect.summarize(1)
- assert f" 1: {'echo bonjour':{term_cols - 11}} [FAIL]" == result_leak_fail_both.summarize(1)
- assert f" 1: {'echo bonjour':{term_cols - 11}} [FAIL]" == result_leak_fail_timeout.summarize(1)
- assert f"99: {'echo bonjour':{term_cols - 11}} [PASS]" == result_leak_pass.summarize(99)
- assert f"99: {'echo bonjour':{term_cols - 11}} [PASS]" == result_leak_pass_no_count.summarize(99)
- assert f"99: {'echo bonjour':{term_cols - 11}} [FAIL]" == result_leak_fail_definitive.summarize(99)
- assert f"99: {'echo bonjour':{term_cols - 11}} [FAIL]" == result_leak_fail_indirect.summarize(99)
- assert f"99: {'echo bonjour':{term_cols - 11}} [FAIL]" == result_leak_fail_both.summarize(99)
- assert f"99: {'echo bonjour':{term_cols - 11}} [FAIL]" == result_leak_fail_timeout.summarize(99)
- assert f"100: {'echo bonjour':{term_cols - 12}} [PASS]" == result_leak_pass.summarize(100)
- assert f"100: {'echo bonjour':{term_cols - 12}} [PASS]" == result_leak_pass_no_count.summarize(100)
- assert f"100: {'echo bonjour':{term_cols - 12}} [FAIL]" == result_leak_fail_definitive.summarize(100)
- assert f"100: {'echo bonjour':{term_cols - 12}} [FAIL]" == result_leak_fail_indirect.summarize(100)
- assert f"100: {'echo bonjour':{term_cols - 12}} [FAIL]" == result_leak_fail_both.summarize(100)
- assert f"100: {'echo bonjour':{term_cols - 12}} [FAIL]" == result_leak_fail_timeout.summarize(100)
+ monkeypatch.setattr(Config, 'term_cols', term_cols)
+ monkeypatch.setattr(Config, 'show_range', False)
+ assert f"{'echo bonjour':{term_cols - 7}} [PASS]" == result_leak_pass.summarize(-1)
+ assert f"{'echo bonjour':{term_cols - 7}} [PASS]" == result_leak_pass_no_count.summarize(-1)
+ assert f"{'echo bonjour':{term_cols - 7}} [FAIL]" == result_leak_fail_definitive.summarize(-1)
+ assert f"{'echo bonjour':{term_cols - 7}} [FAIL]" == result_leak_fail_indirect.summarize(-1)
+ assert f"{'echo bonjour':{term_cols - 7}} [FAIL]" == result_leak_fail_both.summarize(-1)
+ assert f"{'echo bonjour':{term_cols - 7}} [FAIL]" == result_leak_fail_timeout.summarize(-1)
+ monkeypatch.setattr(Config, 'show_range', True)
+ assert f" 1: {'echo bonjour':{term_cols - 11}} [PASS]" == result_leak_pass.summarize(1)
+ assert f" 1: {'echo bonjour':{term_cols - 11}} [PASS]" == result_leak_pass_no_count.summarize(1)
+ assert f" 1: {'echo bonjour':{term_cols - 11}} [FAIL]" == result_leak_fail_definitive.summarize(1)
+ assert f" 1: {'echo bonjour':{term_cols - 11}} [FAIL]" == result_leak_fail_indirect.summarize(1)
+ assert f" 1: {'echo bonjour':{term_cols - 11}} [FAIL]" == result_leak_fail_both.summarize(1)
+ assert f" 1: {'echo bonjour':{term_cols - 11}} [FAIL]" == result_leak_fail_timeout.summarize(1)
+ assert f"99: {'echo bonjour':{term_cols - 11}} [PASS]" == result_leak_pass.summarize(99)
+ assert f"99: {'echo bonjour':{term_cols - 11}} [PASS]" == result_leak_pass_no_count.summarize(99)
+ assert f"99: {'echo bonjour':{term_cols - 11}} [FAIL]" == result_leak_fail_definitive.summarize(99)
+ assert f"99: {'echo bonjour':{term_cols - 11}} [FAIL]" == result_leak_fail_indirect.summarize(99)
+ assert f"99: {'echo bonjour':{term_cols - 11}} [FAIL]" == result_leak_fail_both.summarize(99)
+ assert f"99: {'echo bonjour':{term_cols - 11}} [FAIL]" == result_leak_fail_timeout.summarize(99)
+ assert f"100: {'echo bonjour':{term_cols - 12}} [PASS]" == result_leak_pass.summarize(100)
+ assert f"100: {'echo bonjour':{term_cols - 12}} [PASS]" == result_leak_pass_no_count.summarize(100)
+ assert f"100: {'echo bonjour':{term_cols - 12}} [FAIL]" == result_leak_fail_definitive.summarize(100)
+ assert f"100: {'echo bonjour':{term_cols - 12}} [FAIL]" == result_leak_fail_indirect.summarize(100)
+ assert f"100: {'echo bonjour':{term_cols - 12}} [FAIL]" == result_leak_fail_both.summarize(100)
+ assert f"100: {'echo bonjour':{term_cols - 12}} [FAIL]" == result_leak_fail_timeout.summarize(100)
def test_repr(self, result_leak_fail_indirect, result_leak_fail_definitive, result_leak_fail_both, result_leak_fail_timeout):
assert r"""
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