如何使用 Make 实现一个简单的回归测试框架?(如果这很重要,我正在使用 GNU Make。)
我当前的 makefile 看起来像这样(为简单起见进行了编辑):
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)
我想要一组回归测试,例如,expr.in
测试一个“好”的表达式并unrecognized.in
测试一个“坏”的表达式,其中expr.cmp
&unrecognized.cmp
是每个表达式的预期输出。手动测试如下所示:
$ 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
我想在生成文件中添加一组规则,如下所示:
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]
我的问题:
• 我在 [something] 占位符中放了什么?
• 有没有办法用diff
“测试expr
失败”的消息替换消息?