テスト用のMakefileを整理
[YACASL2.git] / test / TEST.mk
1 # テストのテンプレート
2 # 次の変数を定義する
3 #    CMD: 実行するコマンド
4 #    MAINTARGET_OVERRIDE: メインターゲットを独自に定義し、オーバーライドする
5 # make         : CMDで設定されたコマンドを実行した出力結果を1.txtに出力し、0.txtと比較し、レポート
6 # make check   : ↓
7 # make prepare : CMDで設定されたコマンドを実行した出力結果を0.txt(テストの想定結果)に出力
8 # make clean   : 「make」で生成されたファイルをクリア
9 # make cleanall: 「make」と「make prepare」で生成されたファイルをクリア
10 UNITNAME = `pwd | xargs basename`
11 DATE = `date +"%F %T"`
12 ERR_FILE = err.txt
13 DIFF_FILE = diff.txt
14 REPORT_FILE = report.txt
15 TEST0_FILE = 0.txt
16 TEST1_FILE = 1.txt
17
18 .PHONY: check prepare clean cleanall
19
20 check: clean $(REPORT_FILE)
21
22 prepare: cleanall $(TEST0_FILE)
23
24 clean:
25         @rm -f $(TEST1_FILE) $(DIFF_FILE) $(REPORT_FILE) $(ERR_FILE)
26
27 cleanall: clean
28         @rm -f $(TEST0_FILE)
29
30 ifndef MAINTARGET_OVERRIDE
31 $(TEST0_FILE) $(TEST1_FILE):
32         @echo $(CMD) >$@; \
33      $(CMD) >>$@ 2>$(ERR_FILE); \
34      if test -s $(ERR_FILE); then cat $(ERR_FILE) >>$@; else rm -f $(ERR_FILE); fi
35 endif
36
37 $(DIFF_FILE): $(TEST1_FILE)
38         @-diff -c $(TEST0_FILE) $(TEST1_FILE) >$@ 2>&1
39
40 $(REPORT_FILE): $(DIFF_FILE)
41         @if test ! -s $^; then echo "$(UNITNAME): Test Success $(DATE)" >>$@; rm -f $^; else echo "$(UNITNAME): Test Failure $(DATE)" >>$@; fi;