diff --git a/README.md b/README.md index 2959ad2..36fada7 100644 --- a/README.md +++ b/README.md @@ -19,6 +19,7 @@ A lot of amazing shell stuff ## Tester - [minishell_tester](https://github.com/LucasKuhn/minishell_tester) +- [python tester](https://minishell-test.readthedocs.io/en/latest/index.html) ## TODO diff --git a/minishell_test.cfg b/minishell_test.cfg new file mode 100644 index 0000000..4a719e7 --- /dev/null +++ b/minishell_test.cfg @@ -0,0 +1,30 @@ +[minishell_test] +bonus = false +exec_name = minishell +make = true +make_args = MINISHELL_TEST_FLAGS=-DNOBANNER +pager = false +pager_prog = less +log_path = minishell_test.log +check_error_messages = false +end_command_with_linefeed = true + +[shell] +available_commands = + rmdir + env + cat + touch + ls + grep + sh + head +path_variable = {shell_available_commands_dir} + +[shell:reference] +path = /bin/bash +args = + +[timeout] +test = 0.5 +leaks = 10 diff --git a/src/main.c b/src/main.c index 873cd1d..3a54fa0 100644 --- a/src/main.c +++ b/src/main.c @@ -1,15 +1,16 @@ /* ************************************************************************** */ /* */ -/* :::::::: */ -/* main.c :+: :+: */ -/* +:+ */ -/* By: whaffman +#+ */ -/* +#+ */ -/* Created: 2025/02/04 16:19:22 by whaffman #+# #+# */ -/* Updated: 2025/03/04 16:08:26 by whaffman ######## odam.nl */ +/* ::: :::::::: */ +/* main.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: qmennen +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2025/02/04 16:19:22 by whaffman #+# #+# */ +/* Updated: 2025/03/05 15:17:58 by qmennen ### ########.fr */ /* */ /* ************************************************************************** */ +#include "libft.h" #include "minishell.h" static void main_loop(t_minishell *msh) @@ -28,18 +29,40 @@ static void main_loop(t_minishell *msh) } } +static void main_test(t_minishell *msh, char *line) +{ + int i; + char **args; + + args = ft_split(line, ';'); + i = 0; + while (args[i]) + { + msh->line = args[i]; + msh->lexer = ft_lexer_new(msh); + msh->tokens = ft_parse_input(msh); + ft_lstiter(msh->tokens, token_print); + msh->commands = parser_get_commands(msh); + executor_execute_pipeline(msh); + free_minishell_line(msh); + i++; + } + free(args); +} + int main(int argc, char **argv, char **envp) { t_minishell *msh; - (void)argc; - (void)argv; print_banner(); history_load(); msh = init_minishell(); signal_init_minishell(); environment_parse(msh, envp); - main_loop(msh); + if (argc > 2 && ft_strcmp(argv[1], "-c") == 0) + main_test(msh, argv[2]); + else + main_loop(msh); free_minishell(&msh); rl_clear_history(); return (EXIT_SUCCESS);