mirror of
https://codeberg.org/la-chouette/minishell.git
synced 2025-12-06 07:28:09 +01:00
tests: add infrastructure for writing tests in C
This commit is contained in:
parent
e022ca0ce7
commit
60d9b212fb
4 changed files with 92 additions and 0 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
|
@ -19,6 +19,7 @@ test
|
||||||
minishell
|
minishell
|
||||||
testexec.sh
|
testexec.sh
|
||||||
tests/*
|
tests/*
|
||||||
|
!tests/Makefile
|
||||||
!tests/*.c
|
!tests/*.c
|
||||||
!tests/*.h
|
!tests/*.h
|
||||||
infile
|
infile
|
||||||
|
|
|
||||||
11
Makefile
11
Makefile
|
|
@ -13,6 +13,7 @@ export CFLAGS
|
||||||
srcs = \
|
srcs = \
|
||||||
|
|
||||||
objs = $(srcs:.c=.o)
|
objs = $(srcs:.c=.o)
|
||||||
|
export objs
|
||||||
minishell_objs = $(addsuffix .o,src/$(NAME)) $(objs)
|
minishell_objs = $(addsuffix .o,src/$(NAME)) $(objs)
|
||||||
all_objs = $(minishell_objs)
|
all_objs = $(minishell_objs)
|
||||||
deps = $(all_objs:.o=.d)
|
deps = $(all_objs:.o=.d)
|
||||||
|
|
@ -36,6 +37,7 @@ clean:
|
||||||
|
|
||||||
fclean: clean
|
fclean: clean
|
||||||
rm -f $(NAME)
|
rm -f $(NAME)
|
||||||
|
+make -C tests fclean
|
||||||
|
|
||||||
re:
|
re:
|
||||||
+make fclean
|
+make fclean
|
||||||
|
|
@ -45,10 +47,19 @@ norm:
|
||||||
norminette src | grep -v OK || true
|
norminette src | grep -v OK || true
|
||||||
|
|
||||||
tests:
|
tests:
|
||||||
|
@echo "Running tests with AddressSanitizer..."
|
||||||
+CFLAGS="$(CFLAGS) $(ASAN)" make re
|
+CFLAGS="$(CFLAGS) $(ASAN)" make re
|
||||||
shellspec
|
shellspec
|
||||||
|
+CFLAGS="$(CFLAGS) $(ASAN)" make -C tests
|
||||||
|
|
||||||
|
@echo "Running tests with UndefinedBehaviourSanitizer..."
|
||||||
+CFLAGS="$(CFLAGS) $(UBSAN)" make re
|
+CFLAGS="$(CFLAGS) $(UBSAN)" make re
|
||||||
shellspec
|
shellspec
|
||||||
|
+CFLAGS="$(CFLAGS) $(UBTSAN)" make -C tests
|
||||||
|
|
||||||
|
@echo "Running tests with ThreadSanitizer..."
|
||||||
+CFLAGS="$(CFLAGS) $(TSAN)" make re
|
+CFLAGS="$(CFLAGS) $(TSAN)" make re
|
||||||
shellspec
|
shellspec
|
||||||
|
+CFLAGS="$(CFLAGS) $(TSAN)" make -C tests
|
||||||
|
|
||||||
@echo "All tests passed!"
|
@echo "All tests passed!"
|
||||||
|
|
|
||||||
21
tests/Makefile
Normal file
21
tests/Makefile
Normal file
|
|
@ -0,0 +1,21 @@
|
||||||
|
rawtests = \
|
||||||
|
metacharacters \
|
||||||
|
|
||||||
|
tests = $(addprefix test_,$(rawtests))
|
||||||
|
test_objs = $(addsuffix .o,$(tests))
|
||||||
|
objs := $(addprefix ../,$(objs))
|
||||||
|
|
||||||
|
.PHONY: run
|
||||||
|
|
||||||
|
%.o: %.c
|
||||||
|
$(CC) -c $(CFLAGS) $(LDFLAGS) -o $*.o $*.c
|
||||||
|
$(CC) -MM $(CFLAGS) $(LDFLAGS) $*.c > $*.d
|
||||||
|
|
||||||
|
test_%: %.o $(objs)
|
||||||
|
$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $*.o $(objs) $(LDLIBS)
|
||||||
|
|
||||||
|
run: $(tests)
|
||||||
|
$(addprefix ./,$(addsuffix &&,$(tests))) echo "Finished running C tests"
|
||||||
|
|
||||||
|
fclean:
|
||||||
|
rm -f $(tests)
|
||||||
59
tests/metacharacters.c
Normal file
59
tests/metacharacters.c
Normal file
|
|
@ -0,0 +1,59 @@
|
||||||
|
/* ************************************************************************** */
|
||||||
|
/* */
|
||||||
|
/* ::: :::::::: */
|
||||||
|
/* metacharacters.c :+: :+: :+: */
|
||||||
|
/* +:+ +:+ +:+ */
|
||||||
|
/* By: kcolin <marvin@42.fr> +#+ +:+ +#+ */
|
||||||
|
/* +#+#+#+#+#+ +#+ */
|
||||||
|
/* Created: 2025/02/06 15:21:00 by kcolin #+# #+# */
|
||||||
|
/* Updated: 2025/02/06 15:57:40 by kcolin ### ########.fr */
|
||||||
|
/* */
|
||||||
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
#include "../src/parser/matchers/metacharacter.h"
|
||||||
|
#include <assert.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
|
||||||
|
void test_metacharacters(void)
|
||||||
|
{
|
||||||
|
dup2(STDERR_FILENO, STDIN_FILENO);
|
||||||
|
char c = 'a';
|
||||||
|
printf("not metachar:");
|
||||||
|
while (c != 'z')
|
||||||
|
{
|
||||||
|
printf("%c", c);
|
||||||
|
assert(!is_metacharacter(c));
|
||||||
|
c++;
|
||||||
|
}
|
||||||
|
c = 'A';
|
||||||
|
while (c != 'Z')
|
||||||
|
{
|
||||||
|
printf("%c", c);
|
||||||
|
assert(!is_metacharacter(c));
|
||||||
|
c++;
|
||||||
|
}
|
||||||
|
c = '0';
|
||||||
|
while (c != '9')
|
||||||
|
{
|
||||||
|
printf("%c", c);
|
||||||
|
assert(!is_metacharacter(c));
|
||||||
|
c++;
|
||||||
|
}
|
||||||
|
char *metachars = " \t\n|&;()<>";
|
||||||
|
int i = 0;
|
||||||
|
printf("\nmetachar:");
|
||||||
|
while (metachars[i] != '\0')
|
||||||
|
{
|
||||||
|
printf("%c", metachars[i]);
|
||||||
|
assert(is_metacharacter(metachars[i]));
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
printf("\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
test_metacharacters();
|
||||||
|
return (0);
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue