¿Cómo puedo implementar un marco de prueba de regresión simple con Make? (Estoy usando GNU Make, si lo que importa.)Implementando `make check` o` make test`
Mi makefile actual se ve algo como esto (editado por simplicidad):
OBJS = jscheme.o utility.o model.o read.o eval.o print.o
%.o : %.c jscheme.h
gcc -c -o [email protected] $<
jscheme : $(OBJS)
gcc -o [email protected] $(OBJS)
.PHONY : clean
clean :
-rm -f jscheme $(OBJS)
me gustaría tener un conjunto de pruebas de regresión, p.ej, expr.in
probando una expresión "buena" & unrecognized.in
probando una "mala", con expr.cmp
& unrecognized.cmp
siendo el resultado esperado para cada una. Las pruebas manuales se vería así:
$ jscheme <expr.in> expr.out 2>&1
$ jscheme <unrecognized.in> unrecognized.out 2>&1
$ diff -q expr.out expr.cmp # identical
$ diff -q unrecognized.out unrecognized.cmp
Files unrecognized.out and unrecognized.cmp differ
pensé para añadir un conjunto de reglas para el makefile buscando algo como esto:
TESTS = expr.test unrecognized.test
.PHONY test $(TESTS)
test : $(TESTS)
%.test : jscheme %.in %.cmp
jscheme <[something.in]> [something.out] 2>&1
diff -q [something.out] [something.cmp]
Mis preguntas:
• ¿Qué debo poner en el [ algo] marcadores de posición?
• ¿Hay alguna manera de reemplazar el mensaje de diff
con un mensaje que dice "Falló la prueba expr
"?
¿De dónde provienen todos los tempfiles? ¿Qué hay de malo en – reinierpost
@reinierpost? Si tiene una mejor forma de hacer estas comparaciones, de todos modos publique una respuesta que los incluya; eso es exactamente el tipo de ayuda que estoy pidiendo. –
Lo siento, pensé que había cancelado esa pregunta. Necesitas tempfiles. – reinierpost