リファクタリング
[autotest_mk.git] / template / Group.mk
1 # autotest.mk > template > Group.mk
2 # テストグループのMakefile
3 #
4 # オペレーター
5 # make         : すべてのテストを実施し、ログファイルを作成
6 # make check   : ↓
7 # make create  : TESTNAMEで指定されたテストを新規に作成
8 # make set     : すべてのテストの、想定結果を出力
9 # make checkeach: すべてのテストを実施
10 # make report  : ログファイルから、テストの結果をレポート
11 # make clean   : すべてのテストで、"make" で生成されたファイルをクリア
12 # make cleanall: すべてのテストで、"make" と "make set" で生成されたファイルをクリア
13
14 include Define.mk
15
16 .PHONY: check create set checkeach report clean cleanall
17
18 check: checkeach report
19
20 create:
21 ifndef TEST
22         @echo "no test created. set TEST."
23 else
24         @mkdir $(TEST)
25         @for ifile in $(DEF_FILE) $(TEST_MAKEFILE); do echo "include ../$$ifile" >>$(TEST)/Makefile; done
26 endif
27
28 set:
29         @for target in $(TESTS); do $(MAKE) set -C $$target; done
30
31 checkeach:
32         @rm -f $(GROUP_LOG_FILE)
33         @for target in $(TESTS); do $(MAKE) check -C $$target; done
34
35 $(GROUP_LOG_FILE):
36         @for target in $(TESTS); do cat <$$target/$(LOG_FILE) >>$@ || echo $$target ": no log." >>$@; done
37
38 report: $(GROUP_LOG_FILE)
39         @echo "$(GROUP): $(SUCCESS_TEST) / $(ALL_TEST) tests passed. Details in `pwd`/$(GROUP_LOG_FILE)"; \
40          if test $(FAIL_TEST) -eq 0; then echo "$(GROUP): All tests are succeded."; fi
41
42 clean:
43         @for target in $(TESTS); do $(MAKE) clean -C $$target; done
44         @rm -f $(GROUP_LOG_FILE)
45
46 cleanall:
47         @for target in $(TESTS); do $(MAKE) cleanall -C $$target; done
48         @rm -f $(GROUP_LOG_FILE)