From ca2524dc95f409ccb3e2653a8d4cd315fbe1e364 Mon Sep 17 00:00:00 2001 From: Lukas Jiriste Date: Fri, 27 Oct 2023 11:32:48 +0200 Subject: [PATCH] Add test for stdin Add .stdin test, change main.c to be able to accept stdin, change test to redirect when stdin is tested. Improve Makefile, test. --- Makefile | 11 +++++---- src/main.c | 13 +++++++++-- test | 57 ++++++++++++++++++++++++++++++----------------- test_files/.stdin | 3 +++ 4 files changed, 57 insertions(+), 27 deletions(-) create mode 100644 test_files/.stdin diff --git a/Makefile b/Makefile index 9431f04..2162dc3 100644 --- a/Makefile +++ b/Makefile @@ -6,6 +6,10 @@ SRCDIR := src/ OBJDIR := obj/ INCLUDE := include/ +RESDIR := results/ +TESTDIR := test_files/ +CORDIR := correct/ + SRCS := $(shell find $(SRCDIR) -name '*.c' -type f -printf "%f\n") GNLSRCS := get_next_line.c get_next_line_utils.c GNLBONUS := $(GNLSRCS:%.c=%_bonus.c) @@ -13,9 +17,7 @@ OBJS := $(SRCS:%.c=$(OBJDIR)%.o) GNLOBJS := $(GNLSRCS:%.c=$(OBJDIR)%.o) GNLBONUSOBJS = $(GNLBONUS:%.c=$(OBJDIR)%.o) -TESTDIR := test_files/ -CORDIR := correct/ -TESTFILES := $(shell find $(TESTDIR) -type f | sort) +TESTFILES := $(shell find $(TESTDIR) -type f -not -path "*/.* | sort) $(TESTDIR).stdin CORFILES := $(TESTFILES:$(TESTDIR)%=$(CORDIR)%) NAME = tester @@ -33,7 +35,7 @@ $(BONUS) : $(OBJS) $(GNLBONUSOBJS) $(CC) $(CFLAGS) $^ -o $@ $(OBJS) : $(OBJDIR)%.o : $(SRCDIR)%.c | $(OBJDIR) - $(CC) $(CFLAGS) -c $< -o $@ -I$(INCLUDE) + $(CC) $(CFLAGS) -c $< -o $@ -I$(INCLUDE) -DTEST_DIR=\"$(TESTDIR)\" -DRESULT_DIR=\"$(RESDIR)\" $(GNLOBJS) $(GNLBONUSOBJS) : $(OBJDIR)%.o : $(GNLDIR)%.c | $(OBJDIR) ifndef BUFFER_SIZE @@ -54,6 +56,7 @@ clean : fclean : clean $(RM) $(NAME) $(BONUS) + $(RM) $(CORDIR)* $(RESDIR)* re : fclean $(MAKE) diff --git a/src/main.c b/src/main.c index b0ba366..83efee3 100644 --- a/src/main.c +++ b/src/main.c @@ -6,7 +6,7 @@ /* By: ljiriste +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/10/12 14:52:24 by ljiriste #+# #+# */ -/* Updated: 2023/10/26 15:53:28 by ljiriste ### ########.fr */ +/* Updated: 2023/10/27 11:30:50 by ljiriste ### ########.fr */ /* */ /* ************************************************************************** */ @@ -40,6 +40,11 @@ int *open_all(const int count, char *const *fname) return (fds); while (i < count) { + if (fname[i][0] == '-' && fname[i][1] == '\0') + { + fds[i++] = 0; + continue ; + } tmp = ft_strdup(TEST_DIR); path = ft_strjoin(tmp, fname[i]); fds[i++] = open(path, O_RDONLY); @@ -52,7 +57,11 @@ int *open_all(const int count, char *const *fname) void close_all(int count, int *fds) { while (count > 0) - close(fds[--count]); + { + if (fds[--count] == 0) + continue ; + close(fds[count]); + } free(fds); return ; } diff --git a/test b/test index d48adbc..9d7aa88 100755 --- a/test +++ b/test @@ -5,14 +5,14 @@ m=0 for arg in "$@" do - if [ $arg == 'a' ] + if [ "$arg" == 'a' ] then b=1 m=1 - elif [ $arg == 'b' ] + elif [ "$arg" == 'b' ] then b=1 - elif [ $arg == 'm' ] + elif [ "$arg" == 'm' ] then m=1 fi @@ -48,25 +48,40 @@ then fi printf "\033[32mCompilation successful\n\033[0m" - make --silent all_tests SEP=$SEP + make --silent all_tests SEP="$SEP" wait + valgrind --quiet --leak-check=full --log-file='tmp' ./tester - /dev/null + wait + if $(cmp -s ./correct/- ./results/-) + then + printf "\033[32m" + printf "stdin: OK\n" + printf "$( /dev/null + valgrind --quiet --leak-check=full --log-file='tmp' ./tester "$file" > /dev/null wait - if $(cmp -s ./correct/$file ./results/$file) - then - printf "\033[32m" - printf "$file: OK\n" - printf "$( /dev/null + valgrind --quiet --leak-check=full --log-file='tmp' ./tester "$file" > /dev/null wait - if $(cmp -s ./correct/$file ./results/$file) + if $(cmp -s ./correct/"$file" ./results/"$file") then printf "\033[32m" printf "$file: OK\n" @@ -87,7 +102,7 @@ then printf "\033[31m" printf "$file: KO\n" printf "diff -y ./correct/$file ./results/$file\n" - printf "$(diff -y ./correct/$file ./results/$file)\n" + printf "$(diff -y ./correct/"$file" ./results/"$file")\n" printf "$(