aboutsummaryrefslogtreecommitdiff
path: root/minishell_test
diff options
context:
space:
mode:
authorCharles Cabergs <me@cacharle.xyz>2021-02-27 14:46:21 +0100
committerCharles Cabergs <me@cacharle.xyz>2021-02-27 14:46:21 +0100
commitc92f2be21c6be2d44cd836dd7f362e545b9a1a90 (patch)
tree53098ff3cf1367ea70d99ef09d1baa00d90ac505 /minishell_test
parent7081b93b8ed4f98c628400e05d22d0523f41a842 (diff)
downloadminishell_test-c92f2be21c6be2d44cd836dd7f362e545b9a1a90.tar.gz
minishell_test-c92f2be21c6be2d44cd836dd7f362e545b9a1a90.tar.bz2
minishell_test-c92f2be21c6be2d44cd836dd7f362e545b9a1a90.zip
Added make_args and check_error_messages configuration options
Diffstat (limited to 'minishell_test')
-rwxr-xr-xminishell_test/__main__.py4
-rw-r--r--minishell_test/config.py41
-rw-r--r--minishell_test/data/default.cfg2
-rw-r--r--minishell_test/hooks.py7
-rw-r--r--minishell_test/minishell_test.cfg2
-rw-r--r--minishell_test/result_config.cfg23
-rw-r--r--minishell_test/sandbox.py8
-rw-r--r--minishell_test/test/result.py2
8 files changed, 42 insertions, 47 deletions
diff --git a/minishell_test/__main__.py b/minishell_test/__main__.py
index 7da33cd..b5761d0 100755
--- a/minishell_test/__main__.py
+++ b/minishell_test/__main__.py
@@ -38,9 +38,9 @@ def main(argv=None):
print("{:=^{width}}".format("MAKE", width=config.TERM_COLS))
try:
subprocess.run(
- ["make", "--no-print-directory", "-C", config.MINISHELL_DIR],
+ ["make", *config.MAKE_ARGS, "--no-print-directory", "-C", config.MINISHELL_DIR],
check=True,
- env={"MINISHELL_TEST_FLAGS": "-DMINISHELL_TEST", **os.environ}
+ env=os.environ,
)
except subprocess.CalledProcessError:
sys.exit(1)
diff --git a/minishell_test/config.py b/minishell_test/config.py
index 8f2f712..ab40afe 100644
--- a/minishell_test/config.py
+++ b/minishell_test/config.py
@@ -6,7 +6,7 @@
# By: cacharle <me@cacharle.xyz> +#+ +:+ +#+ #
# +#+#+#+#+#+ +#+ #
# Created: 2021/02/26 09:40:36 by cacharle #+# #+# #
-# Updated: 2021/02/27 12:18:55 by cacharle ### ########.fr #
+# Updated: 2021/02/27 14:44:12 by cacharle ### ########.fr #
# #
# ############################################################################ #
@@ -25,30 +25,47 @@ from minishell_test.args import parse_args
DATA_DIR = Path(inspect.getfile(minishell_test.data)).parent
CONFIG_FILENAME = Path('minishell_test.cfg')
-config = configparser.ConfigParser()
+
+class ConfigParser(configparser.ConfigParser):
+ def __init__(self):
+ super().__init__(self)
+
+ def getpath(self, section, options):
+ return Path(self.get(section, options)).resolve()
+
+ def getargs(self, section, options):
+ value = self.get(section, options)
+ return value.strip().split(' ') if len(value) != 0 else []
+
+ def getmultiline(self, section, options):
+ return self.get(section, options).strip().split('\n')
+
+
+
+config = ConfigParser()
config.read(DATA_DIR / 'default.cfg')
# TODO check user_config for unkown stuff
-user_config = configparser.ConfigParser()
+user_config = ConfigParser()
user_config.read(Path(".") / CONFIG_FILENAME)
config.read_dict({**config, **user_config})
args = parse_args()
BONUS = config.getboolean('minishell_test', 'bonus')
-EXEC_NAME = Path(config.get('minishell_test', 'exec_name'))
+EXEC_NAME = config.get('minishell_test', 'exec_name')
MAKE = config.getboolean('minishell_test', 'make')
+MAKE_ARGS = config.getargs('minishell_test', 'make_args')
PAGER = config.getboolean('minishell_test', 'pager')
PAGER_PROG = config.get('minishell_test', 'pager_prog')
-LOG_PATH = Path(config.get('minishell_test', 'log_path'))
+LOG_PATH = config.getpath('minishell_test', 'log_path')
+CHECK_ERROR_MESSAGES = config.getboolean('minishell_test', 'check_error_messages')
-SHELL_AVAILABLE_COMMANDS = config.get('shell', 'available_commands').strip().split('\n')
+SHELL_AVAILABLE_COMMANDS = config.getmultiline('shell', 'available_commands')
SHELL_PATH_VARIABLE = config.get('shell', 'path_variable')
-SHELL_REFERENCE_PATH = Path(config.get('shell:reference', 'path'))
-
-reference_args = config.get('shell:reference', 'args')
-SHELL_REFERENCE_ARGS = reference_args.strip().split(' ') if len(reference_args) != 0 else []
+SHELL_REFERENCE_PATH = config.getpath('shell:reference', 'path')
+SHELL_REFERENCE_ARGS = config.getargs('shell:reference', 'args')
TIMEOUT_TEST = config.getfloat('timeout', 'test')
TIMEOUT_LEAKS = config.getfloat('timeout', 'leaks')
@@ -63,7 +80,7 @@ elif home is not None:
else:
CACHE_DIR = Path('.cache', 'minishell_test')
-SANDBOX_DIR = CACHE_DIR / 'sandbox'
+SANDBOX_DIR = CACHE_DIR / 'sandbox'
SHELL_AVAILABLE_COMMANDS_DIR = CACHE_DIR / 'bin'
SHELL_PATH_VARIABLE = SHELL_PATH_VARIABLE.format(shell_available_commands_dir=SHELL_AVAILABLE_COMMANDS_DIR)
@@ -71,7 +88,7 @@ SHELL_PATH_VARIABLE = SHELL_PATH_VARIABLE.format(shell_available_commands_dir=SH
with open(DATA_DIR / 'lorem') as f:
LOREM = ' '.join(f.read().split('\n'))
-MINISHELL_DIR = Path(args.path)
+MINISHELL_DIR = Path(args.path).resolve()
MINISHELL_EXEC_PATH = MINISHELL_DIR / EXEC_NAME
EXIT_FIRST = args.exit_first
diff --git a/minishell_test/data/default.cfg b/minishell_test/data/default.cfg
index 62edbfd..158c7af 100644
--- a/minishell_test/data/default.cfg
+++ b/minishell_test/data/default.cfg
@@ -2,9 +2,11 @@
bonus = false
exec_name = minishell
make = true
+make_args = MINISHELL_TEST_FLAGS=-DMINISHELL_TEST
pager = false
pager_prog = less
log_path = minishell_test.log
+check_error_messages = true
[shell]
available_commands =
diff --git a/minishell_test/hooks.py b/minishell_test/hooks.py
index dbbd975..531580a 100644
--- a/minishell_test/hooks.py
+++ b/minishell_test/hooks.py
@@ -6,7 +6,7 @@
# By: charles <me@cacharle.xyz> +#+ +:+ +#+ #
# +#+#+#+#+#+ +#+ #
# Created: 2020/09/11 16:10:20 by charles #+# #+# #
-# Updated: 2021/02/27 12:09:25 by cacharle ### ########.fr #
+# Updated: 2021/02/27 14:44:19 by cacharle ### ########.fr #
# #
# ############################################################################ #
@@ -22,9 +22,8 @@ def sort_lines(output):
def error_line0(output):
- """Replace "/bin/bash: -c: line 0:" by "minishell:" and delete the second line"""
- error_message = os.environ.get("MINISHELL_TEST_DONT_CHECK_ERROR_MESSAGE")
- if error_message is not None and error_message == "yes":
+ """Replace "/bin/bash: -c: line n:" by "minishell:" and delete the second line"""
+ if not config.CHECK_ERROR_MESSAGES:
return "DISCARDED BY TEST"
lines = output.split('\n')
diff --git a/minishell_test/minishell_test.cfg b/minishell_test/minishell_test.cfg
deleted file mode 100644
index e800bf4..0000000
--- a/minishell_test/minishell_test.cfg
+++ /dev/null
@@ -1,2 +0,0 @@
-[minishell_test]
-bonus = true
diff --git a/minishell_test/result_config.cfg b/minishell_test/result_config.cfg
deleted file mode 100644
index aac2388..0000000
--- a/minishell_test/result_config.cfg
+++ /dev/null
@@ -1,23 +0,0 @@
-[minishell_test]
-bonus = true
-
-[shell]
-available_commands =
- rmdir
- env
- cat
- touch
- ls
- grep
- sh
- head
-path_variable = /home/cacharles/.cache/minishell_test/bin
-
-[reference]
-path = /bin/bash
-args = []
-
-[timeout]
-test = 0.5
-leaks = 10
-
diff --git a/minishell_test/sandbox.py b/minishell_test/sandbox.py
index e5a1850..980cfe7 100644
--- a/minishell_test/sandbox.py
+++ b/minishell_test/sandbox.py
@@ -6,7 +6,7 @@
# By: charles <me@cacharle.xyz> +#+ +:+ +#+ #
# +#+#+#+#+#+ +#+ #
# Created: 2020/09/11 13:48:07 by charles #+# #+# #
-# Updated: 2021/02/27 12:05:35 by cacharle ### ########.fr #
+# Updated: 2021/02/27 12:32:17 by cacharle ### ########.fr #
# #
# ############################################################################ #
@@ -42,5 +42,7 @@ def remove():
def context():
"""Sandbox context manager"""
create()
- yield
- remove()
+ try:
+ yield
+ finally:
+ remove()
diff --git a/minishell_test/test/result.py b/minishell_test/test/result.py
index b25face..87eeb5d 100644
--- a/minishell_test/test/result.py
+++ b/minishell_test/test/result.py
@@ -6,7 +6,7 @@
# By: charles <me@cacharle.xyz> +#+ +:+ +#+ #
# +#+#+#+#+#+ +#+ #
# Created: 2020/09/11 12:17:34 by charles #+# #+# #
-# Updated: 2021/02/27 12:10:13 by cacharle ### ########.fr #
+# Updated: 2021/02/27 12:28:20 by cacharle ### ########.fr #
# #
# ############################################################################ #