diff options
| -rwxr-xr-x | minishell_test/__main__.py | 4 | ||||
| -rw-r--r-- | minishell_test/config.py | 41 | ||||
| -rw-r--r-- | minishell_test/data/default.cfg | 2 | ||||
| -rw-r--r-- | minishell_test/hooks.py | 7 | ||||
| -rw-r--r-- | minishell_test/minishell_test.cfg | 2 | ||||
| -rw-r--r-- | minishell_test/result_config.cfg | 23 | ||||
| -rw-r--r-- | minishell_test/sandbox.py | 8 | ||||
| -rw-r--r-- | minishell_test/test/result.py | 2 |
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 # # # # ############################################################################ # |
