ユニットテストを修正
[YACASL2.git] / test / unit / TEST.mk
1 # テストのテンプレート
2 # make         : CMDで設定されたコマンドを実行した出力結果を1.txtに出力し、0.txtと比較し、レポート
3 # make check   : ↓
4 # make prepare : CMDで設定されたコマンドを実行した出力結果を0.txt(テストの想定結果)に出力
5 # make clean   : 「make」で生成されたファイルをクリア
6 # make cleanall: 「make」と「make clean」で生成されたファイルをクリア
7 LOGFILE = ../TEST.log
8 ERRFILE = err.txt
9 UNITNAME = `pwd | xargs basename`
10
11 INCLUDE = ../../../include
12 CC = gcc
13 CFLAGS = -g -Wall -I $(INCLUDE)
14 SRCDIR = ../../../src
15 COMMONSRC = $(SRCDIR)/struct.o $(SRCDIR)/hash.o $(SRCDIR)/cmd.o $(SRCDIR)/cerr.o $(SRCDIR)/dump.o
16 ASSRC = $(SRCDIR)/assemble.o $(SRCDIR)/token.o $(SRCDIR)/label.o $(SRCDIR)/macro.o
17 EXECSRC = $(SRCDIR)/exec.o
18
19 ifeq "$(UCLASS)" "AS"
20   SRC = $(COMMONSRC) $(ASSRC)
21 endif
22 ifeq "$(UCLASS)" "EXEC"
23   SRC = $(COMMONSRC) $(EXECSRC)
24 endif
25 ifeq "$(UCLASS)" "COMMON"
26   SRC = $(COMMONSRC)
27 endif
28
29 .PHPNY: check prepare clean cleanall
30 check: clean report.txt
31 prepare: cleanall 0.txt
32 clean:
33         @rm -f a.out 1.txt diff.txt report.txt
34 cleanall: clean
35         @rm -f 0.txt
36 a.out: $(SRC) $(TESTSRCFILE)
37         @gcc $(CFLAGS) $(SRC) $(TESTSRCFILE)
38 $(SRCDIR)/%.o: $(SRCDIR)/%.c
39         @$(CC) -c $(CFLAGS) $<
40 0.txt 1.txt: a.out
41         @./a.out >$@ 2>&1
42 diff.txt: 1.txt
43         @-diff 0.txt 1.txt >$@ 2>&1
44 report.txt: diff.txt
45         @echo -n "$(UNITNAME): Test " >$@; \
46      if test ! -s $^; then echo -n "Success " >>$@; rm -f $^; else echo -n "Failure " >>$@; fi; \
47      echo `date +"%F %T"` >>$@