From 4d6a64bf6abbd29720b87a28e0da7f0d00c0571b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kha=C3=AFs=20COLIN?= Date: Wed, 9 Apr 2025 15:38:13 +0200 Subject: [PATCH] debug: worddesc show more information This seems appropriate since worddescs are getting more and more complex: markers, flags, tokentypes, ... --- src/parser/redirect/redirect_debug.c | 2 +- src/parser/redirect/redirect_debug.h | 2 +- src/parser/simple_cmd/simple_cmd.c | 9 ++++-- src/parser/worddesc/worddesc.c | 48 +++++++++++++++++++++++++--- src/parser/wordlist/wordlist.h | 4 +-- test.sh | 26 ++++++++++++++- tests/expansion.c | 5 ++- tests/test_wordlist_idx.c | 3 +- tests/testutil.c | 9 +----- 9 files changed, 83 insertions(+), 25 deletions(-) diff --git a/src/parser/redirect/redirect_debug.c b/src/parser/redirect/redirect_debug.c index 166ff89..14bae0c 100644 --- a/src/parser/redirect/redirect_debug.c +++ b/src/parser/redirect/redirect_debug.c @@ -6,7 +6,7 @@ /* By: khais +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/04/09 15:07:58 by khais #+# #+# */ -/* Updated: 2025/04/14 17:23:33 by khais ### ########.fr */ +/* Updated: 2025/04/15 12:06:19 by khais ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/src/parser/redirect/redirect_debug.h b/src/parser/redirect/redirect_debug.h index 1318110..7be576c 100644 --- a/src/parser/redirect/redirect_debug.h +++ b/src/parser/redirect/redirect_debug.h @@ -6,7 +6,7 @@ /* By: khais +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/04/09 15:06:43 by khais #+# #+# */ -/* Updated: 2025/04/14 17:22:50 by khais ### ########.fr */ +/* Updated: 2025/04/15 12:05:26 by khais ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/src/parser/simple_cmd/simple_cmd.c b/src/parser/simple_cmd/simple_cmd.c index 9a1f5d6..e928a80 100644 --- a/src/parser/simple_cmd/simple_cmd.c +++ b/src/parser/simple_cmd/simple_cmd.c @@ -6,7 +6,7 @@ /* By: khais +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/02/21 12:30:07 by khais #+# #+# */ -/* Updated: 2025/04/15 14:37:57 by khais ### ########.fr */ +/* Updated: 2025/04/15 14:47:13 by khais ### ########.fr */ /* */ /* ************************************************************************** */ @@ -47,7 +47,10 @@ void simple_cmd_debug(t_simple_cmd *cmd, t_buffer *leader, bool is_last) return ; indent(leader, is_last); ft_printf("%s\n", "t_simple_cmd"); - redirect_debug(cmd->redirections, leader, false); - wordlist_debug(cmd->words, leader, true); + indent(leader, false); + ft_printf("line = %d\n", cmd->line); + dedent(leader, false); + wordlist_debug(cmd->words, leader, false); + redirect_debug(cmd->redirections, leader, true); dedent(leader, is_last); } diff --git a/src/parser/worddesc/worddesc.c b/src/parser/worddesc/worddesc.c index e5f3aa6..343d127 100644 --- a/src/parser/worddesc/worddesc.c +++ b/src/parser/worddesc/worddesc.c @@ -5,8 +5,8 @@ /* +:+ +:+ +:+ */ /* By: khais +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ -/* Created: 2025/04/15 12:00/08 by khais #+# #+# */ -/* Updated: 2025/04/15 12:00:08 by khais ### ########.fr */ +/* Created: 2025/02/13 17:20:36 by khais #+# #+# */ +/* Updated: 2025/04/15 12:10:01 by khais ### ########.fr */ /* */ /* ************************************************************************** */ @@ -75,12 +75,52 @@ t_worddesc *worddesc_copy(t_worddesc *worddesc) return (out); } +static void token_type_debug(t_token_type type, t_buffer *leader, bool is_last) +{ + indent(leader, is_last); + if (type == NOT_TOKEN) + ft_printf("t_token_type = %s\n", "NOT_TOKEN"); + if (type == WORD_TOKEN) + ft_printf("t_token_type = %s\n", "WORD_TOKEN"); + if (type == OPEN_PARENTH_TOKEN) + ft_printf("t_token_type = %s\n", "OPEN_PARENTH_TOKEN"); + if (type == CLOSE_PARENTH_TOKEN) + ft_printf("t_token_type = %s\n", "CLOSE_PARENTH_TOKEN"); + if (type == PIPE_TOKEN) + ft_printf("t_token_type = %s\n", "PIPE_TOKEN"); + if (type == OR_TOKEN) + ft_printf("t_token_type = %s\n", "OR_TOKEN"); + if (type == AND_TOKEN) + ft_printf("t_token_type = %s\n", "AND_TOKEN"); + if (type == OUT_TRUNC_REDIR_TOKEN) + ft_printf("t_token_type = %s\n", "OUT_TRUNC_REDIR_TOKEN"); + if (type == OUT_APPEND_REDIR_TOKEN) + ft_printf("t_token_type = %s\n", "OUT_APPEND_REDIR_TOKEN"); + if (type == IN_REDIR_TOKEN) + ft_printf("t_token_type = %s\n", "IN_REDIR_TOKEN"); + if (type == HERE_DOC_REDIR_TOKEN) + ft_printf("t_token_type = %s\n", "HERE_DOC_REDIR_TOKEN"); + dedent(leader, is_last); +} + void worddesc_debug(t_worddesc *worddesc, t_buffer *leader, bool is_last) { indent(leader, is_last); if (worddesc == NULL) - ft_printf("%s\n", "(nil)"); + ft_printf("(null worddesc)\n"); else - ft_printf("[%s]\n", worddesc->word); + { + ft_printf("t_worddesc\n"); + indent(leader, false); + ft_printf("word = [%s]\n", worddesc->word); + dedent(leader, false); + indent(leader, false); + ft_printf("marker = [%s]\n", worddesc->marker); + dedent(leader, false); + indent(leader, false); + ft_printf("flags = %d\n", worddesc->flags); + dedent(leader, false); + token_type_debug(worddesc->token_type, leader, true); + } dedent(leader, is_last); } diff --git a/src/parser/wordlist/wordlist.h b/src/parser/wordlist/wordlist.h index 6539197..ba9f86a 100644 --- a/src/parser/wordlist/wordlist.h +++ b/src/parser/wordlist/wordlist.h @@ -5,8 +5,8 @@ /* +:+ +:+ +:+ */ /* By: khais +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ -/* Created: 2025/04/14 17:23/51 by khais #+# #+# */ -/* Updated: 2025/04/14 17:23:51 by khais ### ########.fr */ +/* Created: 2025/04/09 15:40:23 by khais #+# #+# */ +/* Updated: 2025/04/15 12:07:34 by khais ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/test.sh b/test.sh index 3c102ab..d209bad 100755 --- a/test.sh +++ b/test.sh @@ -579,8 +579,32 @@ hello hi EOF when_run < +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ -/* Created: 2025/03/27 14:05/00 by khais #+# #+# */ -/* Updated: 2025/03/27 14:05:00 by khais ### ########.fr */ +/* Created: 2025/04/09 15:50/06 by khais #+# #+# */ +/* Updated: 2025/04/09 15:50:06 by khais ### ########.fr */ /* */ /* ************************************************************************** */ @@ -213,7 +213,6 @@ static void test_filename_star_expansion(void) //test ., .. and .plop filepattern = create_single_word(".*"); expanded = expand_star(filepattern); - wordlist_debug(expanded); assert(wordlist_size(expanded) == 3); assert_strequal(".", expanded->word->word); assert_strequal("..", expanded->next->word->word); diff --git a/tests/test_wordlist_idx.c b/tests/test_wordlist_idx.c index a03da8a..2f97a94 100644 --- a/tests/test_wordlist_idx.c +++ b/tests/test_wordlist_idx.c @@ -6,7 +6,7 @@ /* By: khais +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/03/10 14:59:19 by khais #+# #+# */ -/* Updated: 2025/04/08 16:35:12 by khais ### ########.fr */ +/* Updated: 2025/04/09 15:50:20 by khais ### ########.fr */ /* */ /* ************************************************************************** */ @@ -50,7 +50,6 @@ static void test_wordlist_idx_pop_second_then_first(void) ft_dprintf(STDERR_FILENO, "==> %s <==\n", __FUNCTION__); list = wordlist_create(worddesc_create(ft_strdup("hello"), 0, NULL, WORD_TOKEN)); list = wordlist_push(list, worddesc_create(ft_strdup("world"), 0, NULL, WORD_TOKEN)); - wordlist_debug(list); got = wordlist_pop_idx(&list, 1); assert(NULL != got); assert(NULL != list); diff --git a/tests/testutil.c b/tests/testutil.c index 87e4bfe..39f484d 100644 --- a/tests/testutil.c +++ b/tests/testutil.c @@ -6,7 +6,7 @@ /* By: khais +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/02/13 15:21:09 by khais #+# #+# */ -/* Updated: 2025/03/20 11:57:29 by khais ### ########.fr */ +/* Updated: 2025/04/09 15:49:47 by khais ### ########.fr */ /* */ /* ************************************************************************** */ @@ -65,13 +65,6 @@ void assert_simple_commandequal(t_simple_cmd *expected, t_simple_cmd *got, int i void assert_pipelineequal_raw(t_pipeline *expected, t_pipeline *got) { assert(expected == got || expected != NULL); - int j = 0; - while (j < got->num_cmd) - { - ft_dprintf(STDERR_FILENO, "Got pipeline cmd %d: ", j); - wordlist_debug(got->cmds[j]->words); - j++; - } ft_dprintf(STDERR_FILENO, "Expected pipeline to have %d commands, got pipeline with %d\n", expected->num_cmd, got->num_cmd); assert(expected->num_cmd == got->num_cmd); int i = 0;