Jak mogę zaimplementować proste ramy testowe regresji za pomocą Make? (Używam GNU make, jeśli to ma znaczenie).Implementacja `make check` lub` make test`
Mój obecny makefile wygląda mniej więcej tak (wydanej dla uproszczenia):
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)
chciałbym mieć zestaw testów regresji, na przykład, expr.in
testowania „dobre” wyraz & unrecognized.in
Testowanie „zły” jeden z expr.cmp
& unrecognized.cmp
jest oczekiwany wynik dla każdego. Testy instrukcja będzie wyglądać następująco:
$ 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
myślałem, aby dodać zestaw reguł do makefile szuka coś takiego:
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]
Moje pytania:
• Co mogę umieścić w [ coś] placeholders?
• Czy istnieje sposób na zastąpienie wiadomości od diff
z komunikatem "Test expr
nie powiodło się"?
Skąd pochodzą wszystkie pliki tymczasowe? Co jest nie tak z – reinierpost
@reinierpost: Jeśli masz lepszy sposób na dokonywanie porównań, to z całą pewnością opublikuj odpowiedź, która je zawiera - to jest dokładnie taka pomoc, o jaką pytam. –
Przepraszam, myślałem, że anulowałem to pytanie. Potrzebujesz plików tymczasowych. – reinierpost