aboutsummaryrefslogtreecommitdiff
path: root/minishell_test/config.py
diff options
context:
space:
mode:
Diffstat (limited to 'minishell_test/config.py')
-rw-r--r--minishell_test/config.py41
1 files changed, 29 insertions, 12 deletions
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