Domanda

Come posso implementare un semplice framework di test di regressione con Make? (Sto usando GNU Make, se questo è importante.)

Il mio Makefile attuale assomiglia a questo (modificato per semplicità):

OBJS = jscheme.o utility.o model.o read.o eval.o print.o

%.o : %.c jscheme.h
    gcc -c -o $@ $<

jscheme : $(OBJS)
    gcc -o $@ $(OBJS)

.PHONY : clean

clean :
    -rm -f jscheme $(OBJS)

Vorrei fare una serie di test di regressione, per esempio, expr.in Testare un'espressione "buona" e unrecognized.in testarne uno "cattivo", con expr.cmp & unrecognized.cmp essere l'output previsto per ciascuno. I test manuali sarebbero così:

$ 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

Ho pensato di aggiungere una serie di regole al makefile che sembra qualcosa del genere:

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]

Le mie domande:
• Cosa ho messo nei segnaposto [qualcosa]?
• Esiste un modo per sostituire il messaggio da diff con un messaggio che dice: "Test expr fallito "?

Nessuna soluzione corretta

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top